Entdecken Sie, wie Sie den Webserver Nginx verwenden können, um bestimmte DDoS-Angriffe durch eine sichere Konfiguration zu blockieren. Dieser Ansatz hilft Ihrem Server, sich gegen häufige DDoS-Angriffe zu schützen. Durch die Verbesserung der Nginx-Konfiguration können Sie Ihren Server vor verschiedenen Arten von Angriffen schützen.

OuiHeberg bietet einen kostenlosen Anti-DDoS-Schutz gegen bestimmte gezielte Angriffe. Durch die Nutzung unserer VPS- oder dedizierten Server profitieren Sie von einem Anti-DDoS-Schutz ohne zusätzliche Kosten. Dennoch können die Minderungskapazitäten, die verwendeten Methoden und die Filterung je nach dem von Ihnen gewählten Standort variieren.

Voraussetzungen

  • Nginx: Stellen Sie sicher, dass Nginx auf Ihrem Server installiert ist.
  • Grundkenntnisse: Sie sollten mit grundlegenden Linux-Befehlen vertraut sein und wissen, wie Sie auf die Nginx-Konfigurationsdateien zugreifen können.
  • VPS oder dedizierter Server: Ein virtueller privater Server oder dedizierter Server oder eine virtuelle Maschine auf Ihrem lokalen Host.
  • DDoS-Schutz: Ihr Hosting-Anbieter sollte eine Form von DDoS-Schutz bieten, um komplexere Angriffe abmildern zu können.
  • Linux: Jede mit Nginx kompatible Distribution.

Einschränkungen

Dieser Leitfaden ist keine vollständige Lösung, um sich gegen alle DDoS-Angriffe zu verteidigen. Er wird wahrscheinlich dazu beitragen, einige häufige Angriffe abzumildern und Ihren Server betriebsbereit zu halten. Für einige komplexe DDoS-Angriffe ist es jedoch notwendig, dass Ihr Hosting-Anbieter einen angemessenen DDoS-Schutz bietet, um diese zu blockieren und zu verhindern. Diese Konfiguration kann nicht gegen alle Formen von Angriffen auf Ihren Server schützen; sie ist darauf ausgelegt, bestimmte Arten von Angriffen zu verhindern und zu blockieren, wird jedoch ohne den DDoS-Schutz Ihres Anbieters nicht effektiv sein.

Warnung

OuiHeberg rät davon ab, diese Konfiguration direkt auf Ihrem Produktionsserver anzuwenden, ohne sie vorher getestet zu haben. Wir übernehmen keine Verantwortung für eventuelle Probleme, die dadurch entstehen könnten. Stellen Sie sicher, dass Sie die bewährten Sicherheitspraktiken für Server befolgen und vor jeder Änderung Backups durchführen, falls eine Wiederherstellung erforderlich ist. Bitte konsultieren Sie die Nginx-Dokumentation zum Thema DDoS-Schutz, um das Funktionsprinzip zu verstehen.

Nginx verstärken, um DDoS-Angriffe zu verhindern

Um Nginx vor DDoS-Angriffen zu schützen und seine Widerstandsfähigkeit gegen häufige Angriffe zu erhöhen, ist es notwendig, verschiedene Minderung- und Präventionsstrategien zu implementieren. So konfigurieren Sie Nginx, um seine Sicherheit zu verbessern:

1. Nginx aktualisieren

Stellen Sie sicher, dass Sie die neueste stabile Version von Nginx verwenden, um von den neuesten Sicherheitsupdates und Verbesserungen zu profitieren.

2. Verbindungen begrenzen

Verwenden Sie das Modul limit_conn, um die Anzahl der Verbindungen von einer einzelnen IP-Adresse zu beschränken. Dies hilft, DDoS-Angriffe zu verhindern, die versuchen, Ihren Server mit einer großen Anzahl gleichzeitiger Verbindungen zu ü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;
        # Weitere Serverkonfigurationen...
    }
}

3. Verwaltung von IP-Whitelist und -Blacklist

Verwenden Sie die Direktiven allow und deny, um vertrauenswürdige IP-Adressen zuzulassen und bösartige zu blockieren.

http {
    # Vertrauenswürdige IP-Adressen zulassen
    allow 192.168.1.0/24;
    deny all;
    # Weitere Serverkonfigurationen...
}


4. Installation einer Web Application Firewall (WAF)

Integrieren Sie Drittanbieter-Module wie ModSecurity mit Nginx, um bösartigen HTTP-Verkehr zu erkennen und zu blockieren.

5. HTTPS aktivieren

Verwenden Sie HTTPS, um die Kommunikation zwischen Clients und dem Server zu verschlüsseln, was das Abfangen von Daten und Man-in-the-Middle-Angriffe verhindert.

6. Nicht verwendete Module deaktivieren

Deaktivieren Sie Nginx-Module, die Sie nicht benötigen, um die Angriffsfläche zu reduzieren und die Leistung zu optimieren.

./configure --without-http_autoindex_module --without-http_ssi_module

7. Nginx-Konfiguration optimieren

Passen Sie die Nginx-Konfigurationseinstellungen wie Arbeitsprozesse, Arbeitsverbindungen und Zeitüberschreitungen an die Hardware-Ressourcen Ihres Servers und das erwartete Verkehrsaufkommen an.

8. Überwachung und Protokollierung

Überprüfen Sie regelmäßig die Serverprotokolle, um verdächtige Aktivitäten zu erkennen, und richten Sie Alarmsysteme ein, um Administratoren im Falle potenzieller Angriffe zu informieren.

9. Nutzung von DDoS-Schutzdiensten

Erwägen Sie den Einsatz von spezialisierten DDoS-Schutzdiensten oder -Appliances vor Nginx, wie Cloudflare, AWS Shield oder Akamai.

10. Regelmäßige Backups durchführen

Stellen Sie sicher, dass Sie regelmäßig wichtige Daten sichern, um die Auswirkungen im Falle erfolgreicher Angriffe zu minimieren.

Vergessen Sie nicht, dass Sicherheit ein kontinuierlicher Prozess ist. Es ist wichtig, über die neuesten Bedrohungen und bewährten Sicherheitspraktiken informiert zu bleiben, um Ihren Server effektiv vor potenziellen Angriffen zu schützen.

DDoS-Schutzkonfiguration für Nginx

Hier ist eine Konfiguration, die Sie Ihrer nginx.conf-Datei hinzufügen können, um die Sicherheit zu erhöhen:

# Eine Zone definieren, um die Verbindungen jeder IP zu verfolgen

http {
    limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
    # Eine Zone definieren, um die Anfragen jeder IP zu verfolgen
    limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=10r/s;

    server {
        listen 80;
        server_name beispiel.com;

        # Anfragerate begrenzen
        limit_req zone=req_limit_per_ip burst=20;

        # Maximale Anzahl von Verbindungen einer einzelnen IP begrenzen
        limit_conn conn_limit_per_ip 20;

        # Anfragen mit großen Anfragekörpern ablehnen, um bestimmte Angriffsarten abzumildern
        client_body_buffer_size 1k;
        client_header_buffer_size 1k;
        client_max_body_size 1k;
        large_client_header_buffers 2 1k;

        # Gzip-Komprimierung aktivieren, um Bandbreite zu sparen
        gzip on;
        gzip_comp_level 5;
        gzip_min_length 256;
        gzip_proxied any;
        gzip_vary on;

        # Sicherheitsheader hinzufügen, um den Schutz zu verstärken
        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" always;

        # Häufige anfällige User-Agents blockieren
        if ($http_user_agent ~* (wget|curl) ) {
            return 403;
        }

        # Zugriff auf versteckte Dateien blockieren
        location ~ /\. {
            deny all;
        }

        # Zugriff auf bestimmte Dateitypen blockieren
        location ~* \.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\..*|Entries.*|Repository|Root|Tag|Template)$|^#.*#$|\.php_ {
            deny all;
            return 403;
        }

        # Ihre IP für den Zugriff auf die Administration auf die Whitelist setzen
        location /admin {
            allow ihre_admin_ip;
            deny all;
        }

        # Zugriff auf bestimmte Verzeichnisse verbieten
        location ~ /(system|vendor) {
            deny all;
            return 403;
        }

        # Proxy, um Anfragen an Ihren Anwendungsserver weiterzuleiten
        location / {
            proxy_pass http://ihr_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 führt folgende Aktionen aus:

  • Ratenbegrenzung: Beschränkt jede IP-Adresse auf 10 Anfragen pro Sekunde mit einer erlaubten Burst von 20 Anfragen.
  • Verbindungsbegrenzung: Beschränkt jede IP-Adresse auf maximal 20 gleichzeitige Verbindungen.
  • Begrenzung der Anfragengröße: Beschränkt die Größe der Anfragekörper, um Angriffe abzumildern, die große Datenmengen senden.
  • Gzip-Komprimierung: Aktiviert die Gzip-Komprimierung, um Bandbreite zu sparen.
  • Sicherheitsheader: Fügt Header hinzu, um die Sicherheit zu erhöhen.
  • Blockierung anfälliger User-Agents: Blockiert Anfragen von User-Agents, die häufig für bösartige Aktivitäten verwendet werden.
  • Blockierung versteckter Dateien: Verhindert den Zugriff auf versteckte Dateien und Verzeichnisse.
  • Whitelist für Admin-Zugriff: Erlaubt nur Ihrer IP-Adresse den Zugriff auf den Administrationsbereich.
  • Zugriffsverbot auf bestimmte Verzeichnisse: Verhindert den Zugriff auf sensible Verzeichnisse wie system und vendor.
  • Proxy Pass: Leitet Anfragen an Ihren Anwendungsserver weiter.

Stellen Sie sicher, dass Sie diese Konfiguration an Ihre spezifischen Bedürfnisse anpassen, insbesondere die Domainnamen, Backend-Serveradressen und IP-Adressen für die Administration. Überwachen Sie außerdem regelmäßig die Protokolle Ihres Servers und passen Sie die Konfigurationen entsprechend den sich entwickelnden Bedrohungen an.

Wie man diese Konfiguration in Nginx integriert

Hier sind die Schritte, um diese Konfiguration hinzuzufügen:

  1. Lokalisieren Sie die nginx.conf-Datei: Je nach Ihrer Installation kann sich die nginx.conf-Datei an verschiedenen Orten befinden, wie /etc/nginx/nginx.conf, /usr/local/nginx/conf/nginx.conf oder /etc/nginx/sites-available/default.

  2. Öffnen Sie die nginx.conf-Datei: Verwenden Sie einen Texteditor oder einen Befehlszeileneditor wie nano, vim oder emacs, um die Datei zu öffnen.

  3. Fügen Sie die Konfiguration in den http-Block ein: Innerhalb des http-Blocks, der die HTTP-Servereinstellungen definiert, fügen Sie die bereitgestellte Konfiguration ein. Dieser Block befindet sich normalerweise nahe dem Anfang der nginx.conf-Datei.

  4. Fügen Sie die bereitgestellte Konfiguration ein: Fügen Sie die gesamte vorherige Konfiguration innerhalb des http-Blocks ein. Stellen Sie sicher, dass Sie Standardwerte wie beispiel.com, ihre_admin_ip und ihr_backend_server durch Ihre spezifischen Informationen ersetzen.

  5. Speichern und schließen Sie die Datei: Nachdem Sie die Konfiguration integriert haben, speichern Sie die Änderungen und schließen Sie den Editor.

  6. Überprüfen Sie die Nginx-Konfiguration: Bevor Sie Nginx neu starten, wird empfohlen, die Konfiguration zu testen, um mögliche Syntaxfehler zu erkennen, indem Sie ausführen:

    nginx -t

    Wenn alles korrekt ist, wird eine Meldung angezeigt, die besagt, dass der Test der Konfigurationsdatei erfolgreich war.

  7. Starten Sie Nginx neu: Um die Änderungen anzuwenden, starten Sie Nginx mit dem Befehl neu:

    sudo service nginx restart

    Wenn Sie systemd nicht verwenden, müssen Sie möglicherweise einen anderen Befehl verwenden, um Nginx neu zu starten.

Indem Sie diese Schritte befolgen, integrieren Sie die vorgeschlagene Konfiguration in Ihren Nginx-Server und erhöhen so seine Sicherheit durch DDoS-Schutz und andere Sicherheitsmaßnahmen. Dieser Leitfaden hilft Ihnen, DDoS-Angriffe auf Nginx zu verhindern, indem Sie ihn korrekt konfigurieren.


OuiHeberg verpflichtet sich, Ihnen die besten Lösungen zur Sicherung Ihrer Online-Dienste zu bieten. Zögern Sie nicht, uns für weitere Fragen oder Unterstützung zu kontaktieren.