Làm thế nào để bảo vệ tốt nhất trước một cuộc tấn công của Slow Slowisis DOS DOS chống lại máy chủ web Apache?


32

Gần đây, một kịch bản gọi là "Slowloris" đã thu hút được sự chú ý. Khái niệm cơ bản về những gì Slowloris không phải là một cuộc tấn công mới nhưng được chú ý gần đây tôi đã thấy một sự gia tăng nhỏ trong các cuộc tấn công chống lại một số trang web Apache của chúng tôi.

Hiện tại không có bất kỳ sự bảo vệ nào 100% chống lại điều này.

Giải pháp tốt nhất mà chúng tôi đã xác định (cho đến nay) là tăng MaxCl Client.

Điều này tất nhiên không làm gì hơn là tăng các yêu cầu cho máy tính của kẻ tấn công và không thực sự bảo vệ máy chủ 100%.

Một báo cáo khác chỉ ra rằng sử dụng proxy ngược (như Perlbal) trước máy chủ Apache có thể giúp ngăn chặn cuộc tấn công.

Sử dụng mod_evasive để giới hạn số lượng kết nối từ một máy chủ và sử dụng mod_security để từ chối các yêu cầu trông giống như chúng được phát hành bởi Slowloris dường như là cách phòng thủ tốt nhất cho đến nay.

Có ai trên ServerFault đã trải qua các cuộc tấn công như thế này? Nếu vậy, bạn đã thực hiện những biện pháp nào để bảo vệ / ngăn chặn nó?

LƯU Ý: Câu hỏi này dành cho máy chủ Apache vì tôi hiểu rằng máy chủ IIS của Windows không bị ảnh hưởng.

Câu trả lời:


22

Tôi đã trải qua cuộc tấn công như vậy ... vào giữa mùa hè (ngày 23 tháng 6), nơi bạn được cho là ở nông thôn và uống bia:>

Tôi đặt Apache của mình phía sau Varnish , nó không chỉ được bảo vệ khỏi Slowloris, mà còn tăng tốc các yêu cầu web khá nhiều.

Ngoài ra, iptablesđã giúp tôi:

iptables -I INPUT -p tcp --dport 80 \
         -m connlimit --connlimit-above 20 --connlimit-mask 40 -j DROP

Quy tắc này giới hạn một máy chủ ở 20 kết nối tới cổng 80, điều này sẽ không ảnh hưởng đến người dùng không độc hại, nhưng sẽ khiến Slowloris không thể sử dụng được từ một máy chủ.


4
+1 cho quy tắc iptables.
Tim

1
Chỉ cần một cái đầu lên. "Ra khỏi hộp", véc ni không lưu các trang bộ nhớ cache nếu nhận được cookie. Bạn cần phải thực hiện một số cấu hình tùy chỉnh để khắc phục điều này. Ví dụ có sẵn trên trang web của họ và rất dễ thực hiện.
David

Varnish khá lập trình, vì vậy bạn có thể định cấu hình nó để xem những gì đang xảy ra và đối phó với nó. Tuy nhiên, tôi nghĩ rằng bằng cách đặt proxy trước apache, bạn chỉ cần chuyển vấn đề từ máy chủ web sang proxy. Vấn đề vẫn còn đó, chỉ ở một nơi khác. Kết nối / cổng vẫn sẽ được sử dụng hết. Tôi sẽ bắt đầu với quy tắc iptables được liệt kê (hoặc tương đương với tường lửa của bạn) sau đó xem xét một proxy.
David

1
vấn đề với cuộc tấn công Sloworis chỉ giới hạn ở mô hình đa luồng của apache (và một số máy chủ web khác sử dụng mô hình tương tự). Varnish nên tồn tại mà.
Cian


3

Nếu tất cả các mô-đun apache của bạn là luồng an toàn, Slowloris có thể bị đánh bại chỉ bằng cách chuyển sang MPM sự kiện hoặc worker. ref: tại đây


0

Ngay bây giờ, có vẻ như không còn gì để làm điều đó giới hạn các kết nối đồng thời tối đa trên mỗi ip trên máy chủ.


0

Có một bản vá người dùng bạn có thể thử. Nó sửa đổi thời gian chờ dựa trên tải của máy chủ, nhưng xem xét trạng thái của nó, bạn có thể không muốn sử dụng nó trên máy sản xuất, mà không có một số thử nghiệm nghiêm trọng. Hãy nhìn vào đây.


0

tường lửa dựa trên iptable sẽ bảo vệ bạn khỏi nhiều kết nối từ 1 ip.


0

Nếu điều này giúp được bất kỳ ai khác, đôi khi bạn có thể khắc phục sự cố này với Apache 2.2.15 trở lên với cấu hình sau:

LoadModule reqtimeout_module modules/mod_reqtimeout.so
RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500

Thêm thông tin tại đây: https://httpd.apache.org/docs/2.2/mod/mod_Vqtimeout.html

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.