Server ·
VPS absichern: die ersten zehn Minuten
Aktualisiere einen frischen Server mit Ubuntu oder Debian, stelle SSH auf Schlüssel um, schalte eine Firewall mit ufw ein und aktiviere automatische Sicherheitsupdates, ohne dich auszusperren.
Ein frischer Server ist ab dem ersten Start aus dem ganzen Internet erreichbar, und automatische Scanner finden ihn innerhalb von Minuten. Diese Anleitung zeigt dir die ersten Schritte auf einem neuen VPS: aktualisieren, SSH auf Schlüssel umstellen, eine Firewall einschalten und Sicherheitsupdates automatisch installieren lassen.
Halte dich an die Reihenfolge. Sie sorgt dafür, dass du dich nicht aussperrst.
Was du brauchst
- Einen laufenden VPS mit Ubuntu oder Debian. Noch keinen Server? Fang mit Deinen ersten VPS einrichten an.
- IP-Adresse und Benutzername deines Servers sowie das Passwort oder den SSH-Schlüssel aus der Bestellung.
- Ein Terminal auf deinem eigenen Computer. Linux, macOS und Windows bringen
sshbereits mit.
Die Befehle unten verwenden sudo. Bist du als root angemeldet, kannst du sudo weglassen. Ersetze user durch deinen Benutzernamen und 203.0.113.10 durch die IP-Adresse deines Servers.
1. Pakete aktualisieren
Melde dich an und installiere alle ausstehenden Updates:
ssh user@203.0.113.10
sudo apt update && sudo apt upgrade -y
War ein neuer Kernel dabei, starte einmal neu, damit er verwendet wird:
sudo reboot
Warte eine Minute und melde dich wieder an.
2. Stell sicher, dass du dein Passwort kennst
Gleich schaltest du die Anmeldung per Passwort für SSH ab. Das Passwort selbst brauchst du weiterhin: für sudo und für die Konsole im Panel, falls etwas schiefgeht. Setze jetzt eines, das du kennst:
sudo passwd user
3. Mit einem SSH-Schlüssel anmelden
Ein SSH-Schlüssel ist eine Datei auf deinem Computer, die das Passwort ersetzt. Er lässt sich nicht erraten wie ein Passwort. Du meldest dich schon mit dem Schlüssel aus der Bestellung an? Dann weiter mit Schritt 4.
Führe diese Befehle auf deinem eigenen Computer aus, nicht auf dem Server.
- Erstelle einen Schlüssel. Bestätige den Speicherort mit Enter und vergib eine Passphrase, wenn du zusätzlichen Schutz möchtest:
ssh-keygen -t ed25519
- Kopiere den öffentlichen Teil des Schlüssels auf den Server. Unter Linux und macOS:
ssh-copy-id user@203.0.113.10
Unter Windows, in der PowerShell:
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh user@203.0.113.10 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
- Teste es. Öffne ein neues Terminal und verbinde dich:
ssh user@203.0.113.10
Du solltest angemeldet sein, ohne nach dem Passwort deines Serverkontos gefragt zu werden. Hast du eine Passphrase vergeben, wirst du stattdessen danach gefragt. Mach erst weiter, wenn das funktioniert.
4. Anmeldung per Passwort abschalten
Lass deine aktuelle SSH-Sitzung während des ganzen Schritts offen. Eine offene Sitzung bleibt verbunden, auch wenn die neuen Einstellungen falsch sind. So kannst du sie jederzeit zurücknehmen.
- Lege auf dem Server eine kleine Einstellungsdatei an:
echo "PasswordAuthentication no" | sudo tee /etc/ssh/sshd_config.d/00-keys-only.conf
- Prüfe die Konfiguration auf Fehler. Keine Ausgabe bedeutet, dass alles in Ordnung ist:
sudo sshd -t
- Wende sie an:
sudo systemctl reload ssh
- Prüfe, ob die Einstellung aktiv ist. Die Antwort muss
passwordauthentication nolauten:
sudo sshd -T | grep -i passwordauthentication
Steht dort noch yes, öffne die Hauptdatei mit sudo nano /etc/ssh/sshd_config, füge PasswordAuthentication no als allererste Zeile ein und wiederhole die Schritte 2 bis 4.
- Teste jetzt in einem zweiten Terminal, während das erste offen bleibt. Dein Schlüssel muss weiterhin funktionieren:
ssh user@203.0.113.10
Und eine Anmeldung per Passwort muss abgelehnt werden:
ssh -o PubkeyAuthentication=no -o PreferredAuthentications=password user@203.0.113.10
Du solltest Permission denied sehen. Schließe die erste Sitzung erst, wenn beide Tests so ausfallen wie beschrieben.
Etwas ist schiefgegangen? Nimm die Änderung in der noch offenen Sitzung zurück:
sudo rm /etc/ssh/sshd_config.d/00-keys-only.conf
sudo systemctl reload ssh
5. Firewall mit ufw einschalten
ufw blockiert jede eingehende Verbindung, die du nicht erlaubt hast. Die eine Regel, auf die es ankommt: Erlaube SSH, bevor du die Firewall einschaltest.
sudo apt install ufw -y
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw enable
ufw enable warnt, dass SSH-Verbindungen unterbrochen werden könnten. Da Port 22 bereits erlaubt ist, kannst du mit y antworten.
Prüfe das Ergebnis:
sudo ufw status verbose
Öffne weitere Ports nur, wenn du etwas betreibst, das sie braucht, zum Beispiel einen Webserver:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
6. Sicherheitsupdates automatisch installieren
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure -plow unattended-upgrades
Beantworte die Frage mit Yes. Ab jetzt installiert der Server Sicherheitsupdates jeden Tag von selbst. Prüfe, ob es eingeschaltet ist:
cat /etc/apt/apt.conf.d/20auto-upgrades
Beide Zeilen sollten "1" enthalten.
Ausgesperrt?
Über das Panel erreichst du deinen Server immer, auch wenn SSH oder die Firewall dich abweisen.
- Melde dich im Panel an, öffne Virtuelle Maschinen und klicke auf deinen Server.
- Klicke auf Konsole. Sie öffnet sich in einem neuen Tab und zeigt den Bildschirm deines Servers.
- Melde dich mit Benutzername und dem Passwort aus Schritt 2 an.
- Behebe, was dich blockiert hat. Um SSH in der Firewall wieder zu erlauben:
sudo ufw allow 22/tcp
Um die Einstellung aus Schritt 4 zurückzunehmen:
sudo rm /etc/ssh/sshd_config.d/00-keys-only.conf
sudo systemctl restart ssh
Wie es weitergeht
Erstelle vor jeder größeren Änderung einen Snapshot, dann kannst du zurück. Siehe Snapshots und Backups für deinen VPS.