Linux absichern: Server härten mit SSH, UFW und Fail2ban

Server-Rack im Rechenzentrum mit Vorhängeschloss als Symbol für Linux-Sicherheit und Systemhärtung

Ein frisch installiertes Linux-System wird in wenigen Schritten deutlich sicherer: den Root-Login über SSH sperren, ausschließlich Schlüssel statt Passwörter zulassen, eine Firewall mit nur den nötigen Ports aktivieren, Fail2ban gegen automatisierte Anmeldeversuche einrichten und automatische Sicherheitsupdates einschalten. Diese Reihenfolge schließt zuerst die Lücken, über die fast alle Angriffe auf Linux-Server laufen.

Anzeige

Was „Linux härten“ eigentlich bedeutet

Härten (englisch hardening) heißt, die Angriffsfläche eines Systems zu verkleinern: alles abschalten, was du nicht brauchst, und alles absichern, was offen bleiben muss. Ein Standard-Linux ist nicht „unsicher“ ausgeliefert, aber es ist auf Bequemlichkeit getrimmt – offene Standardports, Passwort-Login, alle möglichen Dienste aktiv. Genau das nutzen automatisierte Scanner aus, die rund um die Uhr ganze IP-Bereiche nach erreichbaren Servern absuchen.

Die folgenden Schritte sind für Ubuntu und Debian geschrieben (Paketverwaltung apt). Auf RHEL, Rocky Linux oder Fedora ersetzt du apt durch dnf – die Logik bleibt gleich. Lege vor Eingriffen an der SSH-Konfiguration eine Sicherung an: sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.

Anzeige

cshow

Schritt 1: SSH absichern – das wichtigste Einfallstor

SSH (Secure Shell) ist der verschlüsselte Fernzugang zum Terminal deines Servers und damit das Tor, das Angreifer zuerst probieren. Drei Einstellungen entschärfen es: kein Root-Login, keine Passwörter, nur Schlüssel.

Erzeuge zuerst auf deinem eigenen Rechner ein modernes Schlüsselpaar. Ed25519 ist 2026 der Standard – kürzer, schneller und sicherer als ein altes RSA-4096-Schlüsselpaar:

ssh-keygen -t ed25519 -C "dein-name@rechner"
ssh-copy-id benutzer@server-ip

Teste die Anmeldung mit dem Schlüssel, bevor du Passwörter abschaltest – und lass dabei ein zweites SSH-Fenster offen. So sperrst du dich nicht selbst aus, falls etwas schiefgeht. Öffne dann die Konfiguration:

sudo nano /etc/ssh/sshd_config

Setze (oder ergänze) diese Zeilen:

PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitEmptyPasswords no

PermitRootLogin no blockt den direkten Login als Administrator – du meldest dich stattdessen als normaler Benutzer an und nutzt sudo für Admin-Aufgaben. Prüfe die Syntax und lade SSH neu:

sudo sshd -t
sudo systemctl restart ssh

Auf RHEL-Systemen heißt der Dienst sshd statt ssh. Erst wenn du dich mit deinem zweiten Fenster noch einmal erfolgreich neu anmeldest, ist der Schritt sicher abgeschlossen.

Anzeige

Schritt 2: Firewall mit UFW einrichten

UFW (Uncomplicated Firewall) ist ein einfaches Frontend für das eigentliche Firewall-System nftables im Linux-Kernel. Die Grundregel lautet: standardmäßig alles eingehende blockieren und nur gezielt öffnen, was wirklich gebraucht wird.

sudo apt install ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status verbose

Wichtig: Gib OpenSSH frei, bevor du die Firewall aktivierst – sonst kappst du auf einem entfernten Server deine eigene Verbindung. Für einen Webserver kommen sudo ufw allow 80/tcp und sudo ufw allow 443/tcp dazu, sonst nichts.

Schritt 3: Brute-Force mit Fail2ban abwehren

Selbst mit Schlüssel-Login klopfen Bots ununterbrochen an. Fail2ban liest die Authentifizierungs-Logs mit und sperrt IP-Adressen automatisch, die wiederholt scheitern – aus dem Dauerbeschuss wird ein Nicht-Ereignis.

sudo apt install fail2ban
sudo nano /etc/fail2ban/jail.local

Trage eine eigene Konfiguration ein (die Datei jail.local überschreibt die Standardwerte, ohne dass ein Update sie zurücksetzt):

[sshd]
enabled = true
maxretry = 3
findtime = 10m
bantime = 1h

Das sperrt eine IP für eine Stunde, sobald sie innerhalb von zehn Minuten dreimal danebenliegt. Aktivieren und kontrollieren:

sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd

Schritt 4: Automatische Sicherheitsupdates aktivieren

Die meisten erfolgreichen Angriffe nutzen längst bekannte, aber ungepatchte Lücken. Ein Wartungsfenster, in dem du manuell aktualisierst, kommt im Alltag oft nie – also automatisiere zumindest die Sicherheitspatches.

sudo apt install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades

Auf RHEL, Rocky Linux oder Fedora übernimmt das dnf-automatic:

sudo dnf install dnf-automatic
sudo systemctl enable --now dnf-automatic.timer

Damit landen Sicherheitsupdates ein, ohne dass du daran denken musst. Größere Versionssprünge solltest du weiterhin bewusst und mit Backup einspielen.

Schritt 5: Unnötige Dienste abschalten und Rechte begrenzen

Jeder laufende Dienst ist eine mögliche Angriffsfläche. Schau, was wirklich läuft, und schalte ab, was du nicht brauchst:

Anzeige
systemctl list-units --type=service --state=running
sudo systemctl disable --now <dienstname>

Arbeite im Alltag nie dauerhaft als root, sondern mit einem normalen Konto plus sudo für einzelne Befehle. Dieses Prinzip der minimalen Rechte (englisch least privilege) sorgt dafür, dass ein gekapertes Programm nicht gleich das ganze System übernimmt.

Wenn die Basis steht: die nächste Schicht

Die fünf Schritte oben decken die häufigsten Angriffswege ab. Steht das Fundament, lohnen sich weitere Schichten:

  • AppArmor oder SELinux: Diese Pflicht-Zugriffskontrollen schränken ein, was einzelne Programme dürfen. Auf Ubuntu/Debian ist AppArmor meist schon aktiv (sudo aa-status), auf RHEL ist SELinux Standard – lass es eingeschaltet, statt es bei Problemen vorschnell zu deaktivieren.
  • Backups vor jedem Eingriff: Eine getestete Sicherung ist die letzte Verteidigungslinie gegen Fehlkonfiguration, Ransomware und Hardware-Ausfall.
  • Logs im Blick behalten: sudo journalctl -u ssh zeigt dir Anmeldeversuche; Werkzeuge wie auditd oder lynis liefern einen strukturierten Härtungs-Check.

Warum gerade diese Reihenfolge?

Die Schritte folgen dem realen Risiko, nicht dem Bauchgefühl. SSH steht ganz oben, weil es der einzige Dienst ist, der bei fast jedem Server von außen erreichbar sein muss – und damit das beliebteste Ziel automatisierter Angriffe. Firewall und Fail2ban reduzieren danach, was überhaupt anklopfen darf und wie lange. Updates schließen bekannte Lücken, und das Least-Privilege-Prinzip begrenzt den Schaden, falls doch etwas durchkommt. Genau dieses Schichtdenken (englisch defense in depth) ist auch ein Klassiker in der Fachinformatiker-Prüfung: nicht eine perfekte Mauer, sondern mehrere Hürden, die ein Angreifer alle nacheinander überwinden müsste.

Häufige Fragen

Wie sperre ich den Root-Login über SSH?

In der Datei /etc/ssh/sshd_config die Zeile PermitRootLogin no setzen und SSH mit sudo systemctl restart ssh neu laden. Danach meldest du dich als normaler Benutzer an und nutzt sudo für Admin-Aufgaben.

Welcher SSH-Schlüssel ist 2026 empfehlenswert?

Ed25519. Er ist kürzer, schneller und sicherer als ein altes RSA-Schlüsselpaar. Erzeugen lässt er sich mit ssh-keygen -t ed25519.

Reicht eine Firewall aus, um Linux abzusichern?

Nein. Eine Firewall wie UFW blockt unnötige Ports, schützt aber nicht vor schwachen Passwörtern oder veralteter Software. Sie ist nur eine von mehreren Schichten.

Muss ich Linux nach der Härtung manuell aktualisieren?

Sicherheitspatches nicht: Mit unattended-upgrades (Debian/Ubuntu) oder dnf-automatic (RHEL/Fedora) installiert das System sie automatisch. Größere Versionssprünge spielst du weiterhin bewusst mit Backup ein.

Brauche ich SELinux oder AppArmor als Einsteiger?

Auf Ubuntu und Debian ist AppArmor meist schon aktiv, auf RHEL ist SELinux Standard. Lass es eingeschaltet, statt es bei Problemen vorschnell abzuschalten – es begrenzt, was ein gekapertes Programm anrichten kann.

Anzeige
Marcel Meyer

# wer schreibt hier

Marcel Meyer schraubt seit über zehn Jahren an Rechnern, Netzwerken und Servern — beruflich wie privat. Hier übersetzt er IT-Grundlagen in verständliche Schritte.

→ Mehr über mich

Anzeige



Anzeige