Linux: ngăn lũ TCP đi


9

Tôi chạy vài trăm máy chủ web phía sau bộ cân bằng tải, lưu trữ nhiều trang web khác nhau với rất nhiều ứng dụng (trong đó tôi không có quyền kiểm soát). Khoảng một tháng một lần, một trong những trang web bị tấn công và một kịch bản lũ lụt được tải lên để tấn công một số ngân hàng hoặc tổ chức chính trị. Trước đây, đây luôn là các trận lũ UDP được giải quyết hiệu quả bằng cách chặn lưu lượng UDP đi trên máy chủ web riêng lẻ. Hôm qua, họ đã bắt đầu làm ngập một ngân hàng lớn của Hoa Kỳ từ các máy chủ của chúng tôi bằng cách sử dụng nhiều kết nối TCP đến cổng 80. Vì các loại kết nối này hoàn toàn hợp lệ cho các ứng dụng của chúng tôi, chỉ cần chặn chúng là một giải pháp không thể chấp nhận được.

Tôi đang xem xét các lựa chọn thay thế sau đây. Bạn muốn giới thiệu cái nào? Bạn đã thực hiện những điều này, và làm thế nào?

  • Giới hạn đối với các gói TCP (iptables) gửi đi các gói TCP có cổng nguồn! = 80
  • Tương tự nhưng với hàng đợi (tc)
  • Tỷ lệ giới hạn lưu lượng đi trên mỗi người dùng trên mỗi máy chủ. Khá là gánh nặng hành chính, vì có khả năng 1000 người dùng khác nhau trên mỗi máy chủ ứng dụng. Có lẽ điều này: làm thế nào tôi có thể giới hạn băng thông trên mỗi người dùng?
  • Còn gì nữa không?

Đương nhiên, tôi cũng đang tìm cách để giảm thiểu khả năng tin tặc xâm nhập vào một trong các trang web được lưu trữ của chúng tôi, nhưng vì cơ chế đó sẽ không bao giờ chống nước 100%, tôi muốn hạn chế nghiêm trọng tác động của một vụ xâm nhập.

Cập nhật: Tôi hiện đang thử nghiệm các quy tắc này, điều đó sẽ ngăn chặn cuộc tấn công cụ thể này. Làm thế nào bạn sẽ đề xuất để làm cho họ chung chung hơn? Tôi có thiếu một cuộc tấn công TCP DoS đã biết khi tôi chỉ đánh giá giới hạn đối với các gói SYN không?

iptables -A OUTPUT -p tcp --syn -m limit --limit 100/min -j ACCEPT
iptables -A OUTPUT -p tcp --syn -m limit --limit 1000/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
iptables -A OUTPUT -p tcp --syn -j REJECT --reject-with tcp-reset

Chúc mừng!

Câu trả lời:


3

Các giải pháp tốt nhất có thể cho ý kiến ​​của tôi và giải pháp đã làm việc rất tốt cho tôi là giới hạn số lượng kết nối / gói cho ip đích. Đặt giới hạn ở mức hợp lý sẽ ngăn kẻ tấn công gửi một lượng lớn kết nối đến mục tiêu. Thiết lập cổng và giao thức không phải là một ý tưởng hay vì nếu kẻ tấn công gửi http lũ hôm nay, ngày mai anh ta sẽ sử dụng loại tấn công khác nhau. vì vậy, giới hạn kết nối trên mỗi ip là chung sẽ là một giải pháp cho vấn đề của bạn.

Tôi hy vọng nó sẽ giúp :)


-3

Lập trường mà tôi luôn đưa ra là một máy chủ web không nên thực hiện các kết nối TCP bên ngoài - chỉ gửi lưu lượng như một máy chủ đáp ứng các yêu cầu gửi đến. (Tôi cũng chỉ cho phép TCP gửi đến cho máy chủ web và SSH.) (Liên quan đến vấn đề này tôi cũng tin rằng một máy chủ web không bao giờ là máy chủ phù hợp để gửi thư từ đó.) các cuộc tấn công được thực hiện trên hệ thống của bạn (tin tặc không thể có được cửa sổ xterm hoặc bỏ bộ công cụ của chúng đến máy chủ của bạn).


OK, vậy làm thế nào để một trang web đi và lấy một nguồn cấp RSS từ một trang web khác, sau đó?
Michael Hampton
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.