Thông thường, firewall được chia làm 2 loại chính gồm firewall cứng và firewall mềm:
Firewall cứng: Là những firewall được các hãng sản xuất tích hợp trên các thiết bị phần cứng với phần mềm firmware được viết riêng. Firewall cứng hoạt động ở tầng thấp hơn firewall mềm (tầng mạng và tầng vận chuyển).
Firewall mềm: Là những phần mềm có chức năng firewall được cài đặt trong hệ điều hành trên các máy tính có sẵn (máy chủ hoặc máy khách). Firewall mềm hoạt động ở tầng cao hơn Firewall cứng (tầng ứng dụng).
Ngoài ra, firewall cũng được phân loại theo chức năng, Firewall bao gồm một hay nhiều thành phần sau đây [4]:
Bộ lọc gói (Packet–Filtering);
Cổng ứng dụng (Application–level Gateway hay Proxy server); Cổng vòng (Circuite level Gateway).
1.3.3.1. Bộ lọc gói
Hoạt động của firewall có mối quan hệ chặt chẽ với giao thức TCP/IP do firewall có khả năng kiểm soát việc lưu thông dữ liệu giữa các mạng với. Giao thức TCP/IP làm việc theo thuật toán chia nhỏ các dữ liệu nhận được từ các dịch vụ chạy
trên các giao thức mạng thành các gói dữ liệu rồi gán cho các gói này những địa chỉ để có thể nhận dạng, tái lập lại các gói dữ liệu đó ở đích cần gửi đến [4].
Hình 8. Sơ đồ làm việc của Packet Filtering
Sơ đồ làm việc của bộ lọc gói tại hình 8 cho thấy, bộ lọc gói cho phép đi qua hay từ chối mỗi gói dữ liệu mà nó nhận được. Bộ lọc gói kiểm tra toàn bộ các gói dữ liệu đi qua nó và so sánh với luật lọc gói. Các luật lọc gói là dựa trên các thông tin ở tiêu đề mỗi gói, dùng để truyền các gói dữ liệu ở trên mạng, các thông tin bao gồm:
Địa chỉ IP nơi xuất phát (IP Source address); Địa chỉ IP nơi nhận (IP Destination address);
Những thủ tục truyền tin (TCP, UDP, ICMP, IP tunnel); Cổng TCP/UDP nơi xuất phát (TCP/UDP source port); Cổng TCP/UDP nơi nhận (TCP/UDP destination port); Dạng thông báo ICMP (ICMP message type);
Giao diện Packet đến (Incomming interface of Packet); Giao diện Packet đi (Outcomming interface of Packet).
Nếu luật lọc gói được thoả mãn thì gói được chuyển qua firewall nếu không gói sẽ bị loại bỏ. Nhờ vậy mà firewall có thể ngăn chặn các kết nối vào các máy chủ/các mạng xác định hoặc chặn việc truy cập vào hệ thống mạng nội bộ từ những địa chỉ cụ thể. Hơn nữa, việc kiểm soát các cổng kết nối làm cho firewall có khả năng chỉ cho phép một số loại kết nối nhất định vào các máy chủ hoặc chỉ có những dịch vụ được phép (Telnet, SMTP, FTP...) mới chạy được trên hệ thống mạng cục bộ.
Ưu điểm:
Đa số các hệ thống firewall đều sử dụng bộ lọc gói do ưu điểm của phương pháp dùng bộ lọc gói là chi phí thấp vì cơ chế lọc gói thường được tích hợp trong các giải pháp firewall cứng hoặc firewall mềm;
Bộ lọc gói là trong suốt đối với người sử dụng và các ứng dụng. Hạn chế:
Việc định nghĩa các luật lọc gói là một việc khá phức tạp, đòi hỏi người quản trị mạng cần có hiểu biết chi tiết về các dịch vụ internet, các dạng tiêu đề gói, và các thông tin trong tiêu đề gói. Khi nhu cầu bảo mật tăng lên, bộ lọc gói phải xác định chính xác việc cho phép hoặc từ chối các gói dữ liệu dẫn đến các luật lọc càng trở nên dài và phức tạp, rất khó để quản lý, chỉnh sửa và cập nhật.
Do cơ chế làm việc dựa trên tiêu đề của các gói nên bộ lọc gói không kiểm soát được nội dung thông tin của gói, dẫn đến các gói chuyển qua vẫn có thể mang thông tin làm mất an toàn bảo mật.
1.3.3.2. Cổng ứng dụng (Application–Level Gateway)
Cổng ứng dụng là một loại firewall được thiết kế để tăng cường chức năng kiểm soát các loại dịch vụ, giao thức được cho phép truy cập vào hệ thống mạng. Cơ chế hoạt động của cổng ứng dụng dựa trên cách thức gọi là dịch vụ đại diện (proxy service). Proxy service là các bộ mã (code) đặc biệt cài đặt trên cổng ra cho từng ứng dụng. Nếu người quản trị mạng không cài đặt mã đại diện (proxy code)
cho một ứng dụng nào đó, dịch vụ tương ứng sẽ không được cung cấp và do đó không thể chuyển thông tin qua firewall. Ngoài ra, proxy code có thể được cấu hình để chỉ hỗ trợ một số kết nối trong ứng dụng mà quản trị mạng cho là chấp nhận được trong khi từ chối các kết nối khác.
Như đã nêu ở trên, cổng ứng dụng thường được coi như là một pháo đài (Bastion Host), vì nó được thiết kế đặc biệt để chống lại tấn công từ bên ngoài.
1.3.3.3. Cổng vòng (Circuit–Level Gateway)
Cổng vòng là một chức năng đặc biệt có thể thực hiện được bởi một cổng ứng dụng. Cổng vòng đơn giản chỉ chuyển tiếp các kết nối TCP mà không thực hiện bất kỳ một hành động xử lý hay lọc gói nào.
Hình 9.Kết nối qua cổng vòng (Circuit–Level Gateway)
Hình 9 minh hoạ một kết nối sử dụng telnet qua cổng vòng. Cổng vòng đơn giản chuyển tiếp kết nối telnet qua Firewall mà không thực hiện kiểm tra, lọc hay kiểm soát thủ tục telnet. Cổng vòng sao chép các byte giữa kết nối bên trong và các kết nối bên ngoài, tuy nhiên, do kết nối này xuất hiện từ hệ thống firewall nên giấu được thông tin về mạng nội bộ. Cổng vòng thường cung cấp cho người sử dụng kết nối đến địa chỉ tin cậy.
Chương 2 – GIỚI THIỆU CÁC PHẦN MỀM PROXY MÃ NGUỒN MỞ 2.1. Lựa chọn proxy server
Trong phạm vi luận văn, em hướng đến thiết lập forward proxy để bảo vệ người dùng và mạng máy tính, nên để lựa chọn proxy server mã nguồn mở, sau khi tham khảo các tài liệu [1,3], em so sánh tính năng của một số proxy server mã nguồn mở nổi tiếng và TMG (proxy server thương mại) của Microsoft trong bảng 1 dưới đây:
Bảng 1. Bảng so sánh tính năng các Proxy Server
STT Tính năng ATS NGiNX Squid Varnish
Apache httpd mod_Proxy TMG 1 Reverse Proxy (Proxy ngược) Có Có Có Có Có Có 2 Forward Proxy (Proxy chuyển tiếp) Có Không Có Không Có Có 3 Transparent Proxy (Proxy vô hình) Có Không Có Không Có Có
STT Tính năng ATS NGiNX Squid Varnish Apache httpd mod_Proxy TMG 4 Plugin APIs (Hỗ trợ API) Có Có Một phần Có Có Một phần (chỉ với các sản phẩm của Microsoft) 5 Cache Có Có Có Có Có Có
6 ICP Có Không Có Không Không Không
7 SSL Có Có Có Không Có Có (mất
phí) Từ bảng trên, em lựa chọn Squid và ATS là 02 phần mềm cho tính năng đầy đủ nhất để tìm hiểu, cài đặt làm forward proxy và đánh giá.
2.2. Squid
2.2.1. i i thiệu uid
Squid là một proxy server có chức năng Squid là tiết kiệm băng thông, tăng độ bảo mật, tăng tốc độ truy cập web cho người sử dụng và là một trong những proxy phổ biến được nhiều người biết đến. Squid là phần mềm mã nguồn mở miễn phí và thường có vị trí trong mô hình mạng đơn giản như ở hình 10.
Hình 10. Mô hình Squid làm Proxy Server đơn giản
Squid hỗ trợ ICP và có công nghệ lưu trữ ở cấp độ cao đối cho các web client, đồng thời hỗ trợ các dịch vụ thông thường như FTP, Gopher và HTTP. Squid lưu trữ các dữ liệu phiên bản mới nhất và thường được truy cập nhất cho các dịch vụ trên trong RAM, đồng thời quản lý toàn bộ dữ liệu còn lại trên ổ đĩa bằng công nghệ điều khiển truy cập phức tạp để làm trung gian cho các kết nối và tăng tốc độ truy cập. Squid hỗ trợ giao thức SSL cho các kết nối bảo mật thông qua proxy, hơn nữa, Squid có thể liên kết với cache của các proxy server khác để tăng cường hiệu năng cho các website [4].
2.2.2. Tính năng Squid
Squid hỗ trợ những chức năng chính với các giao thức như sau:
Kết nối qua proxy (Proxying) và đệm dữ liệu (caching) với giao thức HTTP, FTP và các giao thức URL khác;
Proxying với giao thức HTTPS (SSL); Thừa kế bộ nhớ đệm;
ICP, HTTP, CARP, Cache Digests; Caching ẩn;
WCCP – Web Cache Communication Protocol; Mở rộng khả năng kiểm soát truy cập;
Tăng tốc máy chủ HTTP; SNMP;
Caching bản ghi DNS [4].
Squid có khả năng chia sẻ dữ liệu giữa những cache với nhau, việc chia sẻ này mang lại những lợi ích như sau:
Nếu số lượng máy khách truy cập internet thông qua proxy càng nhiều thì càng tăng khả năng yêu cầu truy cập dữ liệu đã có trong cache (cache hit);
Giảm tải cho đường truyền;
Khi thiết lập cân bằng tải giữa các cache với nhau sẽ tránh được trùng lặp dữ liệu trong các cache dẫn đến dung lượng đĩa cứng dành cho việc lưu trữ cache sẽ giảm [4].
2.2.3. Tùy chỉnh Squid
Squid cung cấp những tùy chỉnh và chức năng được lưu tại các thư mục chính sau:
/usr/sbin: Lưu những thư viện của Squid.
/etc/squid: Lưu các tập tin cấu hình chính củaSquid. /var/log/squid: Lưu các tập tin log của Squid.
Bảng 2. Ví dụ cấu hình squid.conf để chặn truy cập
Lệnh Mô tả
Lệnh Mô tả urlpath_regex “/etc/squid/chantai.file” http_access deny chantaixuong chantai.file, cụ thể: \.[Ee][Xx][Ee]$ \.[Aa][Vv][Ii]$ \.[Mm][Pp]3$
Sau đó, không cho phép tải trong danh sách “chantaixuong” đã được định nghĩa ở trên, cụ thể với nội dung trên không cho phép tải các tập tin có đuôi mở rộng là .exe, .mp3 và .avi acl camtruycap youtube.com mp3.zing.vn http_access deny camtruycap
Định nghĩa danh sách “camtruycap” gồm các địa chỉ youtube.com và mp3.zing.vn
Không cho phép truy cập trong danh sách “camtruycap” đã được định nghĩa ở trên, cụ thể chặn truy cập các trang youtube.com và mp3.zing.vn
acl giochophep time M T W H F 8:00-17:00 http_access deny !giochophep
Định nghĩa danh sách “giochophep” là từ 8:00 đến 17:00 các ngày từ thứ 2 đến thứ 6
Không cho phép truy cập proxy trong thời gian ngoài danh sách “giochophep”
acl localnet src 192.168.1.0/24
acl giochophep time M T W H F 8:00-17:00 acl dschophep 192.168.1.111 http_access allow dschophep Định nghĩa các danh sách:
localnet: địa chỉ gồm dải IP 192.168.1.0/24;
giochophep: thời gian từ 8:00 đến 17:00 các ngày từ thứ 2 đến thứ 6;
dschophep: địa chỉ gồm IP 192.168.1.111.
Cho phép địa chỉ trong danh sách “dschophep” truy cập không giới hạn
Lệnh Mô tả
http_access allow localnet giochophep
trong “giochophep”
2.2.4. gu n t c h ạt đ ng Squid
Squid xác định những yêu cầu từ máy khách và quyết định đáp ứng hay không đáp ứng, nếu yêu cầu được đáp ứng, Squid sẽ kết nối với máy chủ thật thay cho máy khách và tiếp tục chuyển tiếp đến những yêu cầu từ máy khách đến máy chủ thật, cũng như đáp ứng những yêu cầu của máy chủ thật đến máy khách. Vì vậy, Squid giống cầu nối trung gian giữa máy chủ và máy khách.
Bên cạnh việc chuyển tiếp các yêu cầu từ phía máy khách, Squid cũng sẽ đồng thời lưu lại trên ổ đĩa những dữ liệu được trả về từ các máy chủ trên interner gọi là caching (thường là nội dung các website, các tập tin…). Nếu trong thời gian hiệu lực mà nhiều máy khách cùng yêu cầu một nội dung thì Squid sẽ ngay lập tức đáp ứng lại những yêu cầu từ phía máy khách bằng dữ liệu trong cache [4].
2.3. Apache Traffic Server
2.3.1. Gi i thiệu Apache Traffic Server
Apache Traffic Server là một proxy có khả năng caching rất hiệu quả được phát triển bởi Inktomi từ năm 1995, ban đầu có tên là Inktomi Trafic Server. Sau đó, vào năm 2002 được Yahoo mua lại, phát triển thành Yahoo Traffic Server và ứng dụng rộng rãi trong các trung tâm dữ liệu của Yahoo.
Hình 11 trên cho thấy lịch sử phát triển của ATS từ một phần mềm thương mại, tháng 11 năm 2009, Yahoo cung cấp mã nguồn của Traffic Server cho Apache Software Foundation (bây giờ là Apache TLP) và đổi tên thành Apache Traffic Server.
ATS được sử dụng trong các hệ thống của Yahoo để quản lý lưu lượng, quản lý phiên, quản lý cấu hình, cân bằng tải và định tuyến cho toàn bộ hệ thống điện toán đám mây của Yahoo [1].
2.3.2. Tính năng Apache Traffic erver
ATS không chỉ là một HTTP proxy và giải pháp bộ nhớ đệm, ATS còn cung cấp một bộ khung máy chủ (server framework) để nhanh chóng triển khai các máy chủ dịch vụ khác. Với vai trò là HTTP proxy, ATS nằm giữa các máy khách và máy chủ đồng thời cung cấp các chức năng khác như: caching, định tuyến yêu cầu, lọc và cân bằng tải. Các website thường sử dụng máy chủ đệm (caching server) để cải thiện thời gian phản hồi các yêu cầu bằng cách lưu các website, dịch vụ, các thành phần của website (hình ảnh, JavaScript, CSS) trên caching server. ATS được một số tập đoàn và nhà cung cấp dịch vụ internet sử dụng như forward proxy hoặc intercepting proxy để bảo vệ người dùng trước các nội dung độc hại và tăng tốc độ truy cập các website phổ biến.
ATS có tốc độ rất nhanh, nó được thiết kế hoạt động trên một máy chủ đa luồng hướng sự kiện nên có hiệu năng rất cao khi cài đặt các máy chủ đa lõi hiện nay. Với một bộ xử lý 4 nhân 1,86 GHz, ATS có thể xử lý hơn 30.000 yêu cầu/giây cho một số lưu lượng nhất định.
ATS có khả năng mở rộng rất cao hỗ trợ chia sẻ các nội dung tải, Yahoo! đã bổ sung plugin có khả năng ánh xạ các URL, định tuyến yêu cầu tới các dịch vụ khác nhau dựa trên cookies, cho phép caching cả yêu cầu xác thực và sửa đổi các yêu cầu dựa trên tiêu đề gói. Yahoo! cũng đã thay thế việc sử dụng bộ nhớ đệm bằng plugin có thể hoạt động cả trên các giao thức như FPT, SMTP, SOCKS, RTSP.
Năm 2009, ATS được sử dụng trong các hệ thống của Yahoo! để cung cấp hơn 30 tỷ nội dung web/ngày với hơn 400 TB dữ liệu. ATS được sử dụng với vai trò là proxy và bộ nhớ đệm cho các dịch vụ như Yahoo! Front Page, Mail, Sports, Search, News và Finance [1].
2.3.3. Tùy chỉnh ATS
ATS cung cấp các tập tin cấu hình tại đường dẫn /usr/local/etc/trafficserver/, cụ thể [1]:
cache.config: định nghĩa cách ATS cache các đối tượng web với những lựa chọn sau:
+ Không cache các đối tượng từ các địa chỉ IP được chỉ định; + Thời gian lưu giữ của từng đối tượng trong cache;
+ Thời gian làm mới các đối tượng trong cache (max–age); + Bỏ qua chức năng chặn cache từ máy chủ.
congestion.config: cho phép cấu hình ATS dừng chuyển tiếp các yêu cầu dạng HTTP đến các máy chủ gốc khi các máy chủ gốc bị nghẽn và gửi thông điệp đến máy khách để thực hiện lại yêu cầu đến máy chủ gốc sau. Các lựa chọn trong tập tin cấu hình này:
+ Máy chủ mà ATS theo dõi tình trạng nghẽn theo địa chỉ IP hoặc hostname;
+ Thời gian chờ mà ATS sử dụng để xác minh tính trạng nghẽn của máy chủ;
+ Thông điệp mà ATS gửi đến máy khách khi máy chủ bị nghẽn;
hosting.config: xác định các volume đĩa mà máy chủ gốc hoặc quản trị domain sẽ quản lý và giới hạn tài nguyên ổ đĩa sử dụng.
icp.config: định nghĩa các ICP peer (bao gồm ICP cha và các ICP con); ip_allow.config: kiểm soát các máy khách truy cập đến ATS theo dải địa
chỉ IP;
log_hosts.config: danh sách các máy chủ sẽ kiểm soát và ghi log các truy cập qua giao thức HTTP. Nếu sử dụng mô hình ATS phân tán, cần cấu hình tập tin này giống nhau trên tất cả các nút ATS.
logs_xml.config: xác định các thông tin trong tập tin log dưới dạng XML. parent.config: xác định các proxy cha mà ATS sử dụng để kế thừa cache; plugin.config: quản lý các plugin sẽ được nạp vào ATS
records.config: đây là tập tin cấu hình chính gồm danh sách rất nhiều thông số được sử dụng bởi ATS: cách thức hoạt động của proxy, DNS, RAM cache, bảo mật, người dùng, tài nguyên CPU sử dụng …
remap.config: chưa các luật chuyển mà ATS sử dụng bao gồm:
+ Chuyển yêu cầu URL đến máy chủ gốc khi ATS đóng vai trò máy chủ proxy ngược;
+ Chuyển ngược lại dữ liệu từ máy chủ gốc trả lời các yêu cầu xác định thông qua tiêu đề của yêu cầu;