KHẢO SÁT MỘT SỐ CÁCH
DETECT FIREWALL RULES
I. Giới thiệu:
Khi xây dựng các server dịch vụ, việc bảo vệ và quản lý các kết nối đến server là cần thiết. Để làm điều này, nhà quản trị sẽ thiết lập một firewall mục đích chặn lọc các luồng dữ liệu không hợp lệ đến với các server.
Bạn muốn kiểm tra firewall cho phép những kết nối nào vào trong hệ thống, bài viết nhỏ sau giúp bạn tìm hiểu cách thức truyền dữ liệu và kiểm tra một số rule trên firewall.
II. Tóm lược một số kiến thức cơ bản:
- Bộ giao thức TCP/IP:
Theo mô tả trên, các ứng dụng nhận sẽ dữ liệu từ tầng Transport, và 2 giao thức được dùng tại tầng này là TCP và UDP. Trong đó TCP là giao thức đáp ứng độ tin cậy nên được dùng chính trong các ứng dụng cần sự đảm bảo về dữ liệu.
Thông tin về TCP Header:
Trên 1 Server có thể có nhiều ứng dụng, để phân biệt ứng dụng nào sẽ nhận luồng dữ liệu từ tầng transport đưa lên, mỗi ứng dụng sẽ đăng ký 1 cổng (port). Máy client khi gửi yêu cầu sẽ đóng gói giá trị TCP port destination tương ứng để TCP sẽ chuyển đến đúng ứng dụng tại Server.
3-Way Handshake: TCP là giao thức hướng kết nối, do đó trước khi truyền dữ liệu 2 hệ thống cần thiết lập kết nối trước, quá trình này thực hiện qua 3 bước, với các giá trị cờ được dùng (xem hình trên):
o Kết nối được thiết lập (Server mở port):
o Kết nối không thể thiết lập (Server đóng port)
Thông thường để chỉ cho phép những ứng dụng nào được sử dụng, người quản trị sẽ thiết lập trên Firewall các rule giới hạn hoặc chỉ cho phép những Port tương ứng.
III. Thực hiện:
Mô hình:
Với sơ đồ trên có thể thấy mạng internal có thể có nhiều ứng dụng và firewall có thể mở nhiều cổng để cho phép kết nối đến. Vậy làm thế nào để biết bao nhiêu cổng được cho phép?!
Về nguyên lý, để biết được các chính sách này ta có thể chọn 1 server/device bên trong để truyền vào một packet với destination port muốn kiểm tra? Nếu firewall chặn, packet sẽ bị drop, nếu cho phép packet sẽ đến với server/device bên trong, điều quan trọng là phải xác nhận được dữ liệu đã qua firewall. Với nguyên lý trong quá trình bắt tay 3 bước trên ta có thể dễ dàng xác nhận thông qua 1 thông tin phản hồi: SYN+ACK hay RST+ACK.
Xét về nguyên lý hoạt động, Firewall có thể chia làm 4 nhóm sau:
- IP Packet Filters
- Circuit Level Gateways
- Application Level Gateways
- Stateful multilayer inspection firewalls
Tùy thuộc loại firewall mà cách thức có thể khác nhau
1. IP Packet Filters:
* Một số đặc điểm của loại firewall này:
- Đây là firewall làm việc trên tầng Network
- Firewall có chức năng kiểm soát thông tin Protocol, Source IP, Destination IP và Port number.
- Đây là tính năng sẵn có trên hầu hết các Router, không cần đầu tư thêm hệ thống và có chi phí thấp.
Tóm lại, Firewall loại này chỉ thực hiện kiểm tra từng packet đơn, nếu xét thấy thỏa điều kiện tại lớp 3, và lớp 4 là cho qua.
Thực hiện kiểm tra trên Firewall sử dụng IP Packet filter trên Windows:
- Cấu hình dùng RRAS cho phép 3 port (80,3389,25):
Kiểm nghiệm bằng nmap:
Ta gửi vào 4 packet với 4 port: 80,25,110 và 3389. Trong đó có 3 port được trả lời 1 port filter tương ứng với các cổng mở bởi firewall.
Đối với loại firewall này, thay vì dùng cờ SYN sẽ theo dõi kết quả khi thử nghiệm với cờ ACK.
Kết quả khi dùng cờ ACK đến các port đóng và mở:
Ta nhận thấy kết quả trả về đều là RST khi đến open port (80) hay close port(110). Vậy thay vì nhận dạng qua 2 loại kết quả trả về ta dùng cờ ACK để xác nhận chỉ qua cờ RST.
2. Đối với Firewall còn lại:
- Circuit Level Gateways: Firewall làm việc tại tầng TCP, nó theo dõi session và quá trình TCP handshake và xác định các gói tin hợp lệ.
- Application Level Gateways: Firewall còn được gọi là proxies, nó có thể lọc thông tin tại tầng ứng dụng. Do đó có thể lọc các command của ứng dụng. Vd: HTTP POST.GET
- Stateful multilayer inspection firewalls: đây là firewall kết hợp bởi tất cả các tính năng của firewall trên.
Thực hiện kiểm tra trên Firewall sử dụng ISA Server 2006:
Cấu hình:
- Thay đổi relationship giữa Internal và External: Route
- Tạo rule: allow HTTP (80), SMTP (25), RDP(3389)
Kiểm tra bằng nmap với ACK:
Ta nhận thấy không thể dùng ACK vì các packet đều bị firewall drop. Do các session được theo dõi chặt chẽ, nếu chưa thực hiện việc handshake thì packet này sẽ bị firewall chặn:
- Thay ACK bằng SYN:
Ngoài việc dùng các giá trị cờ một kỹ thuật khác được dùng là TTL. Cách thức này là tạo ra một packet với TTL=n+1, và địa chỉ đích là server với TTL đến được là n+m. Do sau khi đến hop n+1 TTL=0 nên thiết bị sẽ trả về với message ICMP_TIME_EXCEEDED đây cũng là kỹ thuật dùng trong traceroute. Công cụ Firewalking được phát triển bởi Mike Schiffman và David Goldsmith dùng kỹ thuật này.
Thử nghiệm với firewalk thấy có 3 port phản hồi từ Router:
Cảm ơn bạn đã đọc bài viết!
RefLink: http://long.nhatnghe.vn/Baiviet/firewall.htm