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.
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:
- SSH härten – Keys statt Passwörter, Root-Login deaktivieren
- Firewall konfigurieren – Nur benötigte Ports öffnen
- Fail2ban einrichten – Brute-Force-Angriffe automatisch blockieren
- Updates automatisieren – Sicherheitspatches zeitnah einspielen
- 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.