Chương 1 – TỔNG QUAN VỀ PROXY SERVER 1. Tổng quan về proxy server 1. Khái niệm proxy server Proxy là một thành phần trong firewall chuẩn với vai trò là cổng ứng dụng (application–level gateway) và máy chủ cài đặt proxy gọi là proxy server. Proxy server đóng vai trò trung gian giữa hai điểm đầu cuối của một kết nối mạng khách/chủ (client/server).
Proxy server làm nhiệm vụ chuyển tiếp thông tin và kiểm soát thông tin, từ đó cung cấp các kết nối an toàn hoặc các biện pháp bảo vệ mạng máy tính. Web Servers Clients Proxy Server Hình 1. Proxy server là máy trung gian giữa máy chủ và máy khách Hình 1 ở trên cho thấy, ở trong một mạng máy tính, proxy server có thể hoạt động với vai trò của máy chủ hoặc của máy khách nhằm mục đích đại diện cho máy khách tạo ra các yêu cầu. Các yêu cầu này sẽ được xử lý tại chỗ hoặc chuyển qua các proxy khác để xác định máy chủ cần kết nối.
Proxy server biên dịch các yêu cầu và nếu cần có thể viết lại các yêu cầu trước khi chuyển tiếp yêu cầu, khi đó, các máy khách đã gửi yêu cầu sẽ làm việc với proxy server thay vì với máy chủ thật cần kết nối. Tác dụng và chức năng Để đáp ứng được nhu cầu của người sử dụng khi cần truy cập đến những ứng dụng ngoài Internet nhưng vẫn đảm bảo an toàn cho hệ thống cục bộ, hầu hết những 14 giải pháp được đưa ra đều có đặc điểm là xây dựng một máy chủ riêng biệt để truy cập đến internet cho tất cả người sử dụng. Người sử dụng khi cần kết nối internet sẽ truy cập vào máy chủ này và thực hiện giao tiếp với internet. Các giải pháp phổ biến có thể kể đến như Remote Desktop Service và Remote App của Microsoft.
Tuy nhiên, các giải pháp trên làm cho người sử dụng thấy không thoải mái do phải thực hiện nhiều bước khi cần truy cập internet: đầu tiên, người sử dụng cần thực hiện kết nối để truy cập vào máy chủ, sau đó, thực hiện tất cả những công việc cần internet trên máy chủ này, cuối cùng, chuyển kết quả công việc trở lại máy khách. Giải pháp truy cập Internet trên cũng có rất nhiều hạn chế: − Với hệ thống có nhiều hệ điều hành khác nhau sẽ khó tìm được giải pháp chung cho tất cả các hệ điều hành, nhất là khi có lỗi xảy ra; − Máy chủ để truy cập internet chung sẽ cần rất nhiều tài nguyên để phục vụ cho nhiều người sử dụng đồng thời mà không tận dụng được tài nguyên của máy khách; − Giảm tính bảo mật do có nhiều người sử dụng cùng kết nối đến một máy chủ; − Máy chủ truy cập internet dễ bị tấn công do kết nối trực tiếp internet mà không có firewall. Giải pháp sử dụng proxy server thay thế những yêu cầu của người sử dụng bằng yêu cầu từ proxy server. Đồng thời, do vẫn làm việc tại máy khách nên người sử dụng giảm bớt các thao thác khi cần kết nối internet, đồng thời máy chủ truy cập internet được giảm tải và yêu cầu ít tài nguyên hơn các giải pháp truy cập internet được nêu ở trên [4].
Như đã nói ở trên, proxy là cổng mức ứng dụng (application–level gateway) trong firewall. Proxy hoạt động bằng cách chuyển đổi những yêu cầu của người sử dụng thông qua firewall theo trình tự như tại hình 2 dưới đây, cụ thể: 15 Hình 2. Kết nối sử dụng Application–Level Gateway 1. Proxy thu nhập thông tin trong yêu cầu kết nối của máy khách và cơ sở dữ liệu xác thực (Authentication Database); 3.
Proxy sử dụng thông tin thu thập được và các luật (rule) trong proxy để cho phép hoặc từ chối yêu cầu. Nếu yêu cầu được chấp nhận, proxy sẽ tạo kết nối khác từ firewall đến máy chủ đích (Destination Host); 4. Sau khi tạo kết nối, proxy thực hiện vai trò giao tiếp trung gian để truyền dữ liệu qua lại giữa máy khách và máy chủ đích. Với phương thực hoạt động như trên, proxy giảm được rủi ro trên hệ thống khi người sử dụng không phải đăng nhập vào máy chủ và không phụ thuộc vào phần mềm điều khiển [4].
Kết nối thông qua proxy Hình 3 mô tả phương thức kết nối thông qua proxy server (proxying), trong đó, proxy server đóng vai trò là một “pháo đài” (bastion host). Trên bastion host chỉ được cài đặt một số dịch vụ phổ biến, sử dụng các giao thức thông dụng, kết nối qua proxy dễ dàng hoặc có thể tự động sử dụng proxy của hệ điều hành để kết nối (ví dụ: HTTP, FTP, DNS …). Việc sử dụng bastion host làm tăng tốc độ truy cập của người 16 dùng khi sử dụng các dịch vụ phổ biến, đồng thời bastion host luôn chạy các phiên bản an toàn của hệ điều hành, các phiên bản này được thiết kế với mục đích chống tấn công nên vẫn đảm bảo an toàn bảo mật. Kết nối giữa client với server qua bastion host 1.
Đặc điểm của proxy server 1. Mục đích sử dụng proxy Các mục đích sử dụng của proxy bao gồm [2,3]: − Giảm băng thông sử dụng; − Tăng tốc độ lướt web bằng cách sử dụng bộ nhớ đệm (caching); − Thiết lập các chính sách quản lý truy cập; − Giám sát lưu lượng sử dụng mạng của người dùng; − Bảo vệ người dùng và máy tính của người dùng khi truy cập internet do không kết nối trực tiếp đến internet; − Phân tải giữa các máy chủ web khác nhau; − Tăng hiệu quả hoạt động của các máy chủ web có hiệu năng thấp; − Lọc dữ liệu vào ra khi tích hợp hệ thống phát hiện mã độc; 17 − Cân bằng tải khi có nhiều đường kết nối internet; − Chuyển tiếp băng thông trong mạng LAN; − Truy cập một số website mà ISP không cho vào (vượt tường lửa). Hạn chế của proxy Mặc dù proxy có nhiều ưu điểm và hiệu quả với những dịch vụ phổ biến như HTTP, FTP và telnet, nhưng với những dịch vụ mới sử dụng các giao thức mới, cần phải thiết kế proxy mới cho những dịch vụ đó dẫn đến khó khăn khi triển khai dịch vụ mới vào hệ thống. Khi đó, quản trị viên thường đặt hệ thống cung cấp hoặc những máy tính cần kết nối đến dịch vụ mới bên ngoài proxy cho đến khi có proxy được thiết kế cho dịch vụ đó, điều này làm giảm tính an toàn bảo mật của toàn hệ thống.
Ngoài ra, proxy thực hiện nhiệm vụ trung gian giữa máy chủ và máy khách, do đó, proxy cần phải hiểu tất cả các giao thức cần quản lý, từ đó xác định những kết nối được cho phép hoặc bị từ chối. Để hiểu được giao thức cần quản lý, proxy phải cài đặt những dịch vụ tương ứng, dẫn đến làm tăng số lỗ hổng bảo mật theo số dịch vụ trên proxy server. Các dạng proxy server − Dạng kết nối trực tiếp: Phương pháp đầu tiên được sử dụng trong kỹ thuật kết nối sử dụng proxy là cấu hình ứng dụng cho người dùng kết nối trực tiếp đến proxy server. Với trình duyệt web, người dùng cần phải biết hai địa chỉ cho mỗi kết nối là địa chỉ của proxy server (kèm theo cổng kết nối) và địa chỉ của máy chủ đích.
Với phương pháp này, nhiều ứng dụng trên máy khách có yêu cầu kết nối đặc biệt sẽ không sử dụng được; − Dạng thay đổi máy khách: Phương pháp kế tiếp là cài đặt một chương trình proxy client lên máy khách. Chương trình này sẽ chuyển toàn bộ kết nối từ ứng dụng trên máy tính người dùng qua proxy server, người dùng chạy những ứng dụng có kết nối đặc biệt làm việc bình thường nhưng các kết nối được điều chỉnh thông qua proxy server. Người dùng chỉ cần cung cấp địa chỉ của máy chủ đích, proxy client sẽ tự 18 động thiết lập kết nối đến địa chỉ đã biết của proxy server và chuyển địa chỉ máy chủ đích được cung cấp bởi người sử dụng. Phương pháp này rất hiệu quả, tuy nhiên, cần cài đặt thêm chương trình lên máy khách; − Proxy vô hình: Là phương pháp cho phép truy xuất thông qua proxy nằm trong hệ thống firewall.
Khi sử dụng dạng proxy này, máy khách không cần cài thêm ứng dụng và không kết nối trực tiếp đến proxy server. Tất cả dữ liệu vào ra mạng được điều hướng thông qua proxy server tự động và trong suốt với người dùng. Bằng phương pháp này, khi ứng dụng trên máy khách gửi yêu cầu kết nối đến proxy server, nếu yêu cầu kết nối được chấp nhận, proxy server sẽ thực hiện kết nối đến máy chủ đích bằng giao thức tương ứng và viết lại các yêu cầu của ứng dụng từ máy khách cũng như các phản hồi của máy chủ đích. Ứng dụng trên máy khách và máy chủ đích sẽ làm việc bình thường mà không nhận ra proxy server ở giữa.
Phân loại proxy 1. Phân loại proxy theo giao thức − HTTP proxy: HTTP proxy là một proxy server phổ biến nhất. Trước đây, khi sử dụng loại proxy này chỉ có thể duyệt website, hình ảnh, và tải tập tin. Tuy nhiên, các phiên bản mới hiện nay đã cho phép nhiều giao thức khác (FTP, SSL …) kết nối qua các proxy server loại này.
HTTP proxy cho phép tất cả các trình duyệt kết nối; − SOCKS proxy: Các SOCKS proxy có thể làm việc với bất kỳ loại thông tin nào trên internet nếu sử dụng mạng với giao thức TCP/IP nhưng có ít ứng dụng được thiết kế để làm việc trực tiếp với SOCKS proxy (ví dụ: các chương trình ICQ hầu hết đều làm việc được thông qua SOCKS proxy). Với các ứng dụng không có khả năng kết nối thông qua SOCKS proxy cần sử dụng chương trình phụ để thiết lập kết nối. Ví dụ: trình duyệt Firefox phải sử dụng thêm các add-in để kết nối với SOCKS proxy yêu cầu xác thực; − CGI proxy: CGI proxy là loại proxy được thiết kế chỉ làm việc với các trình duyệt, việc cấu hình cho các chương trình khác ngoài trình duyệt sử dụng loại proxy 19 này khá phức tạp. Trong khi đó, các trình duyệt có thể sử dụng HTTP proxy nên CGI proxy không được sử dụng phổ biến.
Tuy nhiên, mục đích ban đầu của CGI proxy được thiết kế chỉ để làm việc với trình duyệt nên không cần cấu hình lại trình duyệt và CGI Proxy cho phép tạo chuỗi proxy server dễ dàng nên vẫn còn được một số nơi sử dụng; − FTP proxy: FTP proxy là loại proxy được thiết kế chỉ làm việc với các máy chủ dịch vụ FTP. FTP proxy được sử dụng trong hầu hết các trình quản lý tập tin, các trình tải tập tin thông dụng và trong các trình duyệt. Hiện nay, FPT proxy thường được cài đặt trong HTTP proxy [2].