Fail2ban, UFW & Co.: Härtung deines Servers in einer Checkliste
Der Unterschied zwischen „läuft bei mir“ und „läuft sicher“ sind keine 200 € Sicherheitssoftware, sondern 14 konkrete Schritte. Diese Checkliste härtert jeden frischen Linux-Server in unter einer Stunde – getestet auf Debian/Ubuntu, komplett mit Open-Source-Tools.
Zugang & SSH härten
SSH ist das Einfallstor Nummer eins: Bots scannen das gesamte IPv4-Internet permanent nach offenen Port 22. Schritte 1–5 machen deinen Zugang praktisch immun gegen diese Angriffswelle:
-
Nicht-Root-Benutzer mit sudo anlegen
adduser admin && usermod -aG sudo admin– nie im Alltag als Root arbeiten. -
SSH-Schlüssel statt Passwort
Schlüssel lokal erzeugen (
ssh-keygen -t ed25519), dann mitssh-copy-id admin@serverübertragen und erst danach Passwort-Login abschalten. -
Root-Login verbieten
In
/etc/ssh/sshd_config:PermitRootLogin noundPasswordAuthentication no. Danachsudo systemctl restart ssh– aber erst, wenn der Schlüssel nachweislich funktioniert! -
Fail2ban aktivieren
Bannt IPs nach wiederholten Fehlversuchen automatisch (Standard: 5 Versuche in 10 Minuten →
10 Minuten Sperre). Debian/Ubuntu:
sudo apt install fail2ban. Die Jail für sshd ist standardmäßig aktiv. -
(Optional) SSH-Port ändern
Port 22022in der sshd_config reduziert das Log-Rauschen enorm – es ist aber Security-by-Obscurity und ersetzt keine der Schritte 1–4.
System härten
-
Firewall: UFW auf „deny by default“
sudo ufw default deny incoming, dann nur die nötigen Ports öffnen:sudo ufw allow 22022/tcp(SSH) undsudo ufw allow 80,443/tcp(Web). Aktivieren mitsudo ufw enable. Docker-Container-Ports gehören nicht in UFW – sie laufen ohnehin nur auf 127.0.0.1 hinter dem Reverse Proxy. -
Automatische Sicherheitsupdates
sudo apt install unattended-upgradesund aktivieren:sudo dpkg-reconfigure unattended-upgrades→ „Ja“. Kernel-Updates werden mit eingeschlossen, ein Neustart-Hinweis landet per E-Mail. -
Sudo mit Passwort & ohne NOPASSWD-Kürzel
Prüfen mit
sudo cat /etc/sudoers.d/README– Skripte, die NOPASSWD verlangen, kritisch hinterfragen. Besser: gezielte sudo-Regeln pro Befehl statt pauschaler Freifahrtschein. -
Unnötige Dienste deaktivieren
ss -tulpnzeigt alle offenen Ports. Alles, was du nicht kennst, stoppen und deaktivieren:sudo systemctl disable --now DIENST. Auf einem reinen Docker-Host sollten außer sshd, Docker und dem Monitoring praktisch keine Listener laufen.
Dienste & Container absichern
-
Container-Ports nur auf 127.0.0.1 binden
Die wichtigste Docker-Regel überhaupt:
"127.0.0.1:8080:80"statt"8080:80". Alles, was kein Reverse Proxy ist, hat im Internet nichts verloren. Details im Docker-Compose-Tutorial. -
Read-only-Root & Least Privilege
Container mit
read_only: truestarten, Schreibzugriff nur auf explizite Volumes. Privilegierte Container vermeiden – fast jede Docker-Eskalation beginnt dort. Wer Portainer/Watchtower nutzt, schützt deren Ports zusätzlich per IP-Allowlist im Proxy. -
Nur HTTPS nach außen
Der Reverse Proxy (siehe Vergleich) erzwingt
TLS mit
HSTS-Header und leitet HTTP auf HTTPS um. Let's Encrypt erneuert die Zertifikate automatisch – abgelaufene Zertifikate sind ein Klassiker unter vergessenen Homelabs.
Überwachung & Backups
-
Logs & Änderungen überwachen
Uptime Kuma pingt deine Dienste von außen,
logwatchfasst die Logs täglich per E-Mail zusammen. Wer tiefer geht, nutzt auditd oder Wazuh – für den Anfang reichen diese zwei. -
3-2-1-Backup einrichten
Drei Kopien deiner Daten, auf zwei Medien, eine davon extern.
borgbackupauf einen anderen Standort (z. B. hetzner Storage Box oder ein Pi bei Verwandten) ist der Open-Source-Standard:borg create ssh://backup@host/./repo::host-{now} /pfad/zu/daten. Täglich testen, dass die Backups wiederherstellbar sind – ein Backup, das du nie wiederhergestellt hast, ist ein Wunsch, kein Backup.
Kontrollfragen & Fazit
Beantworte diese fünf Fragen ehrlich – ist alles mit „Ja“ beantwortbar, ist dein Server auf einem soliden Stand:
| # | Kontrollfrage |
|---|---|
| 1 | Logge ich mich nur per SSH-Key ein, nie mit Passwort oder als Root? |
| 2 | Lauscht kein einziger Dienst auf einer öffentlichen IP außer 80/443 (und SSH)? |
| 3 | Installiert unattended-upgrades Sicherheitspatches automatisch? |
| 4 | Würde Fail2ban mich nach 5 Fehlversuchen sperren? |
| 5 | Habe ich im letzten Monat ein Backup erfolgreich wiederhergestellt? |
✅ Zum Mitnehmen: Sicherheit ist keine einmalige Aktion, sondern Routine: (1) SSH auf Schlüssel umstellen, (2) Root-Login aus, (3) UFW deny-by-default, (4) automatische Updates, (5) Container nur intern binden, (6) Backups regelmäßig testen. Damit liegst du über dem Sicherheitsniveau der meisten kommerziell betriebenen Kleinserver – für 0 €.