Как да защитим Apache от счупване причинено от Slowloris

В предната публикация (Как да счупим Apache със Slowloris) обясних какво е Slowloris , за какво се ползва и  как работи т.е. как се чупи Apache с него. Както е всеизвестно най- лесно е да се счупи нещо(като се ползва готов инструмент разбира се), но също интересно е и да имаме добри превантимни мерки.

За защита на Apache от Slowloris и други подобни DoS атаки ще използваме един сравнително млад модул за Apache: qos (http://sourceforge.net/projects/mod-qos/) .

mod_qos е quality of service(QOS) модул за Apache. Той изпълнява механизми за контрол които могат да предоставят различни приоритети на различните заявки и да контролира достъпа до сървъра на базата на наличните ресурси

1. Ще инсталираме необходимите ни пакети за компилацията
apt-get install apache2-threaded-dev gcc

2. Изтегляме qos модула
cd /tmp/
wget http://freefr.dl.sourceforge.net/project/mod-qos/mod-qos/9.7/mod_qos-9.7.tar.gz

3. Ще го разархивираме и компилираме
tar zxvf mod_qos-9.7.tar.gz
cd mod_qos-9.7/apache2/
apxs2 -i -c mod_qos.c

Става ясно, че се е инсталирал във „/usr/lib/apache2/modules“

4. Сега ще направим конфигурация на модула
cd /etc/apache2/mods-available/
vim qos.load

LoadModule qos_module /usr/lib/apache2/modules/mod_qos.so

vim qos.conf

## QoS Settings
<IfModule mod_qos.c>
# handles connections from up to 100000 different IPs
QS_ClientEntries 100000
# will allow only 50 connections per IP
QS_SrvMaxConnPerIP 50
# maximum number of active TCP connections is limited to 256
MaxClients              256
# disables keep-alive when 70% of the TCP connections are occupied:
QS_SrvMaxConnClose      180
# minimum request/response speed (deny slow clients blocking the server, ie. slowloris keeping connections open without requesting anything):
QS_SrvMinDataRate       150 1200
# and limit request header and body (carefull, that limits uploads and post requests too):
# LimitRequestFields      30
# QS_LimitRequestBody     102400
</IfModule>

5. Сега зареждаме qos модула и рестартираме apache:

a2enmod qos
/etc/init.d/apache2 restart

Сега системата ни е защитена от Slowloris. За целта от предния урок може да тествате да я атакувате и ще се съгласите.

PS: Надявам се, че ще има благодарни адмнистратори които са го пропуснали в близките 6-7 месеца :(случва се на всеки затова го правя, за да се информираме взаимно)

Категория:

9 отговора

  1. Аватарът на Milen Nedelchev

    Най ме нерви гадната ти „СЕЛО“ оптимизация 😀
    Не за друго, еми не е добре много хора да научават как се фикс-ва… смисъл такъв, че трябва да има терор 😛

    1. Аватарът на admin

      haha :))

  2. Аватарът на Drago
    Drago

    Полезно 🙂

  3. Аватарът на Grigomir

    хаха, тва е пълна дупка за апачето, има хиляди други варианти за конекшън защитата. Тая дупка ти отваря още 100 такива:) браво за тоя който го е измислил,,

  4. Аватарът на Иван Х
    Иван Х

    А мерси ! Че зе да ми писва вече от нагли дечурлига …

  5. Аватарът на 777
    777

    за какво изобщо ще инсталират нови модули, които не са особено добре проверени и за какво ще пускат точно tcpdump като могат да видят с netstat кое IP отваря по толкова много конекции към apache и да го блокират за една секунда, без да се опасяват че ще счупят уеб сървъра?

    1. Аватарът на admin

      Със netstat ще видиш едно, а с tcpdump можеш да видиш доста по детайлна информация за сорса на изпратените пакети или с други думи това е лично предпочитание. На които не му допада има толкова много тулки за тази цел 🙂

  6. Аватарът на Keeper
    Keeper

    Да не би бутането на Slowloris да е единствения начин..

  7. Аватарът на Станимир Димов

    Браво! Много добра работа беше ми наистина полезно, че ми писна да ми събарят сайта!

Logged in as {{omniform_current_user_display_name}}. Edit your profile. Log out? Required fields are marked *

Your email address will not be published. Required fields are marked *

Comments are closed.

You must be logged in to post a comment.