📒  Vertrauen und sicherheit

Wie man einen DDoS-Angriff auf Nginx verhindert

Wie man ddos Angriff auf Nginx zu verhindern, lernen, wie man bestimmte DDoS-Angriffe mit Nginx Web-Server mit diesem nginx ddos Schutz Konfiguration zu blockieren, wird dies helfen, Ihren Server zu verhindern und blockieren bestimmte gemeinsame DDoS-Angriffe, mit Nginx Konfiguration und Härten können Sie einige Angriffe in Ihrem Server zu blockieren.

Alexhost bietet kostenlose Anti-DDoS-Schutz gegen einige bestimmte Angriffe, können Sie unsere VPS-Server oder Dedicated Server verwenden, bieten wir kostenlose Anti-DDoS-Schutz, aber die Kapazität der Mitigations, Methoden, Filterung wird in der Lage, die Sie wählen, unterschiedlich sein.

Anforderungen:
Nginx (Sie müssen Nginx auf Ihrem aktuellen Server installiert haben)
Einige Kenntnisse (Sie müssen wissen, wie man grundlegende Linux-Befehle verwendet und wie man auf einige Nginx-Dateien zugreift; Know-how wird erwartet)
VPS-Server oder Dedicated Server (Sie können eine VM auf Ihrem lokalen Rechner verwenden)
DDoS-Schutz (von Ihrem Hosting-Provider erforderlich, um komplexere DDoS-Angriffe abwehren zu können)
Linux (jede Distribution, auf der Nginx installiert werden kann)
Nginx (Sie müssen eventuell die Nginx-Dokumentation lesen, um zu testen und zu prüfen, ob es noch zuverlässig ist)

Begrenzungen: Dieses Tutorial ist kein “kugelsicherer” Schutz gegen alle DDoS-Attacken, es wird wahrscheinlich den Angriff begrenzen, indem es bestimmte Arten von gewöhnlichen Angriffen blockiert und Ihrem Server hilft, online zu sein. Es gibt einige Einschränkungen gegen einige DDoS-Attacken, Sie benötigen, dass Ihr Hosting-Provider bietet eine Art von DDoS-Schutz, um zu blockieren und zu verhindern, kann diese Konfiguration nicht gegen alle Angriffe auf Ihren Server zu schützen. Diese Konfiguration soll einige Angriffe verhindern und blockieren, aber sie wird nicht alle Angriffe ohne DDoS-Schutz von Ihrem Hosting-Provider blockieren.

Warnung: Alexhost empfiehlt Ihnen nicht, diese Konfiguration in Ihrem Produktionsserver zu verwenden, wir empfehlen, sie zu testen, bevor Sie etwas tun. Alexhost ist nicht verantwortlich für jegliche Art von Problemen, die dadurch entstehen können. Achten Sie auf eine gute Serversicherheit, bevor Sie etwas implementieren, sichern Sie alles für den Fall, dass Sie es wiederherstellen müssen. Bitte lesen Sie die Nginx-Dokumentation für DDoS-Schutz, um zu verstehen, wie es funktioniert.

Verhindern Sie DDoS-Angriffe durch Abhärtung von Nginx

Die Konfiguration von Nginx für den DDoS-Schutz und die Härtung gegen gängige Angriffsschichten beinhaltet die Implementierung verschiedener Strategien zur Abschwächung und Verhinderung von Angriffen. Hier finden Sie einen Leitfaden zur Konfiguration von Nginx, um die Sicherheit zu erhöhen und zu erfahren, wie Sie DDoS-Angriffe auf Nginx durch Abhärtung Ihres Webservers verhindern können:

  1. Aktualisieren Sie Nginx: Stellen Sie sicher, dass Sie die neueste stabile Version von Nginx verwenden, um von den neuesten Sicherheitspatches und Verbesserungen zu profitieren.
  2. Begrenzen Sie Verbindungen: Verwenden Sie das Modul limit_conn, um die Anzahl der Verbindungen von einer einzelnen IP-Adresse zu begrenzen. Dies hilft, DDoS-Angriffe zu verhindern, die Ihren Server mit zu vielen gleichzeitigen Verbindungen überlasten.

http {
    limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=1r/s;

    server {
        limit_req zone=req_limit_per_ip burst=5;
        # Andere Serverkonfigurationen...
    }
}

Whitelist/Blacklist IPs: Verwenden Sie die allow- und deny-Direktiven, um vertrauenswürdige IP-Adressen auf die Whitelist zu setzen und bösartige zu blockieren.
nginx

http {
    # Whitelist vertrauenswürdiger IP-Adressen
    allow 192.168.1.0/24;
    deny all;
    # Andere Serverkonfigurationen...
}

Implementieren Sie eine Web Application Firewall (WAF): Verwenden Sie Module von Drittanbietern wie ModSecurity mit Nginx, um bösartigen HTTP-Verkehr zu erkennen und zu blockieren.

Aktivieren Sie HTTPS: Verschlüsseln Sie die Kommunikation zwischen Clients und dem Server mit HTTPS, um das Abfangen von Daten und Man-in-the-Middle-Angriffe zu verhindern.

Ungenutzte Module deaktivieren: Deaktivieren Sie nicht benötigte Nginx-Module, um die Angriffsfläche zu verringern und die Leistung zu verbessern.
nginx

./configure --without-http_autoindex_module --without-http_ssi_module
  1. Abstimmung der Nginx-Konfiguration: Optimieren Sie Nginx-Konfigurationsparameter wie Worker-Prozesse, Worker-Verbindungen und Timeouts basierend auf den Hardware-Fähigkeiten Ihres Servers und dem erwarteten Datenverkehr.
  2. Überwachung und Protokollierung: Überwachen Sie die Serverprotokolle regelmäßig auf verdächtige Aktivitäten und richten Sie Warnsysteme ein, um die Administratoren über potenzielle Angriffe zu informieren.
  3. Implementierung von DDOS-Schutzdiensten: Erwägen Sie den Einsatz von spezialisierten DDoS-Schutzdiensten oder -Appliances vor Nginx, z. B. Cloudflare, AWS Shield oder Akamai.
  4. Regelmäßige Backups: Sorgen Sie für regelmäßige Backups wichtiger Daten, um die Auswirkungen erfolgreicher Angriffe zu minimieren.

Denken Sie daran, dass Sicherheit ein fortlaufender Prozess ist, und es ist wichtig, sich über die neuesten Sicherheitspraktiken und Bedrohungen auf dem Laufenden zu halten, um Ihren Server effektiv vor potenziellen Angriffen zu schützen.

Nginx ddos Schutz Konfiguration:

#Definieren Sie eine Zone, um Verbindungen von jeder IP zu verfolgen

http {
    limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
    # Definieren Sie eine Zone, um Anfragen von jeder IP zu verfolgen
    limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=10r/s;
    server {
        listen 80;
        server_name example.com;
        # Ratenbegrenzung für Anfragen
        limit_req zone=req_limit_per_ip burst=20;
        # Begrenzung der maximalen Anzahl von Verbindungen von einer einzelnen IP
        limit_conn conn_limit_per_ip 20;
        # Ablehnung von Anfragen mit großen Anfragekörpern, um einige Arten von Angriffen abzuschwächen
        client_body_buffer_size 1k;
        client_header_buffer_size 1k;
        client_max_body_size 1k;
        large_client_header_buffers 2 1k;
        # Gzip-Kompression aktivieren, um Bandbreite zu sparen
        gzip an;
        gzip_comp_level 5;
        gzip_min_length 256;
        gzip_proxied beliebig;
        gzip_vary on;
        # Sicherheitsheader hinzufügen, um die Sicherheit zu erhöhen
        add_header X-Content-Type-Options "nosniff";
        add_header X-XSS-Protection "1; mode=block";
        add_header X-Frame-Options "SAMEORIGIN";
        add_header Referrer-Policy "same-origin";
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" immer;
        # Gemeinsame verwundbare User-Agents blockieren
        if ($http_user_agent ~* (wget|curl) ) {
            return 403;
        }
        # Zugriff auf versteckte Dateien blockieren
        location ~ /\. {
            alle verweigern;
        }
        # Zugriff auf bestimmte Dateitypen blockieren
        location ~* \.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\..*|Einträge.*|Repository|Root|Tag|Template)$|^#.*#$|\.php_ {
            alle verweigern;
            return 403;
        }
        # Whitelist Ihrer IP für administrativen Zugriff
        standort /admin {
            allow your_admin_ip;
            alle verweigern;
        }
        # Zugriff auf bestimmte Verzeichnisse verweigern
        standort ~ /(System|Händler) {
            alle verweigern;
            return 403;
        }
        # Proxy-Anfragen an Ihren Anwendungsserver weiterleiten
        standort / {
            proxy_pass http://your_backend_server;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}

Diese Konfiguration bewirkt Folgendes:

  1. Ratenbegrenzung: Begrenzt die Anzahl der Anfragen von jeder IP-Adresse auf 10 Anfragen pro Sekunde mit einem Burst von 20 Anfragen.
  2. Verbindungsbegrenzung: Begrenzt die maximale Anzahl der Verbindungen von jeder IP-Adresse auf 20.
  3. Begrenzung der Größe des Anfragekörpers: Begrenzt die Größe von Anfragekörpern, um Angriffe abzuschwächen, die große Anfragekörper senden.
  4. Gzip-Komprimierung: Aktiviert die Gzip-Komprimierung, um Bandbreite zu sparen.
  5. Sicherheits-Header: Fügt Sicherheits-Header hinzu, um die Sicherheit zu erhöhen.
  6. Blockieren anfälliger Benutzer-Agenten: Blockiert Anfragen von häufigen anfälligen Benutzer-Agenten.
  7. Blockieren von versteckten Dateien: Blockiert den Zugriff auf versteckte Dateien und Verzeichnisse.
  8. Whitelisting Admin-Zugang: Erlaubt den Zugriff auf den Verwaltungsbereich nur von Ihrer IP-Adresse aus.
  9. Zugriff auf bestimmte Verzeichnisse verweigern: Sperrt den Zugriff auf sensible Verzeichnisse wie System und Vendor.
  10. Proxy-Pass: Leitet Anfragen an Ihren Anwendungsserver weiter.

Stellen Sie sicher, dass Sie die Konfiguration an Ihre spezifischen Anforderungen anpassen, z. B. an Domänennamen, Backend-Server-Adressen und administrative IP-Adressen. Überwachen Sie außerdem regelmäßig Ihre Serverprotokolle und passen Sie die Konfigurationen bei Bedarf an, um sie an sich entwickelnde Bedrohungen anzupassen.

Die bereitgestellte Konfiguration sollte der Datei nginx.conf hinzugefügt oder in separate Konfigurationsdateien aufgenommen werden. Hier finden Sie eine Schritt-für-Schritt-Anleitung, wo Sie die Konfiguration hinzufügen können:

  1. Suchen Sie die Dateinginx.conf: Abhängig von Ihrer Nginx-Installation kann sich die Datei nginx.conf in verschiedenen Verzeichnissen befinden. Übliche Speicherorte sind /etc/nginx/nginx.conf, /usr/local/nginx/conf/nginx.conf oder /etc/nginx/sites-available/default.
  2. Öffnen Sie die Dateinginx.conf: Sie können die Datei mit einem Texteditor oder einem Befehlszeilen-Texteditor wie nano, vim oder emacs öffnen.
  3. Fügen Sie die Konfiguration innerhalb des http-Blockshinzu : Innerhalb des http-Blocks, der die Einstellungen des HTTP-Servers definiert, fügen Sie die bereitgestellte Konfiguration hinzu. Normalerweise finden Sie den http-Block in der Nähe des oberen Endes der Datei nginx.conf.
  4. Fügen Sie die bereitgestellte Konfiguration ein: Fügen Sie die gesamte zuvor bereitgestellte Konfiguration in den http-Block ein. Stellen Sie sicher, dass Sie Platzhalterwerte wie example.com, your_admin_ip und your_backend_server durch Ihre tatsächlichen Werte ersetzen.
  5. Speichern und beenden Sie die Datei: Nachdem Sie die Konfiguration hinzugefügt haben, speichern Sie die Datei nginx.conf und beenden Sie den Texteditor.
  6. Testen Sie die Nginx-Konfiguration: Bevor Sie Nginx neu starten, empfiehlt es sich, die Konfiguration auf Syntaxfehler zu testen.
  7. Dazu können Sie den folgenden Befehl ausführen:
    nginx -t

Wenn keine Syntaxfehler vorhanden sind, wird eine Meldung angezeigt, die besagt, dass der Test der Konfigurationsdatei erfolgreich war.

Starten Sie Nginx neu: Starten Sie abschließend Nginx neu, um die Änderungen zu übernehmen. Sie können dies mit dem folgenden Befehl tun:
sudo service nginx restart

  1. Wenn Sie kein System mit systemd verwenden, können Sie andere Befehle verwenden, um Nginx neu zu starten.

Wenn Sie diese Schritte befolgen, fügen Sie die bereitgestellte Konfiguration zu Ihrem Nginx-Server hinzu und erhöhen seine Sicherheit mit DDoS-Schutz und anderen Sicherheitsmaßnahmen. Dieses Tutorial hilft Ihnen,DDoS-Angriffe auf Nginx durch die Konfiguration von Nginxzu verhindern.