Ochrana vašeho webového serveru před různými druhy útoků je klíčovou odpovědností každého správce systému. ModEvasive je modul webového serveru Apache, který vám pomáhá chránit váš webový server v případě útoků DoS, DDoS a hrubou silou. Tyto typy útoků způsobí, že serveru dojde paměť a dojde ke zhroucení vašeho webu.
Modul mod_evasive funguje tak, že vytváří hashovací tabulku IP adres a URI a monitoruje podezřelé příchozí požadavky serveru, jako jsou:
- Vytvořte více než 100 souběžných připojení za sekundu.
- Požadavek na stejnou stránku několikrát za sekundu.
Pokud dojde k takovému podezřelému požadavku, modul mod_evasive odešle chybu 403 a zablokuje IP adresu.
V tomto tutoriálu vám ukážeme, jak nainstalovat a nakonfigurovat mod_evasive pomocí Apache na serveru Ubuntu 18.04.
Předpoklady
- Nové Ubuntu 18.04 VPS na cloudové platformě Atlantic.Net.
- Statická adresa IP nakonfigurovaná na vašem serveru.
Krok 1 – Vytvořte cloudový server Atlantic.Net
Nejprve se přihlaste ke svému cloudovému serveru Atlantic.Net. Vytvořte nový server a jako operační systém vyberte Ubuntu 18.04 s alespoň 1 GB RAM. Připojte se ke svému cloudovému serveru přes SSH a přihlaste se pomocí přihlašovacích údajů zvýrazněných v horní části stránky.
Jakmile se přihlásíte na svůj server Ubuntu 18.04, spusťte následující příkaz a aktualizujte svůj základní systém nejnovějšími dostupnými balíčky.
apt-get update -y
Krok 2 – Instalace mod_evasive
Před spuštěním musí být na vašem serveru nainstalován webový server Apache. Pokud není nainstalován, můžete jej nainstalovat pomocí následujícího příkazu:
apt-get install apache2 apache2-utils -y
Jakmile je webový server Apache nainstalován, můžete nainstalovat mod_evasive pomocí následujícího příkazu:
apt-get install libapache2-mod-evasive -y
Během instalace budete požádáni o konfiguraci poštovního serveru Postfix pro e-mailová upozornění. Pro dokončení instalace si můžete vybrat požadovanou možnost. Pokud si nejste jisti, vyberte pouze místní nebo žádná konfigurace .
Po instalaci mod_evasive můžete ověřit, zda je modul mod_evasive povolen spuštěním následujícího příkazu:
apachectl -M | grep vyhýbavý
Měli byste získat následující výstup:
[Mon Jan 27 13:55:35.707317 2020] [so:warn] [pid 29031] AH01574:modul dav_module je již načten, přeskakuje evasive20_module (shared)
V tomto okamžiku je modul mod_evasive nainstalován a povolen. Nyní můžete přejít k dalšímu kroku.
Krok 3 – Konfigurace mod_evasive
Výchozí konfigurační soubor mod_evasive se nachází na /etc/apache2/mods-enabled/evasive.conf. Tento soubor budete muset nakonfigurovat podle svých požadavků.
Tento soubor můžete otevřít pomocí editoru nano, jak je znázorněno níže:
nano /etc/apache2/mods-enabled/evasive.conf
Změňte soubor, jak je uvedeno níže. Doporučujeme upravit DOSEmailNotify na adresu, na kterou chcete e-mail zasílat (pokud je nakonfigurován) a DOSSystemCommand – například „su – richard -c ‘/sbin… %s …’“
doshashtablesze 3097 DOSPAGECOUNT 2 DossiteCount 50 DspageInter 1 DossiteInterval 1 Dosblockingperiod 100 DoseMailNotify pří[email protected] DossystemCommand "Su - Someuser -C '/Sbin/... %S ..." "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "DOSLOGDIRE" " /var/log/mod_evasive"
Po dokončení uložte a zavřete soubor.
Krátké vysvětlení každé možnosti je uvedeno níže:
- DOSHashTableSize :mod_evasive používá tuto volbu k řízení velikosti hashovací tabulky. Pokud máte zaneprázdněný webový server, doporučujeme toto zvýšit.
- DOSPageCount :Tato možnost určuje prahový limit pro počet povolených požadavků na stejný URI za sekundu. Po překročení prahového limitu bude IP adresa klienta na černé listině.
- DOSSiteCount :Tato možnost určuje limit celkového počtu povolených požadavků na stejnou IP adresu.
- DOSPageInterval :Tato možnost určuje interval počtu stránek.
- DOSSiteInterval :Tato možnost určuje interval počtu webů.
- DOSBlockingPeriod :Tato možnost definuje dobu v sekundách, po kterou bude klient zablokován.
- DOSEmailNotify :Tato možnost odešle e-mail na zadanou adresu, když je IP adresa na černé listině.
- DOSSystemCommand :Kdykoli se adresa IP dostane na černou listinu, bude proveden zadaný systémový příkaz.
- DOSLogDir :Tato volba definuje adresář mod_evasive log.
Dále vytvořte adresář pro uložení protokolu mod_evasive a změňte jeho vlastnictví na www-data pomocí následujícího příkazu:
mkdir /var/log/mod_evasivechown -R www-data:www-data /var/log/mod_evasive
Nakonec restartujte službu Apache a implementujte změny:
systemctl restartujte apache2
Krok 4 – Test mod_evasive
V tomto okamžiku je modul mod_evasive nainstalován a nakonfigurován. Je čas otestovat, zda modul funguje správně.
Přejděte do vzdáleného systému a odešlete hromadnou žádost o stránku na server pomocí příkazu ab:
ab -n 1000 -c 20 http://ip-vasho-serveru/
Tento příkaz způsobí ekvivalent útoku DoS odesláním 1000 požadavků na stránku v 10 souběžných připojeních.
Na serveru zkontrolujte protokol pošty spuštěním následujícího příkazu:
tail -15 /var/mail/root
Měli byste vidět, že IP adresa klienta byla uvedena na černou listinu uživatelem mod_evasive:
Přijato:ubuntu1804 (Postfix, z uživatelského ID 33) id B0C3EC1753; Mon, 27 Jan 2020 14:15:09 +0000 (UTC)To:[email protected]:1.0Content-Type:text/plain; charset="ANSI_X3.4-1968"Content-Transfer-Encoding:8bitMessage-Id:Datum:Po, 27. ledna 2020 14:15:09 +0000 (UTC)Od:www-data Komu:[email protected]:HTTP BLACKLIST 103.250.161.100mod_evasive HTTP Blacklisted 103.250.161.100
Mod_evasive můžete také otestovat pomocí vestavěného skriptu test.pl. Aby fungoval, budete muset tento skript upravit.
Skript můžete upravit, jak je uvedeno níže:
nano /usr/share/doc/libapache2-mod-evasive/examples/test.pl
Najděte následující řádek:
tisk $SOCKET "GET /?$_ HTTP/1.0\n\n";
Nahraďte jej následujícím:
print $SOCKET "GET /?$_ HTTP/1.0\r\nHost:127.0.0.1\r\n\r\n";
Po dokončení uložte a zavřete soubor. Poté spusťte skript pomocí příkazu perl:
perl /usr/share/doc/libapache2-mod-evasive/examples/test.pl
Pokud vše funguje správně, měli byste získat následující výstup:
Závěr
Gratulujeme! Modul mod_evasive je nyní nakonfigurován tak, aby chránil váš server před DDoS a útoky hrubou silou.