Útoky DDoS (Distributed Denial of Service) prostredníctvom taktiky zneužívania digitálnej komunikácie preťažujú zdroje servera. Tieto typy útokov sú organizované nájazdy v počítačovom svete. Nespočetné množstvo odporných opozícií vytvára hrozbu, ktorá je dostatočne hrozivá na to, aby prinútila server zastaviť.
Najhoršie je, že existuje veľa spôsobov, ako viesť guerillové webové „vojny“ proti takýmto hostiteľom. Našťastie je možné servery nakonfigurovať tak, aby takýmto útokom odolali.
Nginx, veľmi populárny serverový systém pre Unixové stroje, prichádza s dostatkom vstavaných funkcií na výrazné obmedzenie účinnosti DDoS útokov.
Tu je niekoľko účinných možností na zvládnutie takýchto hrozieb pomocou Nginx.
Ako zabrániť útokom DDoS pomocou Nginx?
Zálohujte konfiguračné súbory
Pred zmenou akýchkoľvek nastavení sa uistite, že ste urobili rýchlu zálohu konfigurácie vášho servera. Na tento účel funguje nasledujúci príkaz:
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup-original

Po dokončení môžete pokračovať.
Skontrolujte premávku
Monitorovanie prevádzky na vašom serveri uľahčuje optimalizáciu zabezpečenia a implementáciu dodatočných stratégií. Nginx má modul vytvorený špeciálne na tento účel.
Nastaviť stránku stavu
Nginx sa zvyčajne dodáva s modulom s názvom „stub status“ (http_stub_status_module), ktorý umožňuje pomerne jednoduchú integráciu tohto typu funkcionality do serverového prostredia. Najprv ho otestujte pomocou nasledujúceho príkazu:
nginx -V

Alebo použite nasledujúci príkaz, aby ste ho našli rýchlejšie:
nginx -V 2>&1 | grep -o with-http_stub_status_module

Ak váš výstup vyzerá ako ten vyššie, potom je všetko v poriadku. V opačnom prípade budete musieť nainštalovať alebo prekompilovať svoju inštaláciu Nginx s priloženým modulom.
Nastavenie stavovej stránky, ktorú môžete skontrolovať, je jednoduché, ale musíte tiež obmedziť prístup na minimum (iba počítač), aby ste zachovali bezpečnosť. Začnite otvorením hlavného konfiguračného súboru servera, ktorý sa nachádza na /etc/nginx/nginx.conf.
Otvorte ho a pridajte nasledujúci kód do „http direktívy“ , aby ste modul povolili, pričom nahradia vaše vlastné informácie 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 : Na úpravu tohto súboru budete potrebovať privilégiá sudo.

Teraz otestujte svoju konfiguráciu:
sudo nginx -t

Ak je všetko v poriadku, pošlite serveru signál opätovného načítania:
sudo systemctl reload nginx

Ak chcete získať prístup k svojej stavovej stránke, navštívte lokalitu server_name , za ktorou nasleduje „/status_page“ vo webovom prehliadači alebo pomocou nástroja príkazového riadka, ako je curl. (Toto je užitočné, ak sa vyrovnávacia pamäť vášho prehliadača automaticky neaktualizuje). Tu je príkaz curl na prístup na stránku v príkladoch:
curl localhost/status_page

V prehliadači vyzerá vyššie uvedený výstup príkazu ako na nasledujúcom obrázku.

Skontrolujte denníky prístupu
Ak si všimnete nezvyčajnú návštevnosť pri kontrole stavovej stránky nakonfigurovanej vyššie, možno budete chcieť skontrolovať denník prístupu servera. Protokol prístupu k serveru nájdete na „/var/log/nginx/access.log“. V protokole sú uvedené použité metódy HTTP, dátum/čas pokusov o prístup, používateľský agent a prístupné stránky.

Limity pripojenia
Medzi mnohými užitočnými taktikami, ako zabrániť útokom DDoS, ktoré stojí za to vyskúšať, je jednou z najjednoduchších a najúčinnejších obmedziť rýchlosť prichádzajúcej prevádzky.
V ideálnom prípade by ste mali obmedziť prístup len na toľko, aby ste zabránili škodlivým robotom premôcť váš server, a zároveň zachovať primerané sadzby. V Nginx sa to dá urobiť pomocou direktív limit_req_zone a limit_req . Nasledujúci kód nastavuje obmedzenia pamäte a rýchlosti na použitie v akomkoľvek umiestnení, na ktoré je váš server nakonfigurovaný:
limit_req_zone $binary_remote_addr zone=speedbump:10m rate=10r/s;
„Zóna“ určuje názov a kapacitu (v tomto prípade v megabajtoch) pamäťového priestoru, kde sú uložené požiadavky používateľov. „Rate“ nastavuje celkový počet žiadostí, ktoré Nginx prijme za sekundu (v tomto príklade 10 žiadostí). Myslite na tento kód ako na pravidlo a nasleduje použitie tohto pravidla:
limit_req zone=speedbump burst=20;
Vyššie uvedený kód v skutočnosti robí o niečo viac ako len implementáciu limitného pravidla. Pridáva tiež malý rad až 20 požiadaviek na elegantné spracovanie legitímnych pripojení, ktoré sa vykresľujú o niečo rýchlejšie ako normálne, čím prekračujú pravidlá aj front, čo vedie k chybe 503 pre klienta. Obe smernice vyzerajú takto v nginx.conf:

Vytvorte čiernu listinu IP adries
Ak získate IP adresu , ktorá vykonáva DDoS útok na váš server, môžete ju jednoducho zakázať a odstrániť všetky pripojenia pochádzajúce z tejto IP adresy.
Pridajte nasledujúci kód do direktívy servera:
location / {
deny 123.123.123.0/28;
# ...
}
Blokovať požiadavky na určité súbory
Ak je útok DDoS zameraný na určité súbory na serveri – napríklad súbor xmlrpc.php na WordPress (toto je bežne cielený súbor na väčšine serverov WordPress), môžete ich všetky zablokovať. Pridajte tento kód do direktívy servera:
location /xmlrpc.php {
deny all;
}
Postupujte podľa vyššie uvedeného postupu a budete môcť obmedziť väčšinu útokov DDoS. Nezabudnite si pozrieť dokumentáciu Nginx , kde nájdete ďalšie možnosti zabezpečenia, ktoré môžete použiť.
Dúfam, že budete úspešní.