TCP SYN Flood, Established Bit, TCP Intercept
Kiểu tấn công TCP SYN flood là một kiểu tấn công trực tiếp vào máy chủ bằng cách tạo ra một số lượng lớn các kết nối TCP nhưng không hoàn thành các kết nối này.
Phía kẻ tấn công sẽ khởi tạo nhiều TCP, trong mỗi kết nối chỉ để cờ TCP SYN. Máy chủ sẽ gửi lại trả lời vớI TCP SYN và ACK. Nhưng sau đó máy tấn công đơn giản là không trả lời thông điệp thứ ba như mong đợi của server theo tiến trình bắt tay ba chiều. Server lúc này sẽ tốn bộ nhớ và tài nguyên trong khi chờ các phiên TCP timeouts hoặc trước khi các kết nối đang thiết lập dang dở được dọn dẹp.
Máy server lúc này có thể từ chối các kết nối TCP khác và các thiết bị cân bằng tải trong các server farm lúc này có thể chia tải không cân bằng. Các firewall có hỗ trợ cơ chế stateful có thể ngăn ngừa kiểu tấn công TCP SYN attack này.
Kiểu tấn công SYN flood vẫn hiệu quả ngày nay là nhờ ba nguyên nhân:
- Các gói tin SYN là một phần của lưu lượng bình thường, hàng ngày. Vì vậy rất khó cho các thiết bị có thể lọc kiểu lưu lượng này.
- Các gói tin SYN thường không yêu cầu nhiều băng thông để khởi động tấn công bởi vì kích thước khá nhỏ.
- Các gói tin SYN có thể bị spoofed bởi vì không cần các thông điệp trả lời gửi ngược về đích. Kết quả là, bạn có thể chọn các địa chỉ IP ngẫu nhiên để khởi động tấn công, làm cho các tay quản trị càng khó lọc bỏ các gói tin này.
Phát hiện kiểu tấn công DoS
Việc phát hiện kiểu tấn công DoS thì thường dễ thấy, nhưng các kiểu tấn công này thường khó phát hiện lúc đầu. Các triệu chứng thường là:
- Các hoạt động mạng tăng cao.
- CPU của router tăng cao.
- Không trả lời từ các host.
- Các máy bị treo ở vài thời điểm.
Một cách để ngăn ngừa kiểu tấn công SYN attack là đơn giản loại bỏ các gói TCP header trong đó chỉ có cờ SYN được thiết lập. Nói cách khác, loại bỏ tất cả các gói tin đầu tiên trong một kết nối TCP mới. Trong nhiều trường hợp, một router không nên cho phép các kết nối TCP được thiết lập bởi client. Trong trường hợp này, việc lọc các TCP segment ban đầu giúp ngăn ngừa SYN attack.
Cisco IOS ACLs không thể match trực tiếp cờ TCP SYN. Tuy nhiên một ACL có thể dùng từ khóa establised để tìm ra những tcp segment có cờ ACK được thiết lập. Từ khóa established có thể match tất cả các TCP segment ngoại trừ TCP segment đầu tiên trong một kết nối mới. Cấu hình dưới đây sẽ dùng trên R1 để từ chối những yêu cầu kết nối mới từ Internet đi vào mạng bên trong ASN1.
Dòng ACE đầu tiên sẽ lựa ra các phân đoạn TCP không phảI là segment đầu tiên và cho phép các segment này. Dòng ACE thứ hai sẽ lựa ra tất cả các TCP segment, nhưng vì tất các các segment không phảilà đầu tiên đã dính vớI dòng đầu tiên, dòng thứ hai này sẽ chỉ so trùng vớI các segment đầu tiên.
ACL hoạt động tốt khi client nằm bên ngoài mạng không được phép tạo kết nối TCP vào mạng bên trong. Tuy nhiên trong những trường hợp các kết nối TCP vào bên trong là được phép, ACL này không thể được dùng. Một đặc điểm khác của CiscoIOS được gọi là TCP intercept cho phép các kết nối TCP đi vào mạng nhưng giám sát các kết nối này để chống kiểu tấn công TCP SYN. TCP Intercept hoạt động trong hai chế độ. Trong chế độ watch, nó theo dõi thông tin trạng thái của kết nốI TCP match với một ACL. Nếu kết nối TCP không hoàn bắt tay hai chiều trong một khoảng thời gian, TCP intercepts sẽ gửi một thông điệp TCP reset đến máy server, dọn dẹp kết nối. Nó cũng sẽ đến số kết nối mới trong một khoảng thời gian và nếu có một số lớn kết nối trong một giây (“lớn” có giá trị mặc định là 1100), router sẽ tạm thời lọc các yêu cầu thiết lập TCP mới.
Trong chế độ intercept, router sẽ trả lời đến các yêu cầu thiết lập TCP thay vì chuyển các yêu cầu này về server. Sau đó, nếu quá trình bắt tay 3 lần hoàn thành, router sẽ tạo ra một kết nối giữa nó và server. Ở thời điểm này, router đã nối chặt hai kết nối với nhau. Chế độ này làm tốn nhiều tải nhưng bảo vệ tốt hơn cho server.
Các lệnh dưới đây sẽ bật cơ chế TCP intercept cho những gói tin so trùng với ACL match-tcp-from-internet. Ngoài ra, chế độ được thiết lập là chế độ watch, còn chế độ mặc định là intercept. Cuối cùng, lệnh watch timeout đã được đưa về chế độ mặc định là 30 giây. Nếu kết nối TCP vẫn trong tình trạng không hoàn tất, cơ chế TCP intercept sẽ khởi động việc hủy kết nối.
ACL sẽ lựa ra tất cả các gói tin gửi đến địa chỉ 1.0.0.0/8 và dùng TCP. ACL này sẽ tham chiếu đến các lệnh ip tcp intercept-list ở trên.
Chú ý rằng ACL không được áp dụng vào bất kỳ cổng nào.
Stateful firewall chỉ ra một loại fw có khả năng duy trì các thông tin về các kết nối đang đi xuyên qua nó. Loại fw này có thể cho phép hoặc loại bỏ các gói tin dựa vào gói tin trước đó trong một dòng dữ liệu hoặc trong một kết nối. Kỹ thuật này còn được gọi là lọc gói tin động (dynamic packet filtering).
Kỹ thuật này thì ít phức tạp hơn, tuy nhiên lại mạnh hơn kiểu lọc gói tin thông thường (ví dụ như dùng ACL).
Chức năng này giúp cho router có nhiều tính năng bảo mật hơn, vì bình thường, các router không có duy trì các thông tin trạng thái. Nghĩa là, router kiểm tra từng gói tin đi qua nó một cách riêng lẻ mà không có tham khảo đến các gói tin đã tồn tại trước đó.
Stateful fw dùng các bảng trạng thái để phân tích một cách thông minh các gói tin. Ví dụ, một người dùng gửi ra một gói tin FTP request. FW sẽ phân tích các các gói tin FTP đang đi vào để kiểm tra xem các gói tin này có liên quan đến gói tin FTP request trước đây hay không.
Kiểu tấn công TCP SYN flood là một kiểu tấn công trực tiếp vào máy chủ bằng cách tạo ra một số lượng lớn các kết nối TCP nhưng không hoàn thành các kết nối này.
Phía kẻ tấn công sẽ khởi tạo nhiều TCP, trong mỗi kết nối chỉ để cờ TCP SYN. Máy chủ sẽ gửi lại trả lời vớI TCP SYN và ACK. Nhưng sau đó máy tấn công đơn giản là không trả lời thông điệp thứ ba như mong đợi của server theo tiến trình bắt tay ba chiều. Server lúc này sẽ tốn bộ nhớ và tài nguyên trong khi chờ các phiên TCP timeouts hoặc trước khi các kết nối đang thiết lập dang dở được dọn dẹp.
Máy server lúc này có thể từ chối các kết nối TCP khác và các thiết bị cân bằng tải trong các server farm lúc này có thể chia tải không cân bằng. Các firewall có hỗ trợ cơ chế stateful có thể ngăn ngừa kiểu tấn công TCP SYN attack này.
Kiểu tấn công SYN flood vẫn hiệu quả ngày nay là nhờ ba nguyên nhân:
- Các gói tin SYN là một phần của lưu lượng bình thường, hàng ngày. Vì vậy rất khó cho các thiết bị có thể lọc kiểu lưu lượng này.
- Các gói tin SYN thường không yêu cầu nhiều băng thông để khởi động tấn công bởi vì kích thước khá nhỏ.
- Các gói tin SYN có thể bị spoofed bởi vì không cần các thông điệp trả lời gửi ngược về đích. Kết quả là, bạn có thể chọn các địa chỉ IP ngẫu nhiên để khởi động tấn công, làm cho các tay quản trị càng khó lọc bỏ các gói tin này.
Phát hiện kiểu tấn công DoS
Việc phát hiện kiểu tấn công DoS thì thường dễ thấy, nhưng các kiểu tấn công này thường khó phát hiện lúc đầu. Các triệu chứng thường là:
- Các hoạt động mạng tăng cao.
- CPU của router tăng cao.
- Không trả lời từ các host.
- Các máy bị treo ở vài thời điểm.
Một cách để ngăn ngừa kiểu tấn công SYN attack là đơn giản loại bỏ các gói TCP header trong đó chỉ có cờ SYN được thiết lập. Nói cách khác, loại bỏ tất cả các gói tin đầu tiên trong một kết nối TCP mới. Trong nhiều trường hợp, một router không nên cho phép các kết nối TCP được thiết lập bởi client. Trong trường hợp này, việc lọc các TCP segment ban đầu giúp ngăn ngừa SYN attack.
Cisco IOS ACLs không thể match trực tiếp cờ TCP SYN. Tuy nhiên một ACL có thể dùng từ khóa establised để tìm ra những tcp segment có cờ ACK được thiết lập. Từ khóa established có thể match tất cả các TCP segment ngoại trừ TCP segment đầu tiên trong một kết nối mới. Cấu hình dưới đây sẽ dùng trên R1 để từ chối những yêu cầu kết nối mới từ Internet đi vào mạng bên trong ASN1.
Dòng ACE đầu tiên sẽ lựa ra các phân đoạn TCP không phảI là segment đầu tiên và cho phép các segment này. Dòng ACE thứ hai sẽ lựa ra tất cả các TCP segment, nhưng vì tất các các segment không phảilà đầu tiên đã dính vớI dòng đầu tiên, dòng thứ hai này sẽ chỉ so trùng vớI các segment đầu tiên.
Code:
[I]ip access-list extended prevent-syn permit tcp any 1.0.0.0 0.255.255.255 established deny tcp any 1.0.0.0 0.255.255.255 permit (whatever) ! interface s0/0 ip access-group prevent-syn in[/I]
Trong chế độ intercept, router sẽ trả lời đến các yêu cầu thiết lập TCP thay vì chuyển các yêu cầu này về server. Sau đó, nếu quá trình bắt tay 3 lần hoàn thành, router sẽ tạo ra một kết nối giữa nó và server. Ở thời điểm này, router đã nối chặt hai kết nối với nhau. Chế độ này làm tốn nhiều tải nhưng bảo vệ tốt hơn cho server.
Các lệnh dưới đây sẽ bật cơ chế TCP intercept cho những gói tin so trùng với ACL match-tcp-from-internet. Ngoài ra, chế độ được thiết lập là chế độ watch, còn chế độ mặc định là intercept. Cuối cùng, lệnh watch timeout đã được đưa về chế độ mặc định là 30 giây. Nếu kết nối TCP vẫn trong tình trạng không hoàn tất, cơ chế TCP intercept sẽ khởi động việc hủy kết nối.
Code:
[I]ip tcp intercept-list match-tcp-from-internet ip tcp intercept mode watch ip tcp intercept watch-timeout 20[/I]
Code:
[I]ip access-list extended match-tcp-from-internet permit tcp any 1.0.0.0 0.255.255.255[/I]
Code:
[I]interface s0/0 ! Note: there is no ACL enabled on the interface![/I]
Kỹ thuật này thì ít phức tạp hơn, tuy nhiên lại mạnh hơn kiểu lọc gói tin thông thường (ví dụ như dùng ACL).
Chức năng này giúp cho router có nhiều tính năng bảo mật hơn, vì bình thường, các router không có duy trì các thông tin trạng thái. Nghĩa là, router kiểm tra từng gói tin đi qua nó một cách riêng lẻ mà không có tham khảo đến các gói tin đã tồn tại trước đó.
Stateful fw dùng các bảng trạng thái để phân tích một cách thông minh các gói tin. Ví dụ, một người dùng gửi ra một gói tin FTP request. FW sẽ phân tích các các gói tin FTP đang đi vào để kiểm tra xem các gói tin này có liên quan đến gói tin FTP request trước đây hay không.