linux-security security hardening brute-force fail2ban pam defense-in-depth

Brute-Force Protection: Multi-Layer Defense (Artikel 327)

Ganzheitliche Strategien zur Abwehr von Brute-Force-Angriffen. Erfahren Sie, wie Sie Netzwerkfilter, Betriebssystem-Sperren und Protokoll-Härtung zu einer unüberwindbaren Mauer kombinieren.

# Brute-Force Abatement: Verteidigung in Schichten

TL;DR / Management Summary Ein einzelnes Security-Tool reicht nicht aus. Um Brute-Force-Angriffe (automatisches Durchprobieren von Passwörtern) effektiv zu stoppen, nutzen wir das Swiss Cheese Model: Wir legen mehrere Schichten übereinander. Layer 1 (Firewall/Fail2Ban) blockiert den Traffic, Layer 2 (SSHD) erschwert den Protokoll-Handshake und Layer 3 (PAM) sperrt den Account lokal. Wer dieses Trio beherrscht, macht seinen Server für Botnetze wertlos.


# 1. Einführung & Architektur

Defense in Depth.

Jede Verteidigungsschicht hat Schwächen. Durch die Kombination eliminieren wir diese.

# Die Verteidigungs-Kette (Mermaid)

graph TD
    A[Attacker Bot] -->|Phase 1: Connection| B{Firewall / Fail2Ban}
    B -->|Drop IP| C[Blocked at Edge]
    B -->|Passed| D{Layer 2: SSHD Hardening}
    D -->|Invalid Port / Key| E[Immediate Disconnect]
    D -->|Passed| F{Layer 3: PAM Faillock}
    F -->|Attempts > 5| G[Account Locked Locally]
    F -->|Success| H[Successful Login]

# 2. Layer 1: Die Netzwerk-Barriere (Fail2Ban)

Den Lärm draußen lassen.

Fail2Ban (Artikel 028) reagiert, bevor der Angreifer überhaupt den Login-Prozess belasten kann.

  • Best Practice: Setzen Sie findtime = 1h und maxretry = 3. Ein Mensch braucht keine 3 Versuche pro Stunde, wenn er SSH-Keys nutzt.

# 3. Layer 2: Protokoll-Härtung (SSHD)

Die Verhandlung erschweren.

In der sshd_config:

# Reduziert die Zeit, die ein unauthentifizierter Socket offen bleibt
LoginGraceTime 30s

# Begrenzt parallele Verbindungsaufbauten (Tarpit)
MaxStartups 10:30:60
  • 10:30:60: Ab 10 parallelen Verbindungen werden 30% der neuen Anfragen verworfen, ab 60 Verbindungen alle.

# 4. Layer 3: Lokale Account-Sperre (PAM)

Der letzte Schutz.

Selbst wenn der Angreifer über tausende verschiedene IPs angreift (Distributed Brute-Force), greift PAM Faillock (Artikel 326), da es auf den Ziel-Benutzernamen schaut, nicht auf die Quell-IP.


# 5. Day-2 Operations: Tarpitting (Die Teergrube)

Angreifer Zeit kosten.

Ein effizienter Schutz ist das künstliche Verlangsamen von Antworten.

  • Nutzen Sie in der Firewall (nftables) die limit Funktion, um Antworten auf falsche Ports zu verzögern.
  • Resultat: Ein Scanner, der normalerweise 1000 Passwörter pro Sekunde testet, schafft nur noch 1 Passwort alle 10 Sekunden. Der Angriff wird ökonomisch unrentabel.

# 6. Troubleshooting & “War Stories”

Wenn die Abwehr zu gut funktioniert.

# Story 1: “Der ausgesperrte Admin-Bot”

Symptom: Das automatisierte Monitoring-System (z.B. Zabbix) kann den Server-Status nicht mehr via SSH abfragen. Ursache: Das Monitoring-Skript hatte einen Fehler, hat hunderte falsche Logins produziert und wurde von Fail2Ban auf allen Servern gleichzeitig gebannt. Lösung: Whitelisting der Monitoring-IPs in jail.local (ignoreip) und Nutzung von SSH-Keys ohne Passphrase für Bots.

# Story 2: “Log Injection Attack”

Symptom: Fail2Ban blockiert keine IPs mehr, obwohl das Log voll mit Fehlern ist. Ursache: Ein Angreifer sendet speziell formatierte Benutzernamen (z.B. admin from 127.0.0.1), die den Regex-Parser von Fail2Ban verwirren oder die IP eines anderen (vielleicht Ihres DNS-Servers) vortäuschen. Lösung: Nutzen Sie modernere Regex-Pattern, die den Ursprung des Logs (systemd-journal) verifizieren, statt nur rohe Textfiles zu parsen.


# 7. Fazit & Empfehlung

  • Priorität: Schalten Sie Passwort-Logins ab. Das ist der beste Brute-Force-Schutz.
  • Kombination: Nutzen Sie Fail2Ban für die Masse und PAM für die gezielten Angriffe.
  • Wartung: Prüfen Sie wöchentlich faillock und fail2ban-client status.

# Anhang: Die ultimative Brute-Force Checkliste

Layer Maßnahme Tool
Netzwerk IP-Blocking Fail2Ban
Protokoll Port Change (22 -> 2222) SSHD
Protokoll Key-based Auth only SSHD
Protokoll MaxStartups (Tarpit) SSHD
Betriebssystem Account Lockout PAM Faillock
Überwachung Login Alerts (Real-time) Log-Shipper / SIEM