A DDoS (Distributed Denial of Service) támadások visszaélésszerű digitális kommunikációs taktikákkal túlterhelik a szerver erőforrásait. Az ilyen típusú támadások szervezett razziák a számítógépes világban. A csúnya ellenállás számtalan cselekménye együttesen olyan fenyegetést hoz létre, amely elég félelmetes ahhoz, hogy leállítsa a szervert.
A legrosszabb az egészben, hogy számos eszközzel lehet gerillaháló „háborút” vívni az ilyen házigazdák ellen. Szerencsére a szervereket be lehet állítani úgy, hogy ellenálljanak az ilyen támadásoknak.
Az Nginx, a Unix gépek nagyon népszerű szerverrendszere elegendő beépített funkcióval rendelkezik ahhoz, hogy jelentősen korlátozza a DDoS támadások hatékonyságát.
Íme néhány hatékony lehetőség az ilyen fenyegetések kezelésére az Nginx segítségével.
Hogyan lehet megakadályozni a DDoS támadásokat az Nginx segítségével?
A konfigurációs fájlok biztonsági mentése
Mielőtt bármilyen beállítást módosítana, gyorsan készítsen biztonsági másolatot a szerver konfigurációjáról. A következő parancs működik erre a célra:
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup-original

Ha elkészült, készen áll a folytatásra.
Ellenőrizze a forgalmat
A szerver forgalmának figyelése megkönnyíti a biztonság optimalizálását és további stratégiák megvalósítását. Az Nginx rendelkezik egy kifejezetten erre a célra létrehozott modullal.
Állítsa be az állapotoldalt
Az Nginx rendszerint egy „stub status” (http_stub_status_module) nevű modullal érkezik , amely lehetővé teszi az ilyen típusú funkciók egyszerű integrálását a szerverkörnyezetbe. Először tesztelje a következő paranccsal:
nginx -V

Vagy használja a következő parancsot a gyorsabb megtaláláshoz:
nginx -V 2>&1 | grep -o with-http_stub_status_module

Ha a kimenet úgy néz ki, mint a fenti, akkor minden rendben van. Ellenkező esetben telepítenie vagy újra kell fordítania az Nginx telepítést a mellékelt modullal.
Az ellenőrizhető állapotoldal beállítása egyszerű, de a biztonság megőrzése érdekében minimálisra kell korlátozni a hozzáférést (csak számítógépen). Kezdje a kiszolgáló fő konfigurációs fájljának megnyitásával, amely az /etc/nginx/nginx.conf címen található.
Nyissa meg, és adja hozzá a következő kódot a „http direktívához” a modul engedélyezéséhez, lecserélve a saját adatait a „localhost”, „/status_page” és „127.0.0.1” helyen.
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;
}
}
Megjegyzés : A fájl módosításához sudo jogosultságra lesz szüksége.

Most tesztelje a konfigurációt:
sudo nginx -t

Ha minden rendben van, küldjön újratöltési jelet a szervernek:
sudo systemctl reload nginx

Az állapotoldal eléréséhez nyissa meg a szerver_neve címet , majd a „/status_page” elemet egy webböngészőben vagy egy parancssori eszközzel, például a curl használatával. (Ez akkor hasznos, ha a böngésző gyorsítótára nem frissül automatikusan). Itt található a curl parancs az oldal eléréséhez a példákban:
curl localhost/status_page

A böngészőben a fenti parancs kimenete a következő képhez hasonlóan néz ki.

Ellenőrizze a hozzáférési naplókat
Ha szokatlan forgalmat észlel a fent konfigurált állapotoldal ellenőrzésekor, érdemes lehet ellenőrizni a szerver hozzáférési naplóját. A szerver hozzáférési napló a „/var/log/nginx/access.log” címen található . A napló felsorolja a használt HTTP-módszereket, a hozzáférési kísérletek dátumát/idejét, a felhasználói ügynököt és a megnyitott oldalakat.

Csatlakozási korlátok
A DDoS-támadások megelőzésének számos hasznos taktikája között érdemes kipróbálni, az egyik legegyszerűbb és leghatékonyabb a bejövő forgalom korlátozása.
Ideális esetben csak annyira korlátozza a hozzáférést, hogy megakadályozza a rosszindulatú robotok túlterhelését a szerveren, miközben továbbra is fenntartja az ésszerű díjakat. Az Nginxben ezt a limit_req_zone és limit_req direktívákkal lehet megtenni . A következő kód beállítja a memória- és sebességkorlátozásokat, amelyek bármilyen helyen használhatók, ahol a kiszolgáló be van állítva a megjelenítésre:
limit_req_zone $binary_remote_addr zone=speedbump:10m rate=10r/s;
A „zóna” a felhasználói kérések tárolására szolgáló memóriaterület nevét és kapacitását adja meg (ebben az esetben megabájtban). A „Rate” beállítja az Nginx által másodpercenként fogadott kérések teljes számát (ebben a példában 10 kérés). Tekintsd ezt a kódot szabálynak, és a következőképpen használja ezt a szabályt:
limit_req zone=speedbump burst=20;
A fenti kód valójában egy kicsit többet tesz, mint egy limitszabály megvalósítása. Ezenkívül hozzáad egy kis, legfeljebb 20 kérésből álló sort a jogszerű kapcsolatok kecses kezeléséhez, amelyek a szokásosnál kicsit gyorsabban jelennek meg, túllépve a szabályokat és a várakozási sort is, ami 503-as hibát eredményez az ügyfél számára. Mindkét direktíva így néz ki az nginx.conf fájlban:

Hozzon létre egy feketelistát az IP-címekről
Ha megkapja azt az IP-címet , amely a DDoS-támadást hajtja végre a szerverén, egyszerűen felteheti a feketelistára, és megszüntetheti az erről az IP-címről származó kapcsolatokat.
Adja hozzá a következő kódot a szerver direktívájához:
location / {
deny 123.123.123.0/28;
# ...
}
Blokkolja a kéréseket bizonyos fájlokhoz
Ha a DDoS támadás bizonyos fájlokat céloz meg a szerveren – például a WordPress xmlrpc.php fájlját (ez a legtöbb WordPress szerveren gyakran célzott fájl), akkor mindegyiket letilthatja. Adja hozzá ezt a kódot a szerver direktívájához:
location /xmlrpc.php {
deny all;
}
Kövesse a fenti folyamatot, és képes lesz korlátozni a legtöbb DDoS támadást. Feltétlenül tekintse meg az Nginx dokumentációját az alkalmazható további biztonsági lehetőségekért.
Remélem sikeres vagy.