DDoS-Angriffe (Distributed Denial of Service) durch missbräuchliche digitale Kommunikationstaktiken überlasten Serverressourcen. Bei solchen Angriffen handelt es sich um organisierte Überfälle in der Computerwelt. Unzählige üble Widerstandshandlungen ergeben zusammen eine Bedrohung, die gewaltig genug ist, um einen Server zum Stillstand zu zwingen.
Das Schlimmste ist, dass es viele Möglichkeiten gibt, Guerilla-Web-„Kriege“ gegen solche Hosts zu führen. Glücklicherweise können Server so konfiguriert werden, dass sie solchen Angriffen widerstehen.
Nginx, ein sehr beliebtes Serversystem für Unix-Rechner, verfügt über genügend integrierte Funktionalität, um die Wirksamkeit von DDoS-Angriffen deutlich einzuschränken.
Hier sind einige effektive Optionen, um solche Bedrohungen mit Nginx zu bewältigen.
Wie kann man DDoS-Angriffe mit Nginx verhindern?
Konfigurationsdateien sichern
Bevor Sie Einstellungen ändern, stellen Sie sicher, dass Sie eine schnelle Sicherung der Konfiguration Ihres Servers erstellen. Zu diesem Zweck funktioniert der folgende Befehl:
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup-original
Sobald Sie fertig sind, können Sie fortfahren.
Überprüfen Sie den Verkehr
Durch die Überwachung des Datenverkehrs auf Ihrem Server können Sie die Sicherheit ganz einfach optimieren und zusätzliche Strategien implementieren. Nginx hat speziell für diesen Zweck ein Modul erstellt.
Statusseite einrichten
Nginx wird normalerweise mit einem Modul namens „Stub Status“ (http_stub_status_module) geliefert, mit dem sich diese Art von Funktionalität ganz einfach in die Serverumgebung integrieren lässt. Testen Sie es zunächst mit dem folgenden Befehl:
nginx -V
Oder verwenden Sie den folgenden Befehl, um es schneller zu finden:
nginx -V 2>&1 | grep -o with-http_stub_status_module
Wenn Ihre Ausgabe wie oben aussieht, ist alles in Ordnung. Andernfalls müssen Sie Ihre Nginx-Installation mit dem mitgelieferten Modul installieren oder neu kompilieren.
Das Einrichten einer Statusseite, die Sie überprüfen können, ist einfach, aber Sie müssen den Zugriff auch auf ein Minimum beschränken (nur Computer), um die Sicherheit zu gewährleisten. Öffnen Sie zunächst die Hauptkonfigurationsdatei des Servers unter /etc/nginx/nginx.conf.
Öffnen Sie es und fügen Sie den folgenden Code zur „http-Direktive“ hinzu , um das Modul zu aktivieren. Ersetzen Sie dabei Ihre eigenen Informationen in „localhost“, „/status_page“ und „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;
}
}
Hinweis : Sie benötigen Sudo-Berechtigungen, um diese Datei zu ändern.
Testen Sie nun Ihre Konfiguration:
sudo nginx -t
Wenn alles in Ordnung ist, senden Sie dem Server ein Neuladesignal:
sudo systemctl reload nginx
Um auf Ihre Statusseite zuzugreifen, rufen Sie den Speicherort server_name gefolgt von „/status_page“ in einem Webbrowser auf oder verwenden Sie ein Befehlszeilentool wie Curl. (Dies ist nützlich, wenn Ihr Browser-Cache nicht automatisch aktualisiert wird). Hier ist der Curl-Befehl, um auf die Seite in den Beispielen zuzugreifen:
curl localhost/status_page
Im Browser sieht die obige Befehlsausgabe wie im folgenden Bild aus.
Überprüfen Sie die Zugriffsprotokolle
Wenn Sie bei der Überprüfung der oben konfigurierten Statusseite ungewöhnlichen Datenverkehr bemerken, sollten Sie möglicherweise das Zugriffsprotokoll des Servers überprüfen. Das Serverzugriffsprotokoll finden Sie unter „/var/log/nginx/access.log“. Das Protokoll listet die verwendeten HTTP-Methoden, Datum/Uhrzeit der Zugriffsversuche, Benutzeragenten und aufgerufene Seiten auf.
Verbindungsbeschränkungen
Unter den vielen nützlichen Taktiken zur Verhinderung von DDoS-Angriffen, die es wert sind, ausprobiert zu werden, ist die Begrenzung des eingehenden Datenverkehrs eine der einfachsten und effektivsten.
Idealerweise sollten Sie den Zugriff gerade so weit beschränken, dass bösartige Bots Ihren Server nicht überlasten, und gleichzeitig angemessene Tarife beibehalten. In Nginx kann dies mit den Direktiven limit_req_zone und limit_req erfolgen . Der folgende Code legt die Speicher- und Geschwindigkeitseinschränkungen für die Verwendung an jedem Ort fest, für dessen Anzeige Ihr Server konfiguriert ist:
limit_req_zone $binary_remote_addr zone=speedbump:10m rate=10r/s;
„Zone“ gibt den Namen und die Kapazität (in diesem Fall in Megabyte) des Speicherplatzes an, in dem Benutzeranfragen gespeichert werden. „Rate“ legt die Gesamtzahl der Anfragen fest, die Nginx pro Sekunde akzeptiert (in diesem Beispiel 10 Anfragen). Stellen Sie sich diesen Code als eine Regel vor, und was folgt, ist die Verwendung dieser Regel:
limit_req zone=speedbump burst=20;
Der obige Code leistet tatsächlich etwas mehr als nur die Implementierung einer Limitregel. Außerdem wird eine kleine Warteschlange mit bis zu 20 Anfragen hinzugefügt, um legitime Verbindungen ordnungsgemäß zu verarbeiten, die etwas schneller als normal dargestellt werden und sowohl die Regeln als auch die Warteschlange überschreiten, was zu einem 503-Fehler für den Client führt. Beide Anweisungen sehen in nginx.conf so aus:
Erstellen Sie eine Blacklist mit IP-Adressen
Wenn Sie die IP-Adresse erhalten , die den DDoS-Angriff auf Ihren Server ausführt, können Sie sie einfach auf die schwarze Liste setzen und alle von dieser IP-Adresse ausgehenden Verbindungen entfernen.
Fügen Sie Ihrer Serveranweisung den folgenden Code hinzu:
location / {
deny 123.123.123.0/28;
# ...
}
Blockieren Sie Anfragen für bestimmte Dateien
Wenn der DDoS-Angriff auf bestimmte Dateien auf dem Server abzielt – zum Beispiel auf die Datei xmlrpc.php auf WordPress (dies ist eine häufig angegriffene Datei auf den meisten WordPress-Servern), können Sie sie alle blockieren. Alle Anforderungen dafür sind erfüllt. Fügen Sie diesen Code zu Ihrer Serveranweisung hinzu:
location /xmlrpc.php {
deny all;
}
Befolgen Sie den oben beschriebenen Prozess und Sie werden in der Lage sein, die meisten DDoS-Angriffe einzudämmen. Sehen Sie sich unbedingt die Nginx-Dokumentation an , um weitere Sicherheitsoptionen zu finden, die Sie anwenden können.
Ich hoffe, Sie haben Erfolg.