Härtung des Linux-Kernels über sysctl.conf. Schutz vor SYN-Flood-Angriffen und TCP-Optimierung | INTROSERV
EUR
european

EUR

usa

USD

German De
Ex. VAT Ex. VAT 0%

Härtung des Linux-Kernels über sysctl.conf. Schutz vor SYN-Flood-Angriffen und TCP-Optimierung

Einführung

In diesem Tutorial werden Sie den Linux-Kernel mit sysctl.conf härten, Ihren Server gegen SYN-Flood-Angriffe schützen und das Verhalten des TCP-Stacks optimieren. Tuning auf Kernel-Ebene verbessert die Widerstandsfähigkeit gegen netzwerkbasierte Denial-of-Service (DoS)-Angriffe und erhöht die allgemeine TCP-Leistung. Sie werden auch einen SYN-Flood-Angriff in einer kontrollierten Umgebung simulieren und überprüfen, ob Ihre Schutzmechanismen korrekt funktionieren.

Voraussetzungen

Zielgruppe: Fortgeschrittene Systemadministratoren
Geschätzte Zeit: 45–60 Minuten

Systemanforderungen

  • Betriebssystem: Ubuntu 24.04 LTS (getestet); kompatibel mit Debian 12/13 und anderen modernen Linux-Distributionen
  • Kernel-Version: 5.x oder höher
  • Mindestens 1 GB RAM
  • Root- oder Sudo-Rechte
  • Netzwerkzugriff zwischen Testmaschinen

Erforderliche Werkzeuge

Installieren Sie die folgenden Dienstprogramme:

sudo apt update

sudo apt install -y hping3 net-tools procps iproute2

Installation überprüfen: hping3 --version
Erwartete Ausgabe: Versionsinformationen, die eine erfolgreiche Installation bestätigen.

Tip

Führen Sie die SYN-Flood-Simulation nur in einer kontrollierten Laborumgebung durch. Testen Sie niemals gegen Systeme, die Sie nicht besitzen oder für die Sie keine Erlaubnis zum Testen haben.

Schritt 1: Aktuelle sysctl-Konfiguration sichern

Erstellen Sie vor Änderungen ein Backup.

sudo cp /etc/sysctl.conf /etc/sysctl.conf.backup

Ergebnis: Eine Sicherungsdatei /etc/sysctl.conf.backup wird erstellt.

Schritt 2: Kernel-Parameter für SYN-Flood-Schutz konfigurieren

Öffnen Sie die Konfigurationsdatei:

sudo nano /etc/sysctl.conf

Fügen Sie die folgenden Parameter hinzu oder ändern Sie sie.

SYN-Cookies aktivieren

net.ipv4.tcp_syncookies = 1

Zweck: Aktiviert SYN-Cookies, wenn die SYN-Backlog-Warteschlange überläuft.
Werte:

  • 0 – Deaktiviert
  • 1 – Aktiviert, wenn SYN-Backlog-Überlauf auftritt (empfohlen)
  • 2 – Immer aktiviert (selten verwendet)

Warum: SYN-Cookies verhindern Speichererschöpfung, indem sie die Ressourcenallokation bis zum Abschluss des Handshakes vermeiden.

Tip

In modernen Distributionen ist diese Option standardmäßig aktiviert. Sie können dies mit dem folgenden Befehl überprüfen: sysctl -a | grep net.ipv4.tcp_syncookies

SYN-Backlog-Warteschlange erhöhen

net.ipv4.tcp_max_syn_backlog = 4096

Zweck: Maximale Anzahl von Warteschlangenverbindungsanfragen, die auf Bestätigung warten.
Warum: Größere Backlogs ermöglichen mehr halb-offene Verbindungen, bevor der Kernel beginnt, sie zu verwerfen.

SYN-ACK-Wiederholungen reduzieren

net.ipv4.tcp_synack_retries = 3

Zweck: Anzahl der Wiederholungen für SYN-ACK-Pakete.
Warum: Eine Reduzierung verringert die Zeit, die mit dem Warten auf bösartige halb-offene Verbindungen verbracht wird.

TCP Time-Wait-Wiederverwendung aktivieren

net.ipv4.tcp_tw_reuse = 1

Zweck: Ermöglicht die Wiederverwendung von TIME-WAIT-Sockets für neue ausgehende Verbindungen.
Werte:

  • 0 – Deaktiviert
  • 1 – Aktiviert

Warum: Reduziert die Socket-Ermüdung bei hoher Last.

FIN-Timeout reduzieren

net.ipv4.tcp_fin_timeout = 15

Zweck: Zeit, die ein Socket im FIN-WAIT-2-Zustand verbleibt.
Warum: Reduziert den Ressourcenverbrauch durch veraltete Verbindungen.

Reverse Path Filtering aktivieren

net.ipv4.conf.all.rp_filter = 1

Zweck: Validiert Quell-IP-Adressen anhand der Routing-Tabelle.
Werte:

  • 0 – Deaktiviert
  • 1 – Strikter Modus
  • 2 – Lockerer Modus

Warum: Hilft, IP-Spoofing-Angriffe zu mindern.

Maximale offene Dateien erhöhen

fs.file-max = 2097152

Zweck: Maximale Anzahl von Datei-Handles systemweit.
Warum: Verhindert die Erschöpfung von Dateideskriptoren bei hoher Verbindungsbelastung.

Schritt 3: sysctl-Änderungen anwenden

Änderungen ohne Neustart anwenden:

sudo sysctl -p

Erwartete Ausgabe: Jeder Parameter wird mit seinem neuen Wert angezeigt.
Spezifischen Parameter überprüfen: sysctl net.ipv4.tcp_syncookies
Erwartete Ausgabe: net.ipv4.tcp_syncookies = 1

Ergebnis: Kernel-Parameter sind aktiv.

Schritt 4: SYN-Flood-Angriff simulieren

Info

Wichtig: Führen Sie dies nur in einer Laborumgebung durch.

Von einer separaten Testmaschine ausführen:

sudo hping3 -S --flood -V <YOUR_SERVER_IP> -p 80

Erklärung:

  • -S sendet SYN-Pakete
  • --flood sendet Pakete so schnell wie möglich
  • -p 80 zielt auf den HTTP-Port

Ergebnis: Hohe Anzahl von SYN-Paketen wird an den Server gesendet.

Schritt 5: Server während des Angriffs überwachen

Auf dem Zielserver Verbindungen überwachen:

netstat -ant | grep SYN_RECV | wc -l

Ergebnis: Zeigt die Anzahl der halb-offenen Verbindungen an.

SYN-Cookies-Zähler überprüfen:

nstat -az | grep Syncookies

Sie sollten steigende Zähler wie TcpExtSyncookiesSent beobachten. Dies bestätigt, dass SYN-Cookies verwendet werden.

Schritt 6: Verhalten vor und nach der Härtung vergleichen

Wenn Sie ohne Härtung testen:

  • SYN_RECV-Zähler wächst schnell
  • Server kann unempfänglich werden
  • Verbindungswarteschlange überläuft

Nach der Härtung:

  • SYN-Cookies werden aktiviert
  • Weniger abgebrochene Verbindungen
  • Server bleibt empfänglich

Installieren Sie einen Webserver auf dem Zielserver:

sudo apt install nginx

Um die Reaktionsfähigkeit zu testen:

curl http://localhost

Ergebnis: Der Server reagiert normal, selbst während des simulierten Angriffs.

Schritt 7: TCP-Leistungsoptimierung (Optionale erweiterte Optimierung)

Fügen Sie zusätzliche Tuning-Parameter zur sysctl-Konfiguration hinzu. Führen Sie nano /etc/sysctl.conf aus und fügen Sie hinzu:

net.core.somaxconn = 8192

net.core.netdev_max_backlog = 5000

net.ipv4.tcp_max_tw_buckets = 2000000

Erklärung:

  • net.core.somaxconn – maximale Länge der Abhörwarteschlange für Anwendungen.
  • net.core.netdev_max_backlog – maximale Anzahl von Paketen, die auf der Eingabeseite vor der Verarbeitung in die Warteschlange gestellt werden.
  • net.ipv4.tcp_max_tw_buckets – maximale TIME-WAIT-Sockets. Diese Option ist relevant für Server mit hoher Last und ausreichendem RAM.

Diese verbessern die Leistung bei hohem Datenverkehr.

Änderungen anwenden:

sudo sysctl -p

Überprüfungsliste

  • sysctl -p läuft fehlerfrei
  • tcp_syncookies ist gleich 1
  • SyncookiesSent-Zähler steigt während des Angriffs
  • Server bleibt empfänglich
  • Keine Kernel-Warnungen in den Protokollen: dmesg | grep -i syn

Änderungen rückgängig machen

Ursprüngliche Konfiguration wiederherstellen:

sudo cp /etc/sysctl.conf.backup /etc/sysctl.conf

sudo sysctl -p

Ergebnis: System kehrt zu den ursprünglichen Kernel-Parametern zurück.

Optional Testwerkzeuge entfernen:

sudo apt remove hping3 -y

Fehlerbehebung

Syncookies erhöhen sich nicht

Überprüfen: sysctl net.ipv4.tcp_syncookies
Wenn der Wert 0 ist, Konfiguration erneut anwenden.

Server verwirft weiterhin Verbindungen

Backlog erhöhen: net.ipv4.tcp_max_syn_backlog = 8192
Dann Änderungen anwenden:

sudo sysctl -p

Fazit

Sie haben den Linux-Kernel mit sysctl.conf gehärtet, SYN-Flood-Schutzmechanismen aktiviert, das Verhalten des TCP-Stacks optimiert und die Schutzmaßnahmen durch eine kontrollierte Angriffssimulation überprüft. Diese Änderungen verbessern die Widerstandsfähigkeit gegen SYN-Flood-Angriffe und erhöhen die allgemeine Netzwerkstabilität.

Nächste Schritte

  • Kombinieren Sie mit Firewall-Rate-Limiting (iptables oder nftables)
  • Implementieren Sie Verbindungsverfolgungslimits
  • Setzen Sie Intrusion Detection Systems (IDS) ein
  • Überwachen Sie Metriken mit Prometheus und Grafana

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA