Giải pháp đối phó dò quét mạng
Như các bạn đã biết, dò quét port cung cấp một lượng lớn thông tin hữu ích cho attacker, chẳng hạn như IP, hostname, port đang mở và dịch vụ đang chạy trên port đó. Các port mở đặc biệt cung cấp phương tiện dễ dàng cho attacker đột nhập vào mạng. Tuy nhiên, ta có thể giảm thiểu khả năng bị dò quét mạng bằng cách áp dụng các biện pháp đối phó sau:
- Cấu hình tường lửa và hệ thống phát hiện xâm nhập (IDS) để phát hiện và chặn gói tin thăm dò.
- Tường lửa phải có khả năng phát hiện các thăm dò và không cho phép lưu lượng truy cập đi qua sau khi chỉ cần kiểm tra TCP header. Tường lửa có thể phân tích dữ liệu chứa trong mỗi gói trước khi cho phép lưu lượng truy cập đi qua nó.
- Chạy các công cụ quét port để xác định xem tường lửa có phát hiện chính xác hoạt động quét port hay không. Một số tường lửa có khả năng phát hiện tốt hơn những tường lửa khác. Ví dụ: nhiều tường lửa có các tùy chọn để phát hiện quét SYN, trong khi những tường lửa khác bỏ qua quét FIN.
- Đảm bảo rằng router, IDS và tường lửa được cập nhật phiên bản mới nhất.
- Sử dụng IDS như Snort (https://www.snort.org) – là một công nghệ phát hiện và ngăn chặn xâm nhập rất hữu ích, chủ yếu là do signature thường có sẵn từ cộng đồng.
- Giữ càng ít port mở càng tốt và lọc phần port còn lại, vì attacker có thể xâm nhập qua bất kỳ port nào đang mở. Sử dụng rule để chặn các port không mong muốn tại tường lửa và lọc các port sau: 135-159, 256-258, 389, 445, 1080, 1745 và 3268.
- Chặn các loại thông điệp ICMP gửi đến và tất cả các thông điệp ICMP unreachable loại 3 gửi đi tại router biên được bố trí phía trước tường lửa chính.
- Kiểm tra không gian địa chỉ IP bằng quét port TCP và UDP cũng như thăm dò ICMP để xác định cấu hình mạng và các port có thể truy cập.
- Nếu sử dụng tường lửa thương mại, cần lưu ý update lên phiên bản mới nhất, cấu hình chính xác các rule anti-spoofing.
- Sử dụng proxy để chặn các gói bị phân mảnh hoặc không đúng định dạng.
- Sử dụng hệ thống ngăn chặn xâm nhập (IPS) để xác định đối tượng dò quét cổng và đưa IP đó vào blacklist.
Giải pháp tránh Banner Grabbing
Vô hiệu hóa hoặc thay đổi banner
Một port mở cho biết rằng một dịch vụ/banner đang chạy trên đó. Khi attacker kết nối với một port mở bằng kỹ thuật banner grabbing, hệ thống sẽ hiển thị banner chứa thông tin nhạy cảm như hệ điều hành, loại máy chủ và phiên bản đang chạy. Sử dụng thông tin thu thập được, attacker xác định các lỗ hổng cụ thể để khai thác. Các biện pháp đối phó với các cuộc tấn công banner grabbing như sau:
- Hiển thị các banner giả để đánh lừa.
- Tắt các dịch vụ không cần thiết để hạn chế lộ thông tin.
- Sử dụng các công cụ masking tools để vô hiệu hóa hoặc thay đổi thông tin banner.
- Xóa các HTTP header và dữ liệu phản hồi không cần thiết, đồng thời ngụy trang server bằng cách cung cấp dấu hiệu giả.
- Đối với Apache 2.x có module mod_headers, chỉnh sửa file httpd.conf để thay đổi thông tin banner và đặt máy chủ làm New Server Name. Ngoài ra, thay đổi dòng ServerSignature thành ServerSignatureOff trong file httpd.conf.
- Sửa đổi giá trị của Server Tokens từ Full thành Prod trong httpd.conf để ngăn lộ version của máy chủ.
- Sửa đổi giá trị của Remove Server Header từ
0
thành1
trong UrlScan.ini tại C:\Windows\System32\inetserv\Urlscan. - Đánh lừa attacker bằng cách sửa đổi giá trị AlternateServerName thành các giá trị như xyz hoặc myserver.
- Tắt các phương thức HTTP như CONNECT, PUT, DELETE và OPTIONS từ web server.
- Xóa X-Powered-By header bằng tùy chọn customHeaders trong phần <system.webServer> của file web.config.
Ẩn File Extensions từ Web Pages
Phần mở rộng file (file extensions) tiết lộ thông tin về công nghệ của máy chủ đang chạy, attacker có thể sử dụng để phân tích hỗ hổng. Các biện pháp đối phó:
- Ẩn phần file extensions để che dấu công nghệ web.
- Thay thế ánh xạ ứng dụng như .asp bằng .htm, .foo, … để ngụy trang.
- Đối với Apache có thể sử dụng mod_negotiation.
- Đối với IIS có thể sử dụng các công cụ như PageXchanger để quản lý file extensions.
- Tốt nhất là không sử dụng file extension.
Kỹ thuật phát hiện giả mạo IP
Direct TTL Probes
Trong kỹ thuật này, ban đầu ta gửi một gói (ping request) đến máy đích và đợi phản hồi. Kiểm tra xem giá trị TTL trong câu trả lời có khớp với giá trị của gói bạn đang kiểm tra hay không. Nếu chúng đang sử dụng cùng một giao thức thì giá trị TTL sẽ trùng nhau. Mặc dù các giá trị TTL ban đầu khác nhau tùy theo giao thức được sử dụng. Đối với TCP/UDP, các giá trị TTL là 64 và 128; còn đối với ICMP là 128 và 255.
Nếu là một giao thức khác, thì ta nên kiểm tra số bước nhảy thực tế để phát hiện các gói giả mạo. Gói tin là gói tin giả mạo nếu TTL trả lời không khớp với TTL của gói tin. Kỹ thuật này thành công attacker ở một subnet khác với subnet của mục tiêu.
Lưu ý: Lưu lượng truy cập bình thường từ một máy có thể tương phản TTL tùy thuộc vào mẫu lưu lượng truy cập.
IP Identification Number
Ta có thể xác định các gói giả mạo bằng cách theo dõi số nhận dạng IP (IP identification – IPID) trong IP header. IPID tăng dần mỗi khi hệ thống gửi một gói. Mỗi gói IP trên mạng có một số “nhận dạng IP” duy nhất, được tăng thêm một cho mỗi lần truyền gói. Để xác định xem một gói có bị giả mạo hay không, ta cần gửi một gói thăm dò đến địa chỉ IP nguồn của gói và quan sát số IPID trong thông điệp trả lời.
Giá trị IPID trong gói phản hồi phải gần nhưng lớn hơn một chút so với giá trị IPID của gói thăm dò. Địa chỉ nguồn của gói IP bị giả mạo nếu IPID của gói phản hồi không gần với IPID của gói thăm dò.
Phương pháp này hiệu quả ngay cả khi cả attacker và mục tiêu đều nằm trên cùng một subnet.
TCP Flow Control Method
TCP có thể tối ưu hóa điều khiển luồng (flow control) trên cả đầu gửi và đầu nhận bằng thuật toán của nó. Thuật toán thực hiện kiểm soát luồng bằng nguyên tắc sliding window. Người dùng có thể kiểm soát luồng gói IP bằng trường Window Size trong TCP header. Trường này biểu thị lượng dữ liệu tối đa mà người nhận có thể nhận và lượng dữ liệu tối đa mà người gửi có thể truyền mà không cần xác nhận. Do đó, trường này giúp kiểm soát luồng dữ liệu. Người gửi sẽ ngừng gửi dữ liệu khi Window Size được đặt thành 0.
Trong kiểm soát luồng chung, người gửi nên dừng gửi dữ liệu sau khi hết window size ban đầu. Attacker không biết gói ACK chứa thông tin window size có thể tiếp tục gửi dữ liệu cho mục tiêu. Nếu mục tiêu nhận được các gói dữ liệu vượt quá window size, chúng là các gói giả mạo. Để kiểm soát luồng hiệu quả và phát hiện sớm giả mạo, kích thước window ban đầu phải rất nhỏ.
Hầu hết tấn công giả mạo xảy ra trong quá trình bắt tay 3 bước. Trong bắt tay TCP, máy chủ gửi gói SYN ban đầu sẽ đợi SYN-ACK trước khi gửi gói ACK. Để kiểm tra xem ta đang nhận được yêu cầu SYN từ một mục tiêu hợp pháp hay giả mạo, cần đặt SYN-ACK thành 0. Nếu người gửi gửi ACK với bất kỳ dữ liệu nào thì người gửi đó là người giả mạo. Điều này là do khi SYN-ACK được đặt thành 0, người gửi chỉ phải phản hồi nó bằng gói ACK mà không được có dữ liệu bổ sung.
Giải pháp đối phó với giả mạo IP
- Avoid Trust Relationships: Không xác thực dựa trên IP vì attacker có thể giả mạo dễ dàng. Do đó, nên kiểm tra tất cả các gói, ngay cả khi chúng đến từ IP tin cậy.
- Use Firewalls and Filtering Mechanisms: Tất cả các gói đến và đi phải được lọc để tránh bị tấn công và mất thông tin nhạy cảm. Tường lửa có thể hạn chế các gói độc hại xâm nhập vào mạng riêng và ngăn ngừa mất dữ liệu. Còn Danh sách kiểm soát truy cập (Access-control lists – ACL) có thể được sử dụng để chặn truy cập trái phép.
- Use Random Initial Sequence Numbers: Hầu hết các thiết bị chọn số thứ tự ban đầu (initial sequence numbers – ISN) dựa trên bộ đếm thời gian. Do đó ISN có thể dự đoán được.
- Ingress Filtering: Tính năng lọc xâm nhập ngăn lưu lượng truy cập giả mạo vào Internet. Nó được áp dụng cho router.
- Egress Filtering: Lọc đầu ra là một phương pháp nhằm ngăn chặn giả mạo IP bằng cách chặn các gói gửi đi có IP nguồn từ bên ngoài.
- Use Encryption: sử dụng mã hóa mạnh cho tất cả lưu lượng không phân biệt chủng loại và vị trí đặt máy chủ. IPSec có thể giảm đáng kể rủi ro giả mạo IP, vì cung cấp xác thực dữ liệu, tính toàn vẹn và tính bảo mật. Các phiên mã hóa phải được bật trên router để các máy chủ tin cậy có thể giao tiếp an toàn với các máy cục bộ. Nếu attacker muốn đột nhập vào một mạng được mã hóa, chúng phải giải mã toàn bộ gói tin được mã hóa, đây là một việc khó khăn. Cần, sử dụng các thuật toán mã hóa mới nhất cung cấp khả năng bảo mật mạnh mẽ.