Chroń się przed DDoS za pomocą Mod_evasive na serwerze Apache
Mod_evasive to moduł Apache, który zapewnia działanie unikowe w przypadku ataku HTTP DoS lub DDoS lub ataku brute-force. mod_evasive zgłasza obecnie złośliwą aktywność za pośrednictwem poczty elektronicznej i dziennika syslog. Moduł mod_evasive działa poprzez utworzenie wewnętrznej dynamicznej tabeli mieszającej adresów IP i URI oraz odmowę dowolnego pojedynczego adresu IP w przypadku któregokolwiek z następujących warunków:
- Żądanie tej samej strony więcej niż kilka razy na sekundę
- Wysyłanie ponad 50 jednoczesnych żądań do tego samego dziecka na sekundę
- Składanie jakichkolwiek żądań w przypadku tymczasowego wpisu na czarną listę (na liście blokowanych)
W tym samouczku omówię, jak zainstalować, skonfigurować i używać mod_evasive na serwerze Apache. W tym samouczku wykorzystano serwer Ubuntu 14.04.
Instalowanie mod_evasive
Najpierw upewnij się, że serwer Apache jest zainstalowany i uruchomiony.
Następnie możesz zainstalować moduł mod_evasive, uruchamiając:
sudo apt-get install libapache2-mod-evasivePo zainstalowaniu mod_evasive możesz zweryfikować ten moduł, uruchamiając następujące polecenia:
sudo apachectl -M | grep evasive
Jeśli mod_evasive jest włączony, zobaczysz następujące dane wyjściowe:
evasive20_module (shared)Skonfiguruj Mod_evasive
Moduł mod_evasive odczytuje swoją konfigurację z pliku „/etc/apache2/mods-enabled/evasive.conf”. Możesz łatwo dostosować moduł mod_evasive za pomocą pliku konfiguracyjnego „evasive.conf”. Domyślnie opcje konfiguracyjne mod_evasive są wyłączone, więc musisz je najpierw włączyć. Aby to zrobić, edytuj plik „evasive.conf”:
sudo nano /etc/apache2/mods-enabled/evasive.confUsuń # z następujących linii:
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
DOSEmailNotify mail@yourdomain.com
DOSLogDir "/var/log/apache2/"Zapisz plik i uruchom ponownie Apache, aby zmiany odniosły skutek:
sudo /etc/init.d/apache2 restartMożesz zmienić powyższe wartości w zależności od ilości i rodzaju ruchu, jaki musi obsłużyć Twój serwer WWW.
DOSHashTableSize: Ta dyrektywa określa, w jaki sposób mod_evasive śledzi, kto uzyskuje dostęp do czego. Zwiększenie tej liczby umożliwi szybsze przeszukanie stron, które klient odwiedził w przeszłości.
DOSPageCount: Ta dyrektywa określa, ile identycznych żądań do określonego URI może wykonać odwiedzający w przedziale DOSPageInterval.
DOSSiteCount: Jest to podobne do DOSPageCount, ale odpowiada ogólnej liczbie żądań, jakie użytkownik może wysłać do Twojej witryny w przedziale DOSSiteInterval.
DOSBlockingPeriod: Jeśli odwiedzający przekroczy limity ustawione przez DOSSPageCount lub DOSSiteCount, jego adres IP zostanie zablokowany na czas DOSBlockingPeriod. W tym czasie otrzyma błąd 403 (Zabroniony).
DOSEmailNotify: Wiadomość e-mail zostanie wysłana na podany adres e-mail za każdym razem, gdy adres IP znajdzie się na czarnej liście.
DOSLogDir: Ta dyrektywa określa lokalizację katalogu dziennika.
Testowanie Mod_evasive
Teraz czas sprawdzić, czy moduł mod_evasive działa, czy nie. Można to zrobić za pomocą skryptu perlowego „test.pl” znajdującego się w katalogu „/usr/share/doc/libapache2-mod-evasive/examples/”.
Skrypt można wykonać, uruchamiając następującą komendę:
sudo perl /usr/share/doc/libapache2-mod-evasive/examples/test.plPowinieneś zobaczyć następujące dane wyjściowe:
Skrypt wysyła 100 żądań do Twojego serwera WWW. Kod odpowiedzi 403 wskazuje, że serwer WWW odmówił dostępu.
Wniosek
mod_evasive to bardzo ważne narzędzie zabezpieczające serwer WWW Apache przed kilkoma zagrożeniami. Możesz eksperymentować z mod_evasive i różnymi opcjami w środowisku testowym. Jeśli masz jakieś pytania, możesz je napisać w polu komentarza poniżej.
