Як найкраще захиститися від атаки DOS від "slowloris" проти веб-сервера Apache?


32

Нещодавно сценарій під назвою "slowloris" привернув увагу. Основна концепція того, що робить slowloris, - це не нова атака, але, враховуючи недавню увагу, я спостерігав невелике зростання нападів на деякі наші веб-сайти Apache.

Наразі стовідсоткової захисту від цього не існує.

Найкраще рішення, яке ми визначили (поки що) - збільшити MaxClients.

Це, звичайно, не тільки збільшує вимоги до комп'ютера зловмисника і фактично не захищає сервер на 100%.

В іншому звіті вказується, що використання зворотного проксі (наприклад, Perlbal) перед сервером Apache може допомогти запобігти атаці.

Використання mod_evasive для обмеження кількості з'єднань від одного хоста та використання mod_security для відмови у запитах, схожих на те, що їх видав slowloris, здається, найкраща захист до цих пір.

Хтось із ServerFault зазнав таких атак? Якщо так, то які заходи ви вживали для захисту / запобігання?

ПРИМІТКА. Це питання стосується серверів Apache, оскільки я розумію, що сервери Windows IIS не впливають.

Відповіді:


22

Я пережив таку атаку ... посеред літнього літа (23 червня), де ви повинні бути в сільській місцевості і пити пиво:>

Я поставив Apache позаду Varnish , який не тільки захистив від slowloris, але і досить прискорив веб-запити.

Також iptablesмені допомогли:

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

Це правило обмежує один хост до 20 підключень до порту 80, що не повинно впливати на нешкідливого користувача, але зробить slowloris непридатним для використання одного хоста.


4
+1 для правила iptables.
Тім

1
Просто голови вгору. "Поза", лак не кешує сторінки, якщо він отримав файли cookie. Щоб обійти це, потрібно виконати певну налаштовану конфігурацію. Приклади доступні на їхньому сайті та їх легко здійснити.
Девід

Лак цілком програмований, тому ви, можливо, зможете налаштувати його, щоб побачити, що відбувається і з ним боротися. Однак я думаю, що, поставивши проксі-сервер перед apache, ви просто пересунете проблему з веб-сервера на проксі. Проблема все ще є, просто в іншому місці. З'єднання / порти все ще будуть використані. Я б почав із переліченого правила iptables (або еквівалента для вашого брандмауера), потім перегляну проксі.
Девід

1
Проблема з атакою sloworis обмежується багатомодерною моделлю apache (та кількома іншими веб-серверами, які використовують подібну модель). Лак повинен це пережити.
Cian


3

Якщо всі ваші модулі apache безпечні для потоків, slowloris можна перемогти, просто переключившись на MPM-файли подій або робочих. ref: тут


0

Зараз здається, що більше нічого не можна робити, щоб обмежити максимум одночасних з'єднань на ip на сервері.


0

Ви можете спробувати користувацький патч. Він змінює час очікування на основі завантаження, на якому знаходиться сервер, але, враховуючи його стан, ви, можливо, не захочете використовувати його на виробничій машині без серйозних тестувань. Погляньте тут.


0

брандмауер на базі iptable повинен захищати вас від декількох з'єднань від 1 ip.


0

Якщо це допомагає комусь іншому, іноді ви можете подолати це питання за допомогою Apache 2.2.15 або новішої версії за допомогою наступної конфігурації:

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

Більше інформації тут: https://httpd.apache.org/docs/2.2/mod/mod_reqtimeout.html

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.