35
VỆ Ô Ệ Ô V UYỀ Ô BÁO CÁO hực tập chuyên ngành ĐỀ TÀI: ghiên cứu giải pháp mở rộng của kiến trúc client-server: iến trúc proxy ngược iáo viên hướng dẫn: TS. Hà Quốc Trung Sinh viên thực hiện: Nguyễn Khánh Hưng 20081279 TTM-K53 5/2012

Cau hinh Reverse Proxy

Embed Size (px)

DESCRIPTION

Reverse Proxy

Citation preview

Page 1: Cau hinh Reverse Proxy

V Ệ Ô Ệ Ô V UYỀ Ô

BÁO CÁO

hực tập chuyên ngành

ĐỀ TÀI:

ghiên cứu giải pháp mở rộng của kiến trúc client-server:

iến trúc proxy ngược

iáo viên hướng dẫn: TS. Hà Quốc Trung

Sinh viên thực hiện:

Nguyễn Khánh Hưng 20081279 TTM-K53

5/2012

Page 2: Cau hinh Reverse Proxy

2

L I GIỚI THIỆU ..................................................................................................... 3

I. Giới thiệu chung về kiến trúc client-server ................................................... 4

1. Giới thiệu chung ............................................................................................... 4

2. Cấu trúc vật lý .................................................................................................. 4

3. Các kiến trúc Client/Server .............................................................................. 5

4. Nguyên tắc hoạt động của kiến trúc Client/Server ........................................... 7

5. Ưu nhược điểm của kiến trúc Client/Server ..................................................... 7

5.1. Ưu điểm .................................................................................................. 7

5.2. Nhược điểm ............................................................................................ 8

II. Kiến trúc proxy ................................................................................................ 8

1. Giới thiệu chung về proxy ................................................................................ 8

2. Forward proxy .................................................................................................. 9

2.1. Chức năng của Forward proxy ............................................................. 10

2.2. Ý nghĩa của Forward proxy.................................................................. 10

III. Kiến trúc reverse proxy ............................................................................ 12

1. Giới thiệu về Reverse proxy ........................................................................... 12

2. Reverse proxy bảo vệ ..................................................................................... 13

3. Reverse proxy tích hợp ................................................................................... 20

IV. ẶT THỰC NGHIỆM ..................................................................... 26

1. Môi trường công cụ ........................................................................................ 26

2. Xây dựng mô hình mạng ................................................................................ 26

3. Cấu hình reverse proxy................................................................................... 28

V. KẾT LUẬN ..................................................................................................... 34

TÀI LIỆU THAM KHẢO ...................................................................................... 35

Page 3: Cau hinh Reverse Proxy

3

L I GIỚI THIỆU

Thế kỷ 21 được mệnh danh là thế kỷ của công nghệ thông tin, với sự bùng nổ

mạnh mẽ về khoa học công nghệ. Đây là kỷ nguyên của nền văn minh dựa trên cơ

sở công nghiệp trí tuệ. Ngày nay, tin học đã trở thành một môn khoa học quan trọng

trên thế giới.

Sự phát triển mạnh mẽ như vậy thì vấn đề quản lý nguồn tài nguyên “công

nghệ” đặt ra cho người sử dụng là một vấn đề cấp thiết hiện nay. Một trong số đó là

vấn đề đảm bảo an toàn cho hệ thống server cũng như những giải pháp giúp mô

hình client/server làm việc hiệu quả hơn, an toàn hơn. Kiến trúc reverse proxy được

đề xuất đã giải quyết được đòi hỏi đó. Reverse proxy đảm bảo an toàn cho server,

giúp cân bằng tải, lọc những yêu cầu có hại,… Chính vì lý do này mà tôi đã chọn đề

tài “ ghiên cứu giải pháp mở rộng của kiến trúc client-server: iến trúc proxy

ngược” để hiểu rõ hơn về kiến trúc này.

Do thời gian có hạn nên không thể tránh khỏi những sai sót, mong thầy góp ý

để tôi hoành chỉnh đề tài này.

Page 4: Cau hinh Reverse Proxy

4

I. iới thiệu chung về kiến trúc client-server

1. iới thiệu chung

Mô hình được phổ biến nhất và được chấp nhận rộng rãi trong hệ thống phân

tán là mô hình client/server. Trong mô hình này sẽ có một tập các tiến trình mà mỗi

tiến trình đóng vai trò như là một trình quản lý tài nguyên cho trước và một tập các

tiến trình client trong đó mỗi tiến trình thực hiện một tác vụ nào đó cần truy xuất tới

tài nguyên phần cứng hoặc phần mềm dùng chung. Bản thân các trình quản lý tài

nguyên cần phải truy xuất tới các tài nguyên dùng chung được quản lý bởi các tiến

trình khác, vì vậy một số tiến trình vừa là tiến trình client vừa là tiến trình server.

Các tiến trình phát ra các yêu cầu tới server bất kỳ khi nào chúng cần truy xuất tới

một trong các tài nguyên của các server. Nếu yêu cầu là đúng đắn thì server sẽ thực

hiện hành động được yêu cầu và gửi một đáp ứng tới tiến trình client.

Mô hình client/server cung cấp một cách tiếp cận tổng quát để chia sẻ tài

nguyên trong các hệ thống phân tán. Mô hình này có thể cài đặt bằng rất nhiều môi

trường phần cứng và phần mềm khác nhau. Các máy tính được sử dụng để chạy các

tiến trình client/server có nhiều kiểu khác nhau và không cần thiết phải phân biệt

giữa chúng; cả tiến trình client và tiến trình server đều có thể chạy trên cùng một

máy tính. Một tiến trình server có thể sử dụng dịch vụ của một server khác.

2. ấu trúc vật lý

Yếu tố cơ bản trong mô hình client/server là trong hệ thống phải có các máy

tính kết nối chung với nhau sử dụng một giao thức bất kỳ nhằm mục đích sử dụng

các tài nguyên, dữ liệu của nhau.

Máy chủ(Server)

Trước những năm 1990, các máy tính lớn (main frame) được sử dụng làm

server, hiện nay các máy tính cá nhân vẫn được sử dụng như là một server. Vì cùng

một lúc sẽ có nhiều người truy xuất về server thông qua client do đó server phải có

bộ vi xử lý tốc độ cao (CPU), tài nguyên lớn (RAM, Hardisk) để hoạt động tốt.

Trong hệ thống mạng, có thể có nhiều server có chức năng độc lập nhau.

Máy khách(Client)

Các máy trạm truy xuất các tài nguyên đã được chia sẻ trên mạng như các dữ

liệu dùng chung trên máy chủ và in ấn các tài liệu trên máy in dùng chung.

Dây cáp mạng ( able)

Hệ thống dây kim loại hoặc quang học nối kết vậy lý các máy tính, máy in lại

với nhau.

Dữ liệu chung (Shared data)

Page 5: Cau hinh Reverse Proxy

5

Các tập tin, thư mục mà người sử dụng có thể truy xuất trên server thông qua

các client và dây cáp mạng.

3. ác kiến trúc lient/Server

3.1. Client/Server hai tầng

ình 1: Mô hình Cl ent/Server ha tầng

Kiến trúc client/server đơn giản nhất là kiến trúc hai tầng. Trong thực tế hầu

hết các kiến trúc client/server là kiến trúc hai tầng. Một ứng dụng hai tầng cung cấp

nhiều trạm làm việc với một tầng trình diễn thống nhất, tầng này truyền tiin với tầng

dữ liệu tập trung. Tầng trình diễn thông thường là client, và tầng lưu trữ dữ liệu là

server.

Hầu hết các ứng dụng intetnet như email, telnet, ftp thậm chí cả Web là các

ứng dụng hai tầng. Phần lớn các lập trình viên trình ứng dụng viết các ứng dụng

client/server có xu thế sử dụng kiến trúc này.

Trong ứng dụng hai tầng truyền thống, khối lượng công việc xử lý được dành

cho phía client trong khi server chỉ đóng vai trò như là chương trình kiểm soát

luồng vào ra giữa ứng dụng và dữ liệu. Kết quả là không chỉ hiệu năng của ứng

dụng bị giảm đi do tài nguyên hạn chế của PC, mà một khối lượng dữ liệu truyền đi

trên mạng cũng tăng theo. Khi toàn bộ ứng dụng được xử lý trên một PC, ứng dụng

bắt buộc phải yêu cần nhận dữ liệu trước khi đưa ra bất kì kết quản xử lý nào cho

người dùng. Nhiều yêu cầu dữ liệu cũng làm giảm hiệu năng mạng. Một vấn đề

thường gặp khác đối với các ứng dụng hai tầng là vấn đề bảo trì. Chỉ cần một thay

đổi nhỏ đối với ứng dụng cũng cần phải thay đổi lại toàn bộ ứng dụng client và

server.

Page 6: Cau hinh Reverse Proxy

6

3.2. Client/Server ba tầng

Ta có thể tránh được vấn đề với kiến trúc client/server hai tầng bằng cách mở

rộng kiến trúc thành ba tầng. Một kiến trúc ba tầng có thêm một tầng mới tách biệt

việc xử lý dữ liệu ở vị trí trung tâm.

ình 2: Mô hình Cl ent/Server 3 tầng

Theo kiến trúc ba tầng, một ứng dụng được chia thành ba tầng tách biệt về

mặt logic. Tầng đầu tiên là tầng trình diễn thường bao gồm các giao diện đồ họa.

Tầng thứ hai là tầng trung gian hay tầng tác nghiệp. Tầng thứ ba chứa dữ liệu cần

cho ứng dụng. Tầng thứ ba về cơ bản là chương trình thực hiện lời gọi hàm để tìm

kiếm dữ liệu cần thiết. Tầng trình diễn nhận dữ liệu và định dạng nó để hiện thị. Sự

tách biệt giữa chức năng xử lý giao diện đã tạo nên sự linh hoạt cho thiết kế ứng

dụng. Nhiều giao diện người dùng được xây dựng và triển khai mà không làm tha

đổi logic ứng dụng.

Tầng thứ ba chứa dữ liệu cần thiết cho ứng dụng. Dữ liệu này có thể bao

gồm bất kỳ nguồn thông tin nào, bao gồm cơ sở dữ liệu như Oracale, SQL Server

hoặc tài liệu XML.

3.3. Kiến trúc n tầng

Kiến trúc n tầng được chia thành các tầng như sau:

- Tầng giao diện người dùng: quản lý tương tác của người dùng với ứng

dụng.

- Tầng logic trình diễn: Xác định cách thức hiển thị giao diện người dùng và

các yêu cầu của người dùng được quản lý như thế nào.

- Tầng logic tác nghiệp: Mô hình hóa các quy tắc tác nghiệp.

- Tầng các dịch vụ hạ tầng: Cung cấp một chức năng bổ trợ cần thiết cho ứng

dụng như các thành phần(truyền thông điệp, hỗ trợ giao tác).

Page 7: Cau hinh Reverse Proxy

7

4. guyên tắc hoạt động của kiến trúc lient/Server

Mô hình client/server hướng tới việc cung cấp dịch vụ. Quá trình trao đổi dữ

liệu bao gồm:

1. Truyền một yêu cầu từ tiến trình client đến tiến trình server

2. Yêu cầu được server xử lý

3. Truyền đáp ứng cho client

Mô hình truyền tin này liên quan tới việc truyền hai thông điệp và một dạng

đồng bộ hóa cụ thể giữa client và server. Tiến trình server phải nhận thức được

thông điệp yêu cầu ở bước 1 ngay khi nó đến và hành động phát ra yêu cầu trong

client phải được tạm dừng và buộc tiến trình client ở trạng thái chờ cho tới khi nó

nhận được đáp ứng do server gửi về ở bước 3.

Mô hình client/server thường được cài đặt dựa trên các thao tác cở bản là gửi

(send) và nhận (receive).

Quá trình giao tiếp client và server có thể diễn ra theo một tròn hai chế độ: bị

phong tỏa (blocked) và không bị phong tỏa (non-blocked).

- Chế độ bị phong tỏa (blocked):

Trong chế độ bị phong tỏa, khi client hoặc server phát ra lệnh gửi dữ liệu

(send), việc thực thi của tiến trình sẽ bị tạm ngừng cho tới khi tiến trình nhận phát

ra lệnh nhận dữ liệu (receive).

Tương tự đối với tiến trình nhận dữ liệu, nếu tiến trình nào đó (client hoặc

server) phát ra lệnh nhận dữ liệu, mà tại thời điểm đó chưa có dữ liệu gửi tới thì

việc thực thi của tiến trình cũng sẽ bị tạm ngừng cho tới khi có dữ liệu gửi tới.

- Chế độ không bị phong tỏa (non-blocked)

Trong chế độ này, khi tiến trình client hay server phát ra lệnh gửi dữ liệu thực

sự, việc thưc thi của tiến trình vẫn được tiến hành mà không quan tâm đến việc có

tiến trình nào phát ra lệnh nhận dữ liệu đó hay không.

Tương tự cho trường hợp nhận dữ liệu, khi tiến trình phát ra lệnh nhận dữ liêu,

nó sẽ nhận dữ liệu hiện có, việc thực thi của tiến trình vẫn được tiến hành mà không

quan tâm đến việc có tiến trình nào phát ra lệnh gửi dữ liệu tiếp theo hay không.

5. u nhược điểm của kiến trúc lient/Server

5.1. u điểm

- iảm chi phí

Kiến trúc client/server cho phép các công ty có thể sử dụng server là những

máy tính cá nhân thay vì các máy tính lớn. Vì các phần mềm ngày nay được xây

dựng chủ yếu chạy trên các máy tính cá nhân do đó chi phí các phần mềm tương đối

rẻ.

Page 8: Cau hinh Reverse Proxy

8

- ốc độ nhanh

Giảm việc tắc nghẽn thông tin trong hệ thống mạng do phân chia các xử lý ra

thành 2 nhánh. Các xử lý nào phức tạp tác động nhiều lên cơ sở dữ liệu sẽ được lưu

trữ ngay trên server, các xử lý đơn giản sẽ được thực hiện ngay trong ứng dụng trên

client. Chính vì thế hệ thống vận hành sẽ hiệu quả hơn.

- ính tương thích cao

Việc chọn lựa các phần mềm để phát triển ứng dụng có thể hoàn toàn độc lập

từ ngôn ngữ lập trình đến hệ cơ sở dữ liệu quan hệ và các thiết bị phần cứng. Ta có

thể chọn các thành phần tối ưu nhất khi xây dựng một hệ thống ứng dụng.

5.2. hược điểm

- Một trong những vấn đề nảy sinh trong mô hình này đó là tính an toàn và bảo

mật thông tin trên mạng. Do phải trao đổi dữ liệu giữa 2 máy ở 2 khu vực khác

nhau cho nên dễ dàng xảy ra hiện tượng thông tin truyền trên mạng bị lộ.

- Dễ dàng lợi dụng các lỗ hổng bảo mật của server.

- Vấn đề cân bằng tải trong mô hình nhiều server.

- Hỏng địa chỉ URL khi server thay đổi.

- Gặp vẫn đề nghẽn cổ chai khi truyền dữ liệu giữa client và server.

Để giải quyết những nhược điểm của kiến trúc client/server, kiến trúc proxy

ngược là một cách giải quyết khá hiệu quả.

II. iến trúc proxy

1. iới thiệu chung về proxy

Trong mạng máy tính, một máy chủ proxy là một máy chủ (một hệ thống máy

tính hay một ứng dụng) đứng giữa server và client, tham gia vào cuộc trò chuyện

giữa hai bên. Một client kết nối đến máy chủ proxy, yêu cầu một số dịch vụ như

một tập tin, kết nối, trang web, hoặc tài nguyên sẵn có từ một máy chủ khác. Các

máy chủ proxy đánh giá các yêu cầu như một cách đơn giản hóa và kiểm soát phức

tạp của họ. Ngày nay, hầu hết các proxy là web proxy, tạo điều kiện thuận lợi cho

việc truy cập nội dung trên World Wide Web.

Máy chủ proxy ngày càng được sử dụng rộng rãi cho nhiều mục đích, bao gồm:

Giữ máy tính ẩn danh khi truy cập Internet, nghĩa là máy tính được an

toàn.

Tăng tốc độ truy cập tới tài nguyên trên Internet bằng việc sử dụng bộ

đệm proxy.

Để chặn các trạng web không mong muốn hay để truy cập vào các trạng

web bị cấm, lọc bởi công ty, tổ chức của bạn.

Page 9: Cau hinh Reverse Proxy

9

Kiểm soát và bảo vệ quyền truy cập vào một máy chủ trên một mạng riêng

Giúp cân bằng tải, giải mã, chứng thực hoặc bộ nhớ đệm.

Các loại proxy:

Forward proxy: đứng giữa một client và tất cả các server mà client

truy cập đến.

Reverse proxy (proxy ngược): đứng giữa một server và tất cả client

mà server phục vụ.

2. Forward proxy

Proxy là một Internet server đứng giữa một client và tất cả các server mà client

đó muốn truy cập đến, làm nhiệm vụ chuyển tiếp thông tin và kiểm soát tạo sự an

toàn cho việc truy cập Internet của các client, còn gọi là khách hàng sử dụng dịch

vụ internet. Trạm cài đặt proxy gọi là proxy server. Proxy hay trạm cài đặt proxy có

địa chỉ IP và một cổng truy cập cố định. Ví dụ: 123.234.111.222:80. Địa chỉ IP của

proxy trong ví dụ là 123.234.111.222 và cổng truy cập là 80.

Hình 4: Mô hình Forward proxy

Hình 3: Mô hình proxy 1

Page 10: Cau hinh Reverse Proxy

10

2.1. hức năng của Forward proxy

Một số hãng và công ty sử dụng proxy với mục đích: Giúp nhiều máy tính truy

cập Internet thông qua một máy tính với tài khoản truy cập nhất định, máy tính này

được gọi là Proxy server. Chỉ duy nhất máy Proxy này cần modem và account truy

cập internet, các máy client (các máy trực thuộc) muốn truy cập internet qua máy

này chỉ cần nối mạng LAN tới máy Proxy và truy cập địa chỉ yêu cầu. Những yêu

cầu của người sử dụng sẽ qua trung gian proxy server thay thế cho server thật sự mà

người sử dụng cần giao tiếp, tại điểm trung gian này công ty kiểm soát được mọi

giao tiếp từ trong công ty ra ngoài internet và từ internet vào máy của công ty. Sử

dụng Proxy, công ty có thể cấm nhân viên truy cập những địa chỉ web không cho

phép, cải thiện tốc độ truy cập nhờ sự lưu trữ cục bộ các trang web trong bộ nhớ của

proxy server và giấu định danh địa chỉ của mạng nội bộ gây khó khăn cho việc thâm

nhập từ bên ngoài vào các máy của công ty.

Đối với các nhà cung cấp dịch vụ đường truyền internet: Do internet có nhiều

lượng thông tin mà theo quan điểm của từng quốc gia, từng chủng tộc hay địa

phương mà các nhà cung cấp dịch vụ internet khu vực đó sẽ phối hợp sử dụng

proxy với kỹ thuật tường lửa để tạo ra một bộ lọc gọi là firewall proxy nhằm ngăn

chặn các thông tin độc hại hoặc trái thuần phong mỹ tục đối với quốc gia, chủng tộc

hay địa phương đó. Địa chỉ các website mà khách hàng yêu cầu truy cập sẽ được lọc

tại bộ lọc này, nếu địa chỉ không bị cấm thì yêu cầu của khách hàng tiếp tục được

gửi đi, tới các DNS server của các nhà cung cấp dịch vụ. Firewall proxy sẽ lọc tất cả

các thông tin từ internet gửi vào máy của khách hàng và ngược lại.

2.2. Ý nghĩa của Forward proxy

Proxy không chỉ có giá trị bởi nó làm được nhiệm vụ của một bộ lọc thông tin,

nó còn tạo ra được sự an toàn cho các khách hàng của nó, firewal Proxy ngăn chặn

hiệu quả sự xâm nhập của các đối tượng không mong muốn vào máy của khách

hàng. Proxy lưu trữ được các thông tin mà khách hàng cần trong bộ nhớ, do đó làm

giảm thời gian truy tìm làm cho việc sử dụng băng thông hiệu quả.

Proxy server giống như một vệ sĩ bảo vệ khỏi những rắc rối trên Internet. Một

Proxy server thường nằm bên trong tường lửa, giữa trình duyệt web và server thật,

làm chức năng tạm giữ những yêu cầu Internet của các máy khách để chúng không

giao tiếp trực tiếp Internet. Người dùng sẽ không truy cập được những trang web

không cho phép (bị cấm).

Mọi yêu cầu của máy khách phải qua Proxy server, nếu địa chỉ IP có trên

proxy, nghĩa là website này được lưu trữ cục bộ, trang này sẽ được truy cập mà

không cần phải kết nối Internet, nếu không có trên Proxy server và trang này không

Page 11: Cau hinh Reverse Proxy

11

bị cấm, yêu cầu sẽ được chuyển đến server thật, DNS server... và ra Internet. Proxy

server lưu trữ cục bộ các trang web thường truy cập nhất trong bộ đệm để giảm chi

phí kết nối, giúp tốc độ duyệt web nhanh hơn.

Proxy server bảo vệ mạng nội bộ khỏi bị xác định bởi bên ngoài bằng cách

mang lại cho mạng hai định danh: một cho nội bộ, một cho bên ngoài. Điều này tạo

ra một “bí danh” đối với thế giới bên ngoài và gây khó khăn đối với nếu người dùng

“tự tung tự tác” hay các hacker muốn xâm nhập trực tiếp máy tính nào đó.

Page 12: Cau hinh Reverse Proxy

12

III. iến trúc reverse proxy

1. iới thiệu về everse proxy

Một proxy, theo định nghĩa, là một thiết bị đứng giữa server và client, tham

gia vào "cuộc trò chuyện" giữa hai bên. Khái niệm proxy mà chúng ta thường dùng

hàng ngày được gọi là một forward proxy như chúng ta đã trình bày ở trên. Một

reverse proxy làm công việc hoàn toàn ngược lại: nó đứng giữa một server và tất cả

client mà server này phải phục vụ. Reverse proxy giống như một nhà ga kiêm một

trạm kiểm soát, các request từ client, bắt buộc phải ghé vào reverse proxy, tại

reverse proxy sẽ kiểm soát, lọc bỏ các request không hợp lệ, và luân chuyển các

request hợp lệ đến đích cuối cùng là các server. Chú ý là một reverse proxy có thể

luân chuyển request cho nhiều server cùng lúc.

Lợi thế lớn nhất của việc sử dụng reverse proxy là ở khả năng quản lí tập

trung. Một khi đã chuyển tất cả thông tin đi qua một trạm kiểm soát duy nhất (là

reverse proxy), chúng ta có thể áp dụng nhiều biện pháp khác để tăng cường an ninh

cho hệ thống của mình. Ngoài ra áp dụng reverse proxy đúng cách sẽ giúp tăng

cường chất lượng cũng như nâng cao khả năng mở rộng của các ứng dụng web chạy

trên các content server.

Hình 5: Mô hình reverse proxy

Reverse proxy có thể ẩn và che dấu sự tồn tại của server. Khi client từ Internet

muốn truy cập vào webserver của bạn, Reverse proxy server sẽ đóng vai trò là

webserver. Tức là client chỉ được phép giao tiếp với proxy Server mà họ sẽ nghĩ là

giao tiếp với webserver thật sự. Reverse proxy sẽ chuyển tiếp yêu cầu đến

Webserver thật sự và đáp lại theo chiều ngược lại. Như vậy Proxy server sẽ thay thế

Webserver giao tiếp với client kết nối đến.

Tính năng của ứng dụng tường lửa có thể bảo vệ Webserver chống lại các

cuộc tấn công phổ biến trên web. Không có reverse proxy xóa phần mềm độc hại

thì mọi việc trở nên khó khăn hơn.

Các reverse proxy phổ biến nhất thực hiện giao thức truyền siêu văn bản

(HTTP), do đó trong báo cáo chỉ đề cập tới HTTP reverse proxy. Tuy nhiên, các mô

hình cơ bản có thể áp dụng cho bất kỳ giao thức Internet khác, ví dụ FTP.

Page 13: Cau hinh Reverse Proxy

13

Trong báo cáo sẽ đề cập tới hai mô hình reverse proxy. Mô hình reverse proxy

bảo vệ trình bày làm sao để bảo vệ server ở mức độ giao thức ứng dụng trong vành

đai mạng. Một reverse proxy tích hợp cho phép kết hợp các server tại một điểm

chung, do đó ẩn các hệ thống và các host bên trong.

2. everse proxy bảo vệ

Việc đưa một web server hay một ứng dụng server trực tiếp trên Internet cho

phép những kẻ tấn công truy cập trực tiếp tới bất cứ lỗ hổng của server (ứng dụng,

web server, thư viện, hệ điều hành). Tuy nhiên để cung cấp một dịch vụ hữu ích cho

người sử dụng Internet ta có thể sử dụng một bức tường lửa lọc gói tin chắn web

server khỏi các cuộc tấn công trên mạng. Ngoài ra, một reverse proxy bảo vệ có thể

bảo vệ các ứng dụng server ở mức độ của các giao thức ứng dụng.

Ví dụ, chúng ta đang chạy một website sử dụng một phần mềm web server của

một nhà cung cấp phần mềm lớn. Trang web này sử dụng phần mềm độc quyền của

nhà cung cấp đó để cài đặt các nội dung động cho người dùng, chúng ta đã đầu tư

rất nhiều cho phần mềm trong trang web. Máy chủ của chúng ta đã được bảo vệ bởi

một bức tường lửa lọc gói tin.

ình 6: Web server vớ tường lửa bảo vệ

Chúng ta phải mở bức tường lửa này để cho phép truy cập tới cổng công khai

(80) của web server. Các cuộc tấn công từ Internet khai thác các lỗ hổng của phần

mềm web server, gánh nặng của người quản trị là phải cài đặt các bản vá thường

xuyên. Việc chuyển web server sang nhà cung cấp khác là không thể vì vốn đầu tư

cho nền tảng web server, nội dung và các phần mềm mở rộng sở hữu là khá tốn

kém. Hơn nữa, với bất cứ bản vá lỗi mà chúng ta cài đặt, khi chạy có nguy cơ gây

mất ổn định cấu hình dẫn đến hệ thống, phần mềm ngừng hoạt động. Vậy làm thế

Page 14: Cau hinh Reverse Proxy

14

nào để giải quyết vấn đề này để giữ website của chúng ta mà không ảnh hưởng tới

an ninh của nó.

Bất cứ một loại dịch vụ truy cập thông qua Internet hoặc thông qua môi trường

mạng đều có khả năng bị tấn công. Thông thường, các giao thức truy cập được sử

dụng là HTTP và HTTPS.

Ngay cả khi chúng ta cài đặt tường lửa lọc gói tin đơn giản, web server vẫn có

thể bị phá hoại bởi các cuộc tấn công khai thác điểm yếu trong giao thức đã cài đặt.

Làm sao chúng ta có thể bảo vệ cơ sở hạ tầng web server an toàn trước những lỗ

hổng tiềm tàng dễ bị tấn công sử dụng giao thức của nó.

Sử dụng mô hình có tường lửa để bảo vệ web server như hình 6 ta gặp phải

những vấn đề sau:

Tường lửa lọc gói tin không đủ để bảo vệ web server, vì cổng 80 phải được

cung cấp cho truy cập trên Internet.

Các cuộc tấn công thường dùng những thông số yêu cầu kéo dài, hay các

thông số yêu cầu được cài đặt thủ công để khai thác lỗ hổng tràn bộ đệm.

Nâng cấp, củng cố web server có thể vượt quá khả năng của chúng ta.

Việc cài đặt bản vá lỗi giúp tránh việc lợi dụng những lỗ hổng của web server.

Nhưng với mỗi bản vá lỗi, hệ thống có nguy cơ ngừng làm việc. Đôi khi

chúng ta không thể nâng cấp web server kịp thời vì sự tương thích phần cứng,

phần mềm trên web server.

Chuyển sang một mã nguồn phần mềm web server khác là khá đắt tiền, nguy

hiểm và tốn thời gian. Một web server mới có thể có ít lỗ hổng hơn nhưng

chúng ta chưa quen ngay với nó được. Ngoài ra nó yêu cầu phải tương thích

với hệ thống của chúng ta.

Chúng ta không thể biết về những lỗ hổng được phát hiên trong tương lai.

Để giải quyết, chúng ta thay đổi mô hình mạng để sử dụng một reverse proxy

bảo vệ là một lá chắn thực sự bảo vệ web server của chúng ta. Cấu hình reverse

proxy này để lọc tất cả các yêu cầu, chỉ những yêu cầu vô hại sẽ được gửi tới web

server. Hai tường lửa lọc gói tin để ngăn không có truy cập trực tiếp từ mạng bên

ngoài tới web server. Trong mô hình mạng có một khu (DNZ) chỉ chứa reverse

proxy và khu vực server an toàn bao gồm web server.

Page 15: Cau hinh Reverse Proxy

15

ình 7: Mô hình reverse proxy bảo vệ

ác thành phần

Browser

- Phát ra các yêu cầu độc hại tới backend server thông qua tường lửa

và reverse proxy.

- Nhận thông điệp trả lời thông quan reverse proxy và tường lửa.

Outer Firewall: tường lửa phía ngoài

- Bộ lọc lưu lượng mạng đến và cho phép truy cập tới reverse proxy

qua cổng HTTP

- Có thể từ chối kết nối đi từ reverse proxy.

Reverse proxy

- Chấp nhận yêu cầu từ trình duyệt và chuyển tiếp các yêu cầu hợp lệ

tới backend server.

- Truyền lại thông điệp trả lời từ backend server tới trình duyệt gốc.

Inner Firewall: tường lửa nội bộ

- Ngăn cách giữa khu DMZ và server

- Từ chối kết nối gửi đến, ngoại trừ kết nối từ reverse proxy

- Từ chối kết nối gửi đi từ backend server

Backend server: server nằm xa client nhất

- Cung cấp dịch vụ web thực

- Chấp nhận yêu cầu từ reverse proxy và đáp lại yêu cầu.

Page 16: Cau hinh Reverse Proxy

16

ấu trúc

Ngoài ra giải pháp này không chỉ áp dụng cho các web server mà nó còn áp

dụng cho các giao thức khác như ftp, imap, smtp. Một reverse proxy bảo vệ cho ftp,

ví dụ, có thể quyét nội dung tập tin virus hoặc thực thi và ngăn cấm upload các tập

tin như vậy, hoặc nó có thể giới hạn các lệnh ftp có sẵn và ngăn cấm các bên thứ 3

kết nối đến máy chủ dữ liệu, được cho phép theo tiêu chuẩn ftp.

guyên tắc hoạt động

Cơ chế đầu tiên cho thấy làm thế nào để một yêu cầu hợp lệ được kiểm tra và

thông qua reverse proxy bảo vệ. Các thành phần tường lửa bên trong và bên ngoài

được giả định là minh bạch trong trường hợp này và do đó không được hiển thị.

Quá trình xử lý trả lời của backend server là tùy chọn, nhưng có thể được sử dụng

để thiết lập trường tiêu đề giao thức. Lưu ý rằng bản truy cập chỉ được ghi sau khi

trả lời đã được gửi để cải thiện sự đáp ứng của hệ thống.

Page 17: Cau hinh Reverse Proxy

17

Cơ chế thứ hai thể hiện cơ chế ngăn chặn của reverse proxy bảo vệ bằng cách

bỏ qua một yêu cầu không hợp lệ và độc hại. Tuy nhiên, ngay cả khi trình duyệt

không nhận được trả lời thì vẫn sẽ được ghi nhận. Theo giao thức truyền siêu vẫn

bản, reverse proxy lại phải trả lại mã lỗi (thường là “403 forbidden” hoặc “404 not

found”). Nó phụ thuộc vào chính sách bảo mật của chúng ta trong trường hợp đó, để

đưa ra một trả lời lỗi hoặc bỏ qua các nỗ lực và đóng kết nối tới protection reverse

proxy .

ài đặt

Để cài đặt reverse proxy bảo vệ cần phải thực hiện một số nhiệm vụ sau:

1. Bản thiết kế tường lửa và cấu hình mạng. Ngay cả khi cập nhật tường lửa

được thực hiện sau mỗi phần khác nhau, nó là tốt để bắt đầu với một bản

thiết kế, do đó cấu hình các thành phần khác có thể dựa vào bản thiết kế

tương lửa. Thường thì việc cấu hình cụ thể cần xem xét nhiều hơn so với

chỉ một giao thức và một số lỗ hổng rõ ràng trong tường lửa có thể cần

thiết. Tìm hiểu giao thức nào giải quyết reverse proxy được hỗ trợ. Thông

thường chỉ HTTP (cổng 80) là cần thiết, nhưng chúng ta muốn cho phép

các giao thức khác hiệu quả thông qua reverse proxy.

2. Chọn nền tảng Reverse Proxy. Tạo một reverse proxy của riêng chúng ta,

ví dụ bằng cách cấu hình web server Apache với modun mod_rewrite và

mod_proxy, một số nhà cung cấp các giải pháp reverse proxy chuyên

nghiệp, hoặc chúng ta có thể cần cài đặt reverse proxy của riêng chúng ta,

ví dụ, bởi vì chúng ta sử dụng một giao thưc đặc biệt không hỗ trợ bằng

các giải pháp khác. Khi lựa chọn nhà cung cấp hay nguồn cho reverse

proxy bảo vệ của chúng ta, nên lựa chọn giải pháp đơn giản và đã được

kiểm chứng. Ví dụ, sử dụng Apache, chúng ta có nguy cơ tất cả lỗ hổng

của web server Apache có mặt trong reverse proxy bảo vệ của chúng ta.

Page 18: Cau hinh Reverse Proxy

18

Mặt khác, web server Apache được triển khai thường xuyên, mà hầu hết

các lỗ hổng và các biện pháp đối phó đã được biết đến.

3. Cấu hình backend web server . Các nội dung web nên dựa vào tên đường

dẫn tương đối và không sử dụng tên và địa chỉ IP nội bộ của mình để tham

chiếu tới chính nó. Nếu không, liên kết có thể không làm việc, bởi vì trình

duyệt không còn có thể trực tiếp truy cập vào máy nó đang chạy.

4. Cấu hình reverse proxy bảo vệ. Đối với an ninh để làm việc, chúng ta cần

định nghĩa những yêu cầu nào nên ánh xạ tới backend web server nào, và

định nghĩa những gì xảy ra nếu yêu cầu không hợp lệ xảy ra. Ví dụ, chúng

ta muốn ghi lại những yêu cầu gì đã bị từ chối bởi reverse proxy. Đối với

việc lọc yêu cầu tồn tại 2 cách tiếp cận: danh sách đen và danh sách trắng

- Danh sách đen chỉ lọc những yêu cầu độc hại trong danh sách của

nó, nhưng nó bỏ qua tất cả những thứ khác. Danh sách lọc đen dễ

dàng triển khai nhưng đầy rủi ro. Chúng thường được sử dụng bởi

“higher-lever” của tường lửa.

- Danh sách lọc trắng có nhiều hạn chế và chỉ cho phép những yêu

cầu trong danh sách. Nó cần phải được cấu hình với kiến thức chi

tiết của backend server và cho phép các URLs. Một danh sách lọc

trắng cần phải được điều chỉnh mỗi khi backend server có thay đổi

đáng kể trong không gian (URL) của nó. Tuy nhiên nó là lựa chọn

tốt nhất cho reverse proxy bảo vệ.

Nếu backend server tin tưởng vào trang đổi hướng hay cơ chế khác

bằng cách sử dụng địa chỉ host của nó và chúng ta có thể thay đổi

nó, chúng ta cần cấu hình reverse proxy để sửa đổi phản hồi của

máy chủ cho phù hợp.

5. Triển khai tất cả mọi thứ. Triển khai ban đầu với việc thiết lập tường lửa,

mạng và router, địa chỉ IP máy chủ, và đòi hỏi một bản kế hoạch tốt. Nếu

có một dịch vụ đã chạy, việc cấu hình lại này có thể làm gián đoạn một số

dịch vụ. Tuy nhiên, sau thay đổi trên mô hình chỉ cần xem xét các reverse

proxy và cuối cùng là bức tường lửa bên trong.

Làm theo các hướng dẫn thực hiện, chúng ta có thể bảo vệ web server dễ bị

tổn thương bằng một reverse proxy bảo vệ.

Đảm bảo an toàn cho reverse proxy đã phổ biến. Một số tổ chức trong ngành

công nghiệp tài chính có hướng dẫn sử dụng reverse proxy cho tất cả các giao thức

được cung cấp trên Internet (với một số ngoại lệ như DNS). Vì vậy họ có thể đảm

bảo rằng một server dễ bị tổn thương không bao giờ bị truy cập trực tiếp từ Internet.

Page 19: Cau hinh Reverse Proxy

19

Nhà cung cấp cơ sở hạ tầng bảo mật cung cấp các reverse proxy an toàn như

một phần cơ sở hạ tầng rộng lớn hơn. Ví dụ như cơ sở hạ tầng tại thời điểm viết là

Bull Evidian Access Master và PortalXpert, IBM Tivoli Access Manaher,

SYNLOGIC Frontdoor và FTP Frontdoor.

Lợi ích của reverse proxy

Những kẻ tấn công không còn có thể khai thác trực tiếp lỗ hổng của

backend server. Ngay cả khi backend server bị tổn hại, các bức tường lửa

tiếp tục cản trở sự lây lan của worm trên Internet,.., bằng cách chặn các

yêu cầu gửi đi từ backend server.

Ngay cả khi hiểu được các lỗ hổng, chúng ta có thể giữ cấu hình ổn định

web server, bởi vì reverse proxy bảo vệ với khả năng lọc các yêu cầu của

nó có thể ngăn cản việc lợi dụng lỗ hổng của web server.

Quản trị viên dễ dàng vá lỗi. Chỉ một máy tính kết nối trực tiếp tới

Internet và cần giám sát các lỗ hổng tiềm tàng và các bản vá lỗi đã cài

đặt. Tuy nhiên, chúng ta không thể mù quáng tin tưởng và reverse proxy

bảo vệ của chúng ta. Backend server vẫn cần được cấu hình với bộ não

của chúng ta, để tránh khai thác các lỗ hổng những yêu cầu được phép.

guy cơ gặp phải khi sử dụng reverse proxy

Việc lọc dựa vào danh sách đen có thể đưa cho chúng ta một cảm giác an

toàn giả mạo. Giống như các bản vá, danh sách đen có thể chỉ được tạo

sau khi lỗ hổng được biết đến

Việc lọc với danh sách trắng có thể kém hiệu quả khi backend server

thay đổi. Thêm chức năng hay sắp xếp lại cấu trúc nội dung trong

backend web server, có thể bao gồm công việc bổ sung để cấu hình lại

danh sách lọc của reverse proxy bảo vệ.

Độ trễ. Một reverse proxy tăng thêm độ trễ khi truyền tin, không chỉ bởi

vì thêm lưu lượng mạng mà còn do việc lọc và xác nhận yêu cầu.

Tăng thêm điểm lỗi. Nếu reverse proxy ngừng làm việc sẽ không có bất

cứ truy cập nào tới được web site của chúng ta. Bất cứ thành phần bổ

sung có thể làm tăng nguy cơ lỗi hệ thống. Để giảm nguy cơ này, chúng

ta có thể sử dụng thiết bị dự phòng là thiết bị chuyển mạch phần cứng

hoặc phần mềm.

Chi phí phần cứng, phần mềm và cấu hình. Reverse proxy bảo vệ yêu

cầu phải cấu hình thêm tường lửa lọc gói tin hoặc các thiết bị khác để

chạy reverse proxy.

Page 20: Cau hinh Reverse Proxy

20

3. everse proxy tích hợp

Một web site được xây dựng từ nhiều ứng dụng có nguồn gốc khác nhau có

thể yêu cầu nhiều server khác nhau, bởi vì hoạt động không đồng nhất của các ứng

dụng khác nhau. Bởi vì sơ đồ địa chỉ internet, những phân bố này trên nhiều máy

chủ để hiển thị cho người dùng. Bất cứ thay đổi của phân bố hay chuyển đổi các bộ

phận của trang web tới một máy chủ khác có thể làm ảnh hưởng tới các URL được

sử dụng cho đến nay, các liên kết tới các trang web hoặc chỉ mục được đã được thiết

lập bởi người sử dụng. Một reverse proxy tích hợp làm giảm bớt tình trạng này bằng

cách cung cấp một cách nhìn đồng nhất với một loạt server, không để lộ ra phân bổ

vật lý của hệ thống máy chủ cho người dùng cuối.

Hãy xem xét một trang web điển hình của một công ty (myshop.ch) bán một

số hàng hóa và dịch vụ. Sự hiện diện trực tuyến của họ đã được thiết đặt với một

giao diện cho nhóm hỗ trợ của họ, cho phép người đùng truy cập tới tài liệu hướng

dẫn tĩnh, như một câu hỏi thông thường và giao diện email đơn giản để liên hệ với

nhân viên hỗ trợ. Trang web này chạy trong máy chủ có tên support.myshop.ch. Sau

đó bộ phận marketing mua một phần mềm trực tuyến biểu diễn dịch vụ của họ trên

máy chủ catalog.myshop.ch.

Sau đó, họ cài đặt một hệ thống đặt hàng trực tuyến đơn giản với một công ty

nhỏ phát triển, từ những đơn đặt hàng cần thiết để tự động chuyển đến hệ thống

ERP của nhà phát triển. Bởi vì họ sử dụng một nền tảng khác để phát triển vì lý do

chi phí, hệ thống thu tiền đơn đặt hàng này phải cần chạy trong một server riêng rẽ

như order.myshop.ch.

Để tránh vấn đề với các khách hàng trả tiền trễ và dễ dàng hoạt động kinh

doanh trực tuyến của họ, họ phải thêm một phần mềm thẻ tín dụng thanh toán trực

tuyến từ nhà cung cấp khác. Một lần nữa ta lại phải bổ sung một máy chủ với tên là

pay.myshop.ch. Tóm lại họ cần một hệ thống như trong hình 8.

Bây giờ việc kinh doanh ngày càng nở rộ, cơ sở hạ tầng ban đầu có một số

giới hạn. Nhưng thực tế có những máy chủ đơn lẻ trên Internet làm cho việc di

chuyển ứng dụng tới server khác hoặc chạy một ứng dụng trên hai hệ thống khác

nhau trở lên khó khăn. Sự phức tạp của cơ sở hạ tầng và liên kết chéo của các ứng

dụng server khác nhau làm cho mọi sự thay đổi trở lên phức tạp với nguy cơ nhiều

liên kết hỏng. Làm thế nào tổ chức CNTT có thể che trở người dùng cuối và server

khi thay đổi cơ sở hạ tầng? Làm sao có thể mở rộng chức năng hay sức mạnh xử lý

mà không phá hủy liên kết hay làm vô hiệu các dấu trang của người dùng?

Page 21: Cau hinh Reverse Proxy

21

ình 8: Mô hình mạng myshop.ch

Vấn đề cần giải quyết

Chúng ta cần cài đặt một trang web sử dụng nhiều server khác nhau hay sử

dụng các nhà cung cấp giải pháp khác nhau. Làm thế nào để cung cấp tất cả mọi thứ

dưới một không gian ứng dụng web phù hợp mà không hiển thị cấu trúc server cho

người dùng ? Làm thế nào để đạt được sự linh hoạt trong cấu trúc mạng, ví dụ như

thêm hay loại bỏ các máy chủ mà không làm người dùng ngạc nhiên? Làm thế nào

để cung cấp một chuyển đổi dự phòng hay cân bằng tải nếu một ứng dụng web

server bị quá tải ?

Đặc biệt, chúng ta phải giải quyết các vấn đề sau:

• Không thể cài đặt hoàn chỉnh một trang web với một máy chủ duy nhất và

một nền tảng duy nhất, bởi vì lý do phức tạp, hiệu suất, độ bền vững, tái sử

dụng.

• Cần ẩn cấu trúc mạng với người dùng, do đó những thay đổi trong cấu hình

máy không làm phá vỡ những dấu trang của họ hay liên kết tới trang web

của chúng ta

• Ngoài ra qua backend server liên kết nên tiếp tục bất kể topo mạng nào.

Điều này đảm bảo các ứng dụng backend tiếp tục làm việc không có thay

đổi ngay cả khi một ứng dụng backend di chuyển tới một máy tính khác.

• Có thể thay đổi những phần đã cài đặt của trang web mà không phá hủy liên

kết.

• Chúng ta muốn dễ dàng thêm một yếu tố mới và chức năng mới vào trang

web

Page 22: Cau hinh Reverse Proxy

22

• Có thể chuyển các yêu cầu cho một ứng dụng từ máy chủ, hoặc là chuyển

đổi dự phòng hoặc là cân bằng tải

• Chúng ta muốn chỉ có giấy chứng nhận SSL, bởi vì giấy chứng nhận là đặt

tiền, đặc biệt là phối hợp gia hạn hợp đồng của họ.

ách giải quyết

Sử dụng một reverse proxy cho việc phối hợp tất cả các web server như những

backend server với một địa chỉ chung của reverse proxy.

Đường dẫn ánh xạ URL bên dưới, địa chỉ máy chủ lưu trữ chung cho các

chức năng của backend server, vì vậy bất cứ thay đổi các chức năng trên máy chủ

lưu trữ backend, có thể dễ dàng được thay đổi ở reverse proxy. Cung cấp tùy chọn

có reverse proxy tích hợp với giấy chứng nhận SSL cho tên miền trang web của

chúng ta.

ài đặt

Thực hiện cài đặt một reverse proxy tích hợp giống các bước cài đặt reverse

proxy bảo vệ. Các bước bổ sung như sau:

1- Thiết kế không gian tên trang web. Đây là bước đòi hỏi phải có một bản kế

hoạch cho phép mở rộng trong tương lai. Trong ví dụ của chúng ta, một tiền

tố đường dẫn ánh xạ tới một server cụ thể thực hiện các chức năng. Nhiều

tiền tố có thể ánh xạ cho cùng một máy. Tuy nhiên, cố gắng giữ cho tiền tố

Page 23: Cau hinh Reverse Proxy

23

ánh xạ đơn giản. Đó là một trường hợp đặc biệt liên quan đến điểm ‘/’. Một

backend server có thể xử lý cái này hay chính reverse proxy có thể hiển thị

một trang chuyển hướng cho người dùng bào gồm một menu cấu hình dịch

vụ backend. Điều này có thể thay đổi tự động với thay đổi cấu hình của

reverse proxy.

Một thay thế cho các tiền tố đường dẫn ánh xạ là để sử dụng máy ảo cho các

reverse proxy, nơi mà tên của 1 host vẫn chỉ định một dịch vụ backend. Điều

này cho phép công ty trong ví dụ của chúng ta tiếp tục cung cấp host name

gốc của họ, ngay cả sau khi họ đã chuyển sang kến trúc reverse proxy.

Sự kết hợp của các tiền tố và các máy chủ ảo cho phép nhà cung cấp dịch vụ

để lưu trữ các chức năng tương tự cho một số client mà không cần phải lặp

lại tất cả các cơ sở hạ tầng và dễ dàng mở rộng kến trúc hạ tầng nếu cần thiết.

Công ty này có thể sử dụng hệ thống này để cung cấp một dịch vụ shop

(danh mục, đặt hàng, thanh toán) cho đại lý theo địa chỉ tên miền của đại lý

của họ với server myshop.ch.

2- Cấu hình backend web server. Ngoài các vấn đề được đề cập trong mô hình

reverse proxy bảo vệ, chúng ta muốn liên kết từ một dịch vụ backend tới một

cái khác. Ví dụ, backend server /catalog muốn liên kết đến /order và ngược

lại. Tiếp theo lược đồ không gian tên, tương thích với các trang web và ứng

dụng để tạo ra các liên kết chính xác tham chiếu tới địa chỉ máy chủ nôi bộ.

3- Cấu hình backend server dự phòng. Nếu trang web hoạt động trong khi phần

mềm hay phần cứng bị lỗi, hay khi một phiên bản mới của một số backend

cần phải cài đặt, chúng ta có thể cung cấp một chuyển đổi dự phòng tới một

backend server khác cài đặt chức năng tương tự. Việc chuyển đổi có thể thực

hiện tự động, khi một reverse proxy không thể kết nối tới backend server

chính hoặc cấu hình bằng tay bởi nhân viên điều hành

4- Cài đặt backend server cân bằng tải. Tương tự như chuyển đổi dự phòng mà

chúng ta có thể thực hiện cân bằng tải cho những backend nếu nó cần. Đó là

chiến lược có thể. Đơn giản nhất là đi qua các yêu cầu trong một vòng robin

thời trang trong một số backend server cài đặt chức năng giống nhau. Chiến

lược tinh vi hơn có thể làm cho việc sử dụng các số liệu thống kê thu thập

được tại reverse proxy giống như thời gian trả lời của những backend hoặc

truy vấn đặc biệt tới tập hợp backend tương ứng với tải của họ.

Trong trường hợp các ứng dụng web trên những backend chứa một phiên

làm việc của người sử dụng, việc cân bằng tải sẽ phức tạp hơn, bởi vì một

Page 24: Cau hinh Reverse Proxy

24

phiên yêu cầu cần được thông qua đến backend giống nhau, khi nhiều hơn

một phiên có sẵn (phiên dính).

Reverse proxy bảo vệ tích hợp. Như đã nói, rất dễ dàng để kết hợp reverse

proxy tích hợp và reverse proxy bảo vệ để đạt được cả hai lợi ích.

Chúng ta có thể sử dụng reverse proxy tích hợp cho một mạng cục bộ tích

hợp. Các ứng dụng mạng Intranet đơn giản (như sử dụng PHP hay Perl) có

thể được triển khai một cách nhanh chóng đằng sau reverse proxy, mà không

cần công khai địa chỉ của các server một cách rõ rang cho tất cả người dùng.

Ngoài ra các ứng dụng web bên ngoài có thể được tính hợp tương tự vào

không gian làm việc mà không cần những người sử dụng nhận ra bản chất

bên ngoài. Kết hợp với một menu dịch vụ backend có sẵn được tạo trong

reverse proxy, phát triển các công cụ như vậy có thể làm được ngay. Cách

tích hợp này chỉ dựa trên HTTP là dễ dàng hơn nhiều việc sử dụng một

server theo nền tảng truyền thống. Hơn nữa chúng ta có thể đảm bảo an ninh

bởi vì những backend server có thể hoạt động trong khu vực mạng riêng rẽ

không thể truy cập trực tiếp từ các tổ chức có khả năng thù địch (ví dụ, xem

xét những email worm).

Ngay cả một sự kết hợp hai reverse proxy tích hợp, một reverse proxy đối

mặt với internet và một reverse proxy sử dụng cho mạng nội bộ chia sẻ

những backend server là có thể. Điều này làm giảm chi phí, nếu các chức

năng tương tự có sẵn trên cả hai mạng.

Lợi ích của reverse proxy tích hợp

Chỉ có một host bên ngoài được biết đến. Chỉ có một tên và một địa chỉ IP

cho reverse proxy được biết đến và có thể truy cập từ bên ngoài, trừ khi sử

dụng máy chủ ảo. Có thể tăng cường an ninh bởi vì vài máy cần phải hoạt

động trong DMZ.

Cấu trúc mạng của những backend server được ẩn. Chúng ta có thể chuyển

backend web server từ một máy này tới máy khác mà không làm mất giá trị

của các URL bên ngoài hay các liên kết tới ứng dụng.

Dễ dàng tích hợp và mở rộng. Trộn và kết hợp các ứng dụng web và công

nghệ trở lên khả thi cho backend web server và minh bạch cho người dùng

cuối.

Các trang đánh dấu và liên kết tới backend vẫn tiếp tục hoạt động ngay cả

khi backend được chuyển tới host khác.

Có thể cân bằng tải các backend server với reverse proxy. Tuy nhiên, nếu

những reverse proxy thực hiện phiên, reverse proxy phải gắn vào tài khoản.

Page 25: Cau hinh Reverse Proxy

25

Sự ghi chép tập chung. Reverse proxy tích hợp cung cấp móc nối tốt để thực

hiện truy cập hay ghi chép lỗi. Những reverse proxy lý tưởng không còn cần

phải thực hiện ghi chép. Một bản ghi duy nhất dễ dàng hơn để đánh giá, ví

dụ, đường dẫn điều hướng của người sử dụng có thể theo dõi, ngay cả khi có

nhiều hơn một backend server được sử dụng.

Chúng ta có thể tiết kiệm được tiền bạc và nỗ lực trên giấy chứng nhận SSL

và cũng có thể là trên những địa chỉ IP hay những host name, bởi vì chỉ một

host được kết nối tới internet. Host ảo tới dịch vụ ánh xạ là không khả thi với

một chứng chỉ SSL. Chúng ta cần cấu hình nhiều địa chỉ IP cho reverse

proxy để làm cho nó có thể sử dụng giấy chứng nhận SSL hợp lệ hoặc cần

phải sử dụng ký đại diện chứng chỉ SSL đắt tiền.

guy cơ khi sử dụng reverse proxy tích hợp

Mô hình reverse proxy tích hợp cũng có nguy cơ không an toàn. Nó cũng có 3

nguy cơ cuối giống của reverse proxy bảo vệ: độ trễ, tổn thất khi truyền cho các

backend, tăng thêm điểm lỗi.

Tiền tàng điểm lỗi. Nếu mọi thứ truyền thông qua reverse proxy, reverse

proxy trở thành điểm có nguy cơ lỗi. Dự phòng bổ sung là cần thiết để giải

quyết rủi ro. Nếu không có reverse proxy, chỉ một server duy nhất ngừng

hoạt động có thể làm giảm chức năng có sẵn, nhưng có thể không mang lại

cho tất cả mọi thứ hoàn toàn. Sử dụng một phần cứng chuyển mạch cân bằng

tải dự phòng và một hệ reverse proxy dự phòng có thể làm giảm bớt vấn đề

này.

Số kết nối đồng thời bị hạn chế. IP cho một giới hạn cứng về số cổng có thể

sử dụng và do đó số kết nối đồng thời là có thể xảy ra. Trên các trang web tải

nặng với những backend tương đối chậm thì cần phải bổ sung nhiều reverse

proxy với công nghệ DNS round robin để kéo dài giới hạn này.

Phức tạp. Có thể là biện pháp đơn giản hơn để đạt được một hay lợi ích khác.

Ví dụ ta có thể sử dụng bộ phần cứng chuyển mạch cân bằng tải.

Phiên dính với cân bằng tải có thể có vấn đề, khi backend server dựa trên

phiên.

Thử nghiệm ứng dụng cá nhân có thể khó khăn hơn. Chúng ta cần thiết lập

một reverse proxy tích hợp giả để có thể thử nghiệm ứng dụng mới. Thậm

chí có thể là sự cần thiết cho một môi trường thử nghiệm hoàn chỉnh bao

gồm tất cả các backend để xác định tất cả các liên kết chéo.

Page 26: Cau hinh Reverse Proxy

26

IV. Ặ Ự ỆM

1. Môi trường công cụ

- Máy ảo Vitual Box cài Windows Server 2008

- IIS 7 đã được cài đặt role ASP.NET

- Module URL Rewrite

- Module Application Request Routing version 2.5

2. Xây dựng mô hình mạng

Server ARR có tên miền: http://hungnk.com

Web Server1 được truy cập bởi địa chỉ: http://hungnk.com/webserver1/

Web Server2 được truy cập bởi địa chỉ: http://hungnk.com/webserver2/

Khi một yêu cầu tới http://hungnk.com/webserver1/default.aspx, ARR chuyển tiếp

yêu cầu này tới server bên trong có URL:

http://webserver1.hungnk.com/default.aspx.

Khi yêu cầu tới http://hungnk.com/webserver2/default.aspx sẽ được chuyển tới:

http://webserver2.hungnk.com/default.aspx.

ạo web site:

1- Tạo 2 folder webserver1 và webserver2

C:\inetput\webserver1 và C:\inetput\webserver2

2- Tạo 2 website với tên webserver1 và webserver2

http://webserver1.hungnk.com:8881, đường dẫn vật lý C:\inetput\webserver1

http://webserver2.hungnk.com:8882, đường dẫn vật lý C:\inetput\webserver2

Web Server1 Web Server2

Page 27: Cau hinh Reverse Proxy

27

3- Tạo file có tên default.aspx trong folder: C:\inetput\webserver1 với nội

dung như sau:

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Reverse Proxy Test Page - WebServer 1</title>

<style type="text/css">

h1{ color:red;}

</style>

</head>

<body>

<h1>Reverse Proxy Test Page - WebServer 1</h1>

<p> URL gốc của web site:

<b>http://webserver1.hungnk.com:8881/default.aspx</b><p>

<p> Khi một yêu cầu tới

<b>http://hungnk.com/webserver1/default.aspx</b>,

reverse proxy sẽ chuyển tiếp tới địa chỉ

<b>http://webserver1.hungnk.com:8881/default.aspx</b></p>

<p>Requested URL path is <%= Request.ServerVariables["SCRIPT_NAME"]

%><p>

<p><a href="<%= Request.ServerVariables["SCRIPT_NAME"] %>">Here</a>

is the link to this page.</p>

</body>

</html>

4- Tạo file có tên default.aspx trong folder: C:\inetput\webserver2 với nội

dung như sau:

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Reverse Proxy Test Page - WebServer 2</title>

Page 28: Cau hinh Reverse Proxy

28

<style type="text/css">

h1{ color:red;}

</style>

</head>

<body>

<h1>Reverse Proxy Test Page - WebServer 2</h1>

<p> URL gốc của web site:

<b>http://webserver2.hungnk.com:8882/default.aspx</b><p>

<p> Khi một yêu cầu tới

<b>http://hungnk.com/webserver2/default.aspx</b>,

reverse proxy sẽ chuyển tiếp tới địa chỉ

<b>http://webserver2.hungnk.com:8882/default.aspx</b></p>

<p>Requested URL path is <%= Request.ServerVariables["SCRIPT_NAME"]

%><p>

<p><a href="<%= Request.ServerVariables["SCRIPT_NAME"] %>">Here</a>

is the link to this page.</p>

</body>

</html>

5- Mở trình duyệt kiểm tra các địa chi URL:

http://webserver1.hungnk.com:8881/default.aspx

http://webserver2.hungnk.com:8882/default.aspx

- Trình duyệt trên máy ảo Window server: truy cập bình thường

- Trình duyệt trên máy thật Window 7 (client): không truy cập được

bởi vì các cổng 8881, 8882 trên window server không mở.

3. ấu hình reverse proxy

1- Mở IIS Manager

2- Right Click vào “Application Request Routing” chọn Open feature

Page 29: Cau hinh Reverse Proxy

29

3- Tích vào “Enable Proxy”, các trường khác đề mặc định

Click vào “Apply” bên dưới Actions để lưu thay đổi

Tiếp theo chúng ta sẽ tạo 2 quy tắc rewrite:

- Nếu đường dẫn URL bắt đầu với “webserver1” thì sẽ yêu cầu tới ứng dụng

webserver1 ở http://webserver1.hungnk.com:8881/

- Nếu đường dẫn URL bắt đầu với “webserver2” thì sẽ yêu cầu tới ứng dụng

webserver2 ở http://webserver2.hungnk.com:8882/

ể thêm quy tắc reverse proxy rewrite

1- Mở file web.config tại vị trí C:\inetpub\wwwroot\

2- Bên dưới trường /configuration/system.webServer thêm nội dung sau:

<rewrite>

<rules>

<rule name="Reverse Proxy to webserver1" stopProcessing="true">

<match url="^webserver1/(.*)" />

<action type="Rewrite" url="http://webserver1.hungnk.com:8881/{R:1}" />

</rule>

<rule name="Reverse Proxy to webserver2" stopProcessing="true">

<match url="^webserver2/(.*)" />

<action type="Rewrite" url="http://webserver2.hungnk.com:8882/{R:1}" />

</rule>

</rules>

</rewrite>

ấu hình quy tắc response rewriting

1- Mở IIS Manager

2- Chọn “Default”

3- Trong Feature View click “URL Rewrite”

Page 30: Cau hinh Reverse Proxy

30

4- Trong bảng Action ở bên phải click “Add Rule…”. Tiếp tục chọn “Blank

Rule” ở bên dưới “Outbound Rules” và click OK

Page 31: Cau hinh Reverse Proxy

31

ể định nghĩa một precondition

- Trong danh sách Precondition, chọn “<Create New Precondition…>

- Cửa sổ Add Precondition hiện lên

- Click OK để lưu thay đổi

Page 32: Cau hinh Reverse Proxy

32

ịnh nghĩa matching scope

ịnh nghĩa ondition:

Click Conditions => Add Condition

Page 33: Cau hinh Reverse Proxy

33

ịnh nghĩa Action

Click Apply để lưu thay đổi.

iểm tra hoạt động của reverse proxy

Mở trình duyệt web để yêu cầu tới địa chỉ:

http://hungnk.com/webserver1/default.aspx

hay http://hungnk.com/webserver2/default.aspx

Page 34: Cau hinh Reverse Proxy

34

V. Ế LUẬ

Qua việc nghiên cứu đề tài giúp tôi có cài nhìn toàn diện hơn về kiến trúc

reverse proxy. Việc triển khai mô hình reverse proxy giúp đảm bảo an toàn cho

server, giúp che dấu sự tồn tại của server trên Internet, giúp cân bằng tải cho hệ

thống máy chủ. Reverse proxy còn hạn chế việc lợi dụng những lỗ hổng trên hệ

thống máy chủ. Mô hình này đã giải quyết được những đòi hỏi cấp thiết về an toàn

thông tin và truyền tải dữ liệu trên Internet.

Vì đây là một hệ thống tương đối mới mẻ đối với sinh viên nên việc tìm hiểu

chưa thật thấu đáo. Chưa thể thực hiện cài đặt đầy đủ để kiểm chứng.

Page 35: Cau hinh Reverse Proxy

35

L ỆU M Ả

- http://vi.wikipedia.org/wiki/Proxy_server

- http://en.wikipedia.org/wiki/Reverse_proxy

- http://ebookbrowse.com/2003-sommerlad-reverseproxypatterns-pdf-

d44675522

- http://learn.iis.net/page.aspx/659/reverse-proxy-with-url-rewrite-v2-and-

application-request-routing/