Rate limiting
Taky máte někdy strach z DDoS na svůj webový server? Ukážeme si tady rate limiting který nám sice bude k prdu pokud bude útok větší, ale odradí každého otraveného bota z digitálního oceánu a amazon mraků.
Předvádíme na Debian Linuxu.
Instalace
- V
/etc/nginx/conf.dvytvořit konfigurační soubor, třeba50-rate-limit.conf:limit_req_zone $binary_remote_addr zone=req_per_ip:20m rate=50r/s; limit_req zone=req_per_ip burst=50; limit_req_status 429;- řádek nastavuje zónu s bufferem 20MB s rate limitem 50 požadavků za sekundu.
- řádek aktivuje zónu s parametrem
burst=50která dovoluje překročit limit o 50 požadavků za sekundu aniž by mě server neobsloužil. - řádek nastavuje, že má nginx vrátit
429 - Too Many Requests
- Otestovat config:
nginx -t - Jestli je config ok, restartovat nginx
systemctl restart nginx
Test
Na test je dobrý nějaký benchmarkovací nástroj. Ukážeme si ApacheBench (abab - Apache HTTP server benchmarking )tool)tool
-
Budeme potřebovat nainstalovat (pokud nemáme):
apt update apt install apache2-utils -
Spustíme test který by měl dopadnout dobře:
ab -n 1000 -c 50 https://cvut.it/- 1000 requestů
- 50 requestů paralelně
- ptáme se webserveru https://cvut.it
-
Potom zkusíme test, který by měl ukazovat dostatečný počet
Failed requests:ab -n 1000 -c 51 https://cvut.it/💡 Mělo by být viděno taky v logu že klient dostal
429