Deinen VPS absichern
Ein frischer VPS ist vom Moment des Hochfahrens an dem öffentlichen Internet ausgesetzt. Automatisierte Scanner finden ihn innerhalb von Minuten und versuchen Brute-Force-Logins sowie das Abtasten offener Dienste. Dieser Leitfaden behandelt die wichtigsten Härtungsschritte, die du nach deinem ersten Login durchführen solltest.
1. SSH-Schlüssel statt Passwörter verwenden
Passwortbasierter SSH-Login ist der häufigste Angriffsvektor. Der Umstieg auf schlüsselbasierte Authentifizierung eliminiert Brute-Force-Passwortangriffe vollständig.
Schlüsselpaar generieren auf deinem lokalen Rechner (falls noch nicht vorhanden):
ssh-keygen -t ed25519 -C "deine-email@example.com"
Öffentlichen Schlüssel kopieren auf deinen Server:
ssh-copy-id root@deine-server-ip
Überprüfe, dass du dich mit dem Schlüssel anmelden kannst, dann deaktiviere die Passwort-Authentifizierung:
# /etc/ssh/sshd_config
PasswordAuthentication no
PubkeyAuthentication yes
SSH-Dienst neustarten:
sudo systemctl restart sshd
Du kannst SSH-Schlüssel auch über das Sitequest-Dashboard verwalten.
2. Root-Login deaktivieren (optional, aber empfohlen)
Statt dich als root anzumelden, erstelle einen regulären Benutzer mit sudo-Rechten:
adduser deploy
usermod -aG sudo deploy
Kopiere deinen SSH-Schlüssel zum neuen Benutzer und deaktiviere dann den Root-Login:
# /etc/ssh/sshd_config
PermitRootLogin no
Starte SSH nach der Änderung neu. Falls du dich aussperrst, kannst du die VNC-Konsole für den Notfallzugriff nutzen.
3. Standard-SSH-Port ändern (optional)
Das Verlegen von SSH auf einen nicht standardmäßigen Port reduziert das Rauschen von automatisierten Scannern. Es ist allein keine Sicherheitsmaßnahme, reduziert aber den Log-Spam erheblich:
# /etc/ssh/sshd_config
Port 2222
Denke daran, deine Firewall-Regeln zu aktualisieren, um den neuen Port freizugeben, bevor du SSH neustartest.
4. Firewall konfigurieren
Eine Firewall begrenzt, welche Ports aus dem Internet erreichbar sind. Öffne nur das, was dein Server tatsächlich braucht.
Auf Debian/Ubuntu (ufw)
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp # SSH (oder dein benutzerdefinierter Port)
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw enable
Auf AlmaLinux/Rocky (firewalld)
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
Du kannst Firewall-Regeln auch über das Sitequest-Dashboard konfigurieren.
5. System aktuell halten
Ungepatchte Software ist einer der am häufigsten ausgenutzten Angriffsvektoren. Aktualisiere regelmäßig:
# Debian/Ubuntu
sudo apt update && sudo apt upgrade -y
# AlmaLinux/Rocky
sudo dnf update -y
Automatische Sicherheitsupdates aktivieren
Auf Debian/Ubuntu installiere unattended-upgrades:
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
Auf AlmaLinux/Rocky aktiviere dnf-automatic:
sudo dnf install dnf-automatic
sudo systemctl enable --now dnf-automatic-install.timer
So werden kritische Sicherheitspatches auch dann eingespielt, wenn du manuelle Updates vergisst.
6. fail2ban installieren
fail2ban überwacht Logdateien auf wiederholte fehlgeschlagene Anmeldeversuche und sperrt die angreifenden IP-Adressen temporär. Es ist effektiv gegen Brute-Force-Angriffe auf jeden exponierten Dienst.
# Debian/Ubuntu
sudo apt install fail2ban
# AlmaLinux/Rocky
sudo dnf install epel-release
sudo dnf install fail2ban
Dienst starten und aktivieren:
sudo systemctl enable --now fail2ban
Die Standardkonfiguration schützt SSH sofort. Du kannst benutzerdefinierte Jails für andere Dienste (Nginx, Postfix usw.) in /etc/fail2ban/jail.local hinzufügen.
7. Angriffsfläche reduzieren
Jeder laufende Dienst ist ein potenzieller Eintrittspunkt. Minimiere, was exponiert ist:
- Unbenutzte Pakete entfernen: Deinstalliere Software, die du nicht brauchst.
- Unbenutzte Dienste deaktivieren: Prüfe laufende Dienste mit
systemctl list-units --type=service --state=runningund deaktiviere alles Unnötige. - Unbenutzte Ports schließen: Wenn ein Dienst nur lokal benötigt wird, binde ihn an
127.0.0.1statt0.0.0.0. - DDoS-Schutz nutzen: Aktiviere Layer-4- und Layer-7-Schutz für Produktions-Workloads.
8. Starke Authentifizierung überall verwenden
Wende über SSH hinaus dasselbe Prinzip auf alle Dienste an:
- Datenbankserver (MySQL, PostgreSQL) — an
127.0.0.1binden, starke Passwörter verwenden, Remote-Root-Zugriff deaktivieren - Web-Panels — immer HTTPS verwenden, Zwei-Faktor-Authentifizierung aktivieren, wenn verfügbar
- APIs — Token-basierte Authentifizierung verwenden, Rate-Limiting implementieren
Sicherheits-Checkliste
| Schritt | Status |
|---|---|
| SSH-Schlüssel-Authentifizierung aktiviert | |
| Passwort-Authentifizierung deaktiviert | |
| Firewall konfiguriert, nur benötigte Ports offen | |
| Automatische Sicherheitsupdates aktiviert | |
| fail2ban installiert und läuft | |
| Unbenutzte Dienste deaktiviert | |
| Datenbank an localhost gebunden | |
| DDoS-Schutz aktiviert |
Arbeite jeden Punkt nach dem Einrichten eines neuen Servers ab. Überprüfe die Liste regelmäßig, um sicherzustellen, dass nichts abgedriftet ist.
Nächste Schritte
- SSH-Zugang und Schlüsselverwaltung — Schlüssel über das Dashboard verwalten
- Firewall-Konfiguration — Regeln über das Sitequest-Panel einrichten
- DDoS-Schutz — Layer-4- und Layer-7-Filterung aktivieren
- Die richtige Linux-Distro wählen — Das passende Betriebssystem für dein Projekt finden