Útoky DDoS (Distributed Denial of Service) prostřednictvím zneužití digitální komunikace přetěžují zdroje serveru. Tyto typy útoků jsou organizované nájezdy v počítačovém světě. Nespočet odporných opozičních činů se spojí a vytvoří tak hrozivou hrozbu, že donutí server zastavit.
Nejhorší ze všeho je, že existuje mnoho způsobů, jak vést guerillové webové „války“ proti takovým hostitelům. Naštěstí lze servery nakonfigurovat tak, aby takovým útokům odolávaly.
Nginx, velmi oblíbený serverový systém pro stroje Unix, přichází s dostatkem vestavěných funkcí, které výrazně omezují efektivitu DDoS útoků.
Zde je několik účinných možností, jak tyto hrozby zvládnout pomocí Nginx.
Jak zabránit útokům DDoS pomocí Nginx?
Zálohujte konfigurační soubory
Než změníte jakékoli nastavení, ujistěte se, že jste provedli rychlou zálohu konfigurace vašeho serveru. Pro tento účel funguje následující příkaz:
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup-original

Po dokončení jste připraveni pokračovat.
Zkontrolujte provoz
Sledování provozu na vašem serveru usnadňuje optimalizaci zabezpečení a implementaci dalších strategií. Nginx má modul vytvořený speciálně pro tento účel.
Nastavit stavovou stránku
Nginx se obvykle dodává s modulem zvaným „stub status“ (http_stub_status_module), který umožňuje poměrně snadno integrovat tento typ funkcí do prostředí serveru. Nejprve jej otestujte pomocí následujícího příkazu:
nginx -V

Nebo použijte následující příkaz pro rychlejší nalezení:
nginx -V 2>&1 | grep -o with-http_stub_status_module

Pokud váš výstup vypadá jako výše uvedený, pak je vše v pořádku. V opačném případě budete muset nainstalovat nebo překompilovat vaši instalaci Nginx s přiloženým modulem.
Nastavení stavové stránky, kterou můžete zkontrolovat, je jednoduché, ale musíte také omezit přístup na minimum (pouze počítač), abyste zachovali zabezpečení. Začněte otevřením hlavního konfiguračního souboru serveru, který najdete na /etc/nginx/nginx.conf.
Otevřete jej a přidejte následující kód do „direktivy http“ , abyste modul povolili, přičemž nahradíte své vlastní informace v „localhost“, „/status_page“ a „127.0.0.1“.
server {
listen 80;
listen [::]:80;
server_name localhost;
##
# Status Page Settings
##
location /status_page {
stub_status on;
allow 127.0.0.1;
allow ::1;
deny all;
}
}
Poznámka : K úpravě tohoto souboru budete potřebovat oprávnění sudo.

Nyní otestujte svou konfiguraci:
sudo nginx -t

Pokud je vše v pořádku, pošlete serveru signál pro opětovné načtení:
sudo systemctl reload nginx

Ke stavové stránce se dostanete tak, že ve webovém prohlížeči nebo pomocí nástroje příkazového řádku, jako je curl, navštívíte umístění server_name následované „/status_page“ . (To je užitečné, pokud se mezipaměť vašeho prohlížeče automaticky neaktualizuje). Zde je příkaz curl pro přístup na stránku v příkladech:
curl localhost/status_page

V prohlížeči vypadá výše uvedený výstup příkazu jako na následujícím obrázku.

Zkontrolujte protokoly přístupu
Pokud při kontrole výše nakonfigurované stavové stránky zaznamenáte neobvyklý provoz, možná budete chtít zkontrolovat protokol přístupu serveru. Protokol přístupu k serveru lze nalézt na „/var/log/nginx/access.log“. V protokolu jsou uvedeny použité metody HTTP, datum/čas pokusů o přístup, uživatelský agent a navštívené stránky.

Limity připojení
Mezi mnoha užitečnými taktikami, jak zabránit útokům DDoS, které stojí za vyzkoušení, je jednou z nejjednodušších a nejúčinnějších omezit rychlost příchozího provozu.
V ideálním případě byste měli omezit přístup jen natolik, abyste zabránili škodlivým robotům přemoci váš server, a přitom zachovat rozumné sazby. V Nginx to lze provést pomocí direktiv limit_req_zone a limit_req . Následující kód nastavuje omezení paměti a rychlosti pro použití v jakémkoli umístění, které je váš server nakonfigurován k zobrazení:
limit_req_zone $binary_remote_addr zone=speedbump:10m rate=10r/s;
„Zóna“ určuje název a kapacitu (v tomto případě v megabajtech) paměťového prostoru, kde jsou uloženy požadavky uživatelů. „Rate“ nastavuje celkový počet požadavků, které Nginx přijme za sekundu (v tomto příkladu 10 požadavků). Považujte tento kód za pravidlo a následuje použití tohoto pravidla:
limit_req zone=speedbump burst=20;
Výše uvedený kód ve skutečnosti dělá trochu víc než jen implementaci limitního pravidla. Přidává také malou frontu až 20 požadavků, aby bylo možné elegantně zpracovat legitimní připojení, která se vykreslují o něco rychleji než normálně, čímž překračují pravidla i frontu, což vede k chybě 503 pro klienta. Obě směrnice vypadají v nginx.conf takto:

Vytvořte černou listinu IP adres
Pokud získáte IP adresu , která provádí DDoS útok na vašem serveru, můžete ji jednoduše zablokovat a odstranit všechna připojení pocházející z této IP adresy.
Přidejte následující kód do direktivy serveru:
location / {
deny 123.123.123.0/28;
# ...
}
Blokovat požadavky na určité soubory
Pokud se DDoS útok zaměřuje na určité soubory na serveru - například soubor xmlrpc.php na WordPress (toto je běžně cílený soubor na většině serverů WordPress), můžete je všechny zablokovat. Přidejte tento kód do direktivy serveru:
location /xmlrpc.php {
deny all;
}
Postupujte podle výše uvedeného postupu a budete moci omezit většinu DDoS útoků. Nezapomeňte se podívat na dokumentaci Nginx pro další možnosti zabezpečení, které můžete použít.
Doufám, že jste úspěšní.