DDoS-aanvallen (Distributed Denial of Service) kunnen door misbruik van digitale communicatietactieken de serverbronnen overbelasten. Dit soort aanvallen zijn georganiseerde invallen in de computerwereld. Talloze daden van vervelende tegenstand zorgen samen voor een dreiging die formidabel genoeg is om een server tot stilstand te brengen.
Het ergste van alles is dat er veel manieren zijn om guerrilla-weboorlogen tegen dergelijke gastheren te voeren. Gelukkig kunnen servers worden geconfigureerd om dergelijke aanvallen te weerstaan.
Nginx, een zeer populair serversysteem voor Unix-machines, wordt geleverd met voldoende ingebouwde functionaliteit om de effectiviteit van DDoS-aanvallen aanzienlijk te beperken.
Hier zijn een paar effectieve opties om dergelijke bedreigingen met Nginx aan te pakken.
Hoe voorkom je DDoS-aanvallen met Nginx?
Back-up van configuratiebestanden
Zorg ervoor dat u, voordat u instellingen wijzigt, snel een back-up maakt van de configuratie van uw server. Hiervoor werkt het volgende commando:
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup-original

Zodra u klaar bent, bent u klaar om door te gaan.
Controleer het verkeer
Door het verkeer op uw server te monitoren, kunt u eenvoudig de beveiliging optimaliseren en aanvullende strategieën implementeren. Nginx heeft speciaal voor dit doel een module gemaakt.
Statuspagina instellen
Nginx wordt meestal geleverd met een module genaamd “stub status” (http_stub_status_module), waarmee dit soort functionaliteit vrij eenvoudig in de serveromgeving kan worden geïntegreerd. Test het eerst met de volgende opdracht:
nginx -V
![Hoe DDoS-aanvallen te voorkomen met Nginx Hoe DDoS-aanvallen te voorkomen met Nginx]()
Of gebruik de volgende opdracht om het sneller te vinden:
nginx -V 2>&1 | grep -o with-http_stub_status_module
![Hoe DDoS-aanvallen te voorkomen met Nginx Hoe DDoS-aanvallen te voorkomen met Nginx]()
Als uw uitvoer er zo uitziet als hierboven, dan is alles in orde. Anders moet u uw Nginx-installatie installeren of opnieuw compileren met de meegeleverde module.
Het opzetten van een statuspagina die u kunt controleren is eenvoudig, maar u moet ook de toegang tot een minimum beperken (alleen computer) om de veiligheid te behouden. Begin met het openen van het hoofdconfiguratiebestand van de server, te vinden op /etc/nginx/nginx.conf.
Open het en voeg de volgende code toe aan de “http-richtlijn” om de module in te schakelen, waarbij uw eigen informatie in “localhost”, “/status_page” en “127.0.0.1” wordt vervangen.
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;
}
}
Opmerking : u hebt sudo-rechten nodig om dit bestand te wijzigen.
![Hoe DDoS-aanvallen te voorkomen met Nginx Hoe DDoS-aanvallen te voorkomen met Nginx]()
Test nu uw configuratie:
sudo nginx -t
![Hoe DDoS-aanvallen te voorkomen met Nginx Hoe DDoS-aanvallen te voorkomen met Nginx]()
Als alles goed is, stuur je de server een herlaadsignaal:
sudo systemctl reload nginx
![Hoe DDoS-aanvallen te voorkomen met Nginx Hoe DDoS-aanvallen te voorkomen met Nginx]()
Om toegang te krijgen tot uw statuspagina, gaat u naar de locatie servernaam gevolgd door “/status_page” in een webbrowser of met behulp van een opdrachtregelprogramma zoals curl. (Dit is handig als uw browsercache niet automatisch wordt bijgewerkt). Hier is de curl-opdracht om toegang te krijgen tot de pagina in de voorbeelden:
curl localhost/status_page
![Hoe DDoS-aanvallen te voorkomen met Nginx Hoe DDoS-aanvallen te voorkomen met Nginx]()
In de browser ziet de bovenstaande opdrachtuitvoer eruit als de volgende afbeelding.
![Hoe DDoS-aanvallen te voorkomen met Nginx Hoe DDoS-aanvallen te voorkomen met Nginx]()
Controleer toegangslogboeken
Als u ongebruikelijk verkeer opmerkt bij het controleren van de hierboven geconfigureerde statuspagina, wilt u wellicht het toegangslogboek van de server controleren. Het servertoegangslogboek is te vinden op “/var/log/nginx/access.log”. Het logboek vermeldt de gebruikte HTTP-methoden, de datum/tijd van toegangspogingen, de user-agent en de bezochte pagina's.
![Hoe DDoS-aanvallen te voorkomen met Nginx Hoe DDoS-aanvallen te voorkomen met Nginx]()
Verbindingslimieten
Van de vele nuttige tactieken om DDoS-aanvallen te voorkomen die het proberen waard zijn, is een van de eenvoudigste en meest effectieve het beperken van de hoeveelheid inkomend verkeer.
Idealiter zou u de toegang net genoeg moeten beperken om te voorkomen dat kwaadaardige bots uw server overweldigen, terwijl u toch redelijke tarieven handhaaft. In Nginx kan dit gedaan worden met de limit_req_zone en limit_req richtlijnen . Met de volgende code worden de geheugen- en snelheidsbeperkingen ingesteld voor gebruik op welke locatie uw server ook is geconfigureerd voor weergave:
limit_req_zone $binary_remote_addr zone=speedbump:10m rate=10r/s;
“Zone” specificeert de naam en capaciteit (in megabytes in dit geval) van de geheugenruimte waar gebruikersverzoeken worden opgeslagen. “Rate” stelt het totale aantal verzoeken in dat Nginx per seconde accepteert (10 verzoeken in dit voorbeeld). Beschouw deze code als een regel en wat volgt is het gebruik van die regel:
limit_req zone=speedbump burst=20;
De bovenstaande code doet eigenlijk iets meer dan alleen het implementeren van een limietregel. Het voegt ook een kleine wachtrij toe van maximaal 20 verzoeken om legitieme verbindingen netjes af te handelen, die iets sneller renderen dan normaal, waardoor zowel de regels als de wachtrij worden overschreden, wat resulteert in een 503-fout voor de client. Beide richtlijnen zien er zo uit in nginx.conf:
![Hoe DDoS-aanvallen te voorkomen met Nginx Hoe DDoS-aanvallen te voorkomen met Nginx]()
Maak een zwarte lijst met IP-adressen
Als u het IP-adres krijgt dat de DDoS-aanval op uw server uitvoert, kunt u dit eenvoudigweg op de zwarte lijst zetten en alle verbindingen die afkomstig zijn van dit IP-adres elimineren.
Voeg de volgende code toe aan uw serverrichtlijn:
location / {
deny 123.123.123.0/28;
# ...
}
Blokkeer verzoeken voor bepaalde bestanden
Als de DDoS-aanval zich op bepaalde bestanden op de server richt, bijvoorbeeld het xmlrpc.php- bestand op WordPress (dit is een vaak gericht bestand op de meeste WordPress-servers), kunt u ze allemaal blokkeren. Voeg deze code toe aan uw serverrichtlijn:
location /xmlrpc.php {
deny all;
}
Volg het bovenstaande proces en je kunt de meeste DDoS-aanvallen beperken. Zorg ervoor dat u de Nginx-documentatie bekijkt voor aanvullende beveiligingsopties die u kunt toepassen.
Ik hoop dat je succesvol bent.