Zum Inhalt springen
Alle Artikel
VPS absichernServer-SicherheitFail2banSSH-HärtungLinux Firewall

VPS absichern: SSH, Firewall und Fail2ban Guide

Lerne Schritt für Schritt, wie du deinen VPS absicherst – mit SSH-Härtung, UFW-Firewall, Fail2ban und automatischen Updates für maximalen Schutz.

7. März 20266 Min. Lesezeit

Wer einen eigenen VPS (Virtual Private Server) betreibt, trägt die volle Verantwortung für dessen Sicherheit. Anders als bei Shared Hosting gibt es keinen Provider, der sich um Firewall-Regeln, SSH-Härtung oder Intrusion Detection kümmert. In diesem Artikel zeige ich dir Schritt für Schritt, wie du deinen Linux-Server mit bewährten Methoden absicherst – von der SSH-Konfiguration über UFW bis hin zu Fail2ban.

Warum VPS-Sicherheit oberste Priorität hat

Ein frisch aufgesetzter VPS ist innerhalb von Minuten automatisierten Angriffen ausgesetzt. Bots scannen kontinuierlich IP-Bereiche nach offenen SSH-Ports und versuchen, sich mit Standardpasswörtern einzuloggen. Ohne grundlegende Absicherung ist es nur eine Frage der Zeit, bis ein Angreifer Zugriff erlangt. Die gute Nachricht: Mit wenigen, gezielten Maßnahmen lässt sich das Sicherheitsniveau drastisch erhöhen.

SSH-Zugang härten

Der SSH-Dienst ist das primäre Einfallstor bei den meisten Serverangriffen. Eine sorgfältige Konfiguration ist daher der wichtigste erste Schritt.

Neuen Benutzer anlegen und Root-Login deaktivieren

Arbeite niemals direkt als Root-Benutzer. Erstelle stattdessen einen regulären Benutzer mit sudo-Rechten:

adduser deployer
usermod -aG sudo deployer

Anschließend deaktivierst du den Root-Login in der SSH-Konfiguration:

sudo nano /etc/ssh/sshd_config

Ändere bzw. ergänze folgende Zeilen:

PermitRootLogin no
AllowUsers deployer
PasswordAuthentication no
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2

Wichtig: Stelle sicher, dass du dich vorher mit deinem neuen Benutzer und SSH-Key einloggen kannst, bevor du den Root-Login deaktivierst.

SSH-Key-Authentifizierung einrichten

Passwort-basierte Logins sind grundsätzlich unsicher. SSH-Keys bieten eine deutlich stärkere Authentifizierung. Generiere auf deinem lokalen Rechner ein Schlüsselpaar:

ssh-keygen -t ed25519 -C "deploy@meinserver"

Kopiere den öffentlichen Schlüssel auf den Server:

ssh-copy-id -i ~/.ssh/id_ed25519.pub deployer@deine-server-ip

Der Ed25519-Algorithmus ist aktuell die sicherste und performanteste Wahl für SSH-Keys.

SSH-Port ändern

Ein oft diskutierter Schritt ist das Ändern des Standard-SSH-Ports 22. Dies ist keine echte Sicherheitsmaßnahme im klassischen Sinne, reduziert aber das Grundrauschen automatisierter Angriffe erheblich:

Port 2847

Vergiss nicht, den neuen Port in der Firewall freizugeben, bevor du SSH neu startest:

sudo ufw allow 2847/tcp
sudo systemctl restart sshd

Firewall mit UFW einrichten

UFW (Uncomplicated Firewall) ist ein benutzerfreundliches Frontend für iptables und auf Ubuntu- sowie Debian-Systemen vorinstalliert. Das Prinzip ist einfach: Alles blockieren, nur Benötigtes explizit erlauben.

# Standardrichtlinien setzen
sudo ufw default deny incoming
sudo ufw default allow outgoing

# SSH erlauben (angepassten Port verwenden!)
sudo ufw allow 2847/tcp

# Webserver-Ports freigeben
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# Firewall aktivieren
sudo ufw enable

# Status prüfen
sudo ufw status verbose

Die Ausgabe sollte in etwa so aussehen:

Status: active

To                         Action      From
--                         ------      ----
2847/tcp                   ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere

Tipp: Für zusätzliche Sicherheit kannst du den SSH-Zugang auf bestimmte IP-Adressen beschränken:

sudo ufw allow from 203.0.113.50 to any port 2847 proto tcp

Fail2ban: Brute-Force-Angriffe abwehren

Fail2ban überwacht Log-Dateien und sperrt IP-Adressen automatisch, die durch fehlgeschlagene Login-Versuche auffallen. Das Tool ist unverzichtbar für jeden öffentlich erreichbaren Server.

sudo apt install fail2ban

Erstelle eine lokale Konfigurationsdatei, die bei Updates nicht überschrieben wird:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

Eine bewährte Konfiguration für den SSH-Schutz:

[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 3
banaction = ufw

[sshd]
enabled = true
port = 2847
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 86400

Diese Konfiguration sperrt eine IP-Adresse für 24 Stunden nach drei fehlgeschlagenen SSH-Login-Versuchen innerhalb von 10 Minuten. Starte Fail2ban und prüfe den Status:

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

Automatische Sicherheitsupdates aktivieren

Ungepatchte Software ist eines der größten Sicherheitsrisiken. Mit unattended-upgrades werden sicherheitsrelevante Updates automatisch installiert:

sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

Prüfe die Konfiguration in /etc/apt/apt.conf.d/50unattended-upgrades:

Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}-security";
    "${distro_id}ESMApps:${distro_codename}-apps-security";
};

Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot "false";

Empfehlung: Setze Automatic-Reboot auf false und plane Kernel-Updates mit Neustart manuell ein, um unerwartete Ausfälle zu vermeiden.

Rootkit-Erkennung mit rkhunter

rkhunter (Rootkit Hunter) scannt dein System auf bekannte Rootkits, Backdoors und verdächtige Dateien:

sudo apt install rkhunter

# Datenbank aktualisieren
sudo rkhunter --update
sudo rkhunter --propupd

# Scan durchführen
sudo rkhunter --check --skip-keypress

Automatisiere den Scan per Cronjob mit E-Mail-Benachrichtigung:

sudo crontab -e
0 4 * * * /usr/bin/rkhunter --check --cronjob --report-warnings-only | mail -s "rkhunter Report" [email protected]

Bonus: Login-Benachrichtigungen einrichten

Lass dich bei jedem erfolgreichen SSH-Login per Nachricht informieren. Füge folgende Zeile in die .bashrc deines Benutzers ein:

echo "Login auf $(hostname) am $(date) von $(who | tail -1 | awk '{print $5}')" | mail -s "SSH-Login: $(hostname)" [email protected]

So bemerkst du unautorisierte Zugriffe sofort – selbst wenn alle anderen Maßnahmen umgangen wurden.

Fazit: Sicherheit ist ein fortlaufender Prozess

Die hier vorgestellten Maßnahmen bilden ein solides Sicherheitsfundament für jeden VPS. Zusammengefasst sind die wichtigsten Schritte:

  1. SSH härten – Keys statt Passwörter, Root-Login deaktivieren
  2. Firewall konfigurieren – Nur benötigte Ports öffnen
  3. Fail2ban einrichten – Brute-Force-Angriffe automatisch blockieren
  4. Updates automatisieren – Sicherheitspatches zeitnah einspielen
  5. Rootkit-Scans – Regelmäßig auf Kompromittierung prüfen

Serversicherheit ist kein einmaliges Setup, sondern ein kontinuierlicher Prozess. Überprüfe regelmäßig deine Logs, halte deine Software aktuell und passe deine Konfiguration an neue Bedrohungen an. Dein zukünftiges Ich wird es dir danken.