Warum die ersten zehn Minuten zählen
Kaum hat ein neuer VPS eine öffentliche IP-Adresse, probieren automatische Bots per SSH gängige Benutzernamen und Passwörter durch. Im Log fast jedes neuen Servers lässt sich das nach wenigen Minuten sehen. Gefährlich wird es nur, wenn der Server unvorbereitet bleibt. Zehn Minuten Grundsicherung genügen, damit diese Angriffe ins Leere laufen.
Diese Anleitung zeigt die üblichen ersten Schritte auf Ubuntu 22.04 oder 24.04 (Debian funktioniert fast identisch): System aktualisieren, normalen Benutzer anlegen, per SSH-Schlüssel statt Passwort anmelden, Firewall aktivieren, automatische Sicherheitsupdates einschalten und Fail2ban installieren. Sie brauchen nur ein Terminal sowie IP-Adresse und Root-Zugangsdaten Ihres Servers.
Schritt 1: Anmelden und System aktualisieren
Verbinden Sie sich als root mit der IP-Adresse aus Ihrem Server-Panel:
ssh root@IHRE_SERVER_IPAktualisieren Sie dann die Paketlisten und installieren Sie alle ausstehenden Updates:
apt update && apt upgrade -yWird ein neuer Kernel installiert, verlangt das System einen Neustart. Führen Sie reboot aus, warten Sie eine Minute und melden Sie sich neu an.
Schritt 2: Normalen Benutzer mit sudo anlegen
Dauerhaft als root zu arbeiten ist riskant: Ein falscher Befehl kann das System zerstören. Legen Sie deshalb einen normalen Benutzer mit sudo-Rechten an:
adduser deploy
usermod -aG sudo deployStatt deploy können Sie einen beliebigen Namen wählen, dazu ein langes, einmaliges Passwort. Es dient später nur für sudo, nicht für die Anmeldung.
Schritt 3: Anmeldung per SSH-Schlüssel einrichten
Ein SSH-Schlüsselpaar ist deutlich sicherer als jedes Passwort. Der private Schlüssel bleibt auf Ihrem Rechner, nur der öffentliche wird auf den Server kopiert.
Erzeugen Sie auf Ihrem eigenen Rechner (Linux, macOS oder Windows PowerShell) einen Schlüssel:
ssh-keygen -t ed25519 -C "mein-vps"Übernehmen Sie den Standardpfad und vergeben Sie eine Passphrase. Kopieren Sie den öffentlichen Schlüssel dann zum neuen Benutzer:
ssh-copy-id deploy@IHRE_SERVER_IPUnter Windows ohne ssh-copy-id fügen Sie den Inhalt von id_ed25519.pub in die Datei /home/deploy/.ssh/authorized_keys auf dem Server ein.
Öffnen Sie nun ein zweites Terminal und testen Sie:
ssh deploy@IHRE_SERVER_IP
sudo whoamiDer zweite Befehl muss root ausgeben. Lassen Sie die erste Sitzung offen, bis das klappt, damit Sie sich nicht aussperren.
Schritt 4: Passwort- und Root-Login abschalten
Funktioniert der Schlüssel-Login, verbieten Sie Passwörter und direkten Root-Zugang. Unter aktuellem Ubuntu geht das sauber mit einer Zusatzdatei:
sudo nano /etc/ssh/sshd_config.d/00-hardening.confmit diesem Inhalt:
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication noSyntax prüfen und Dienst neu laden:
sudo sshd -t
sudo systemctl reload sshÖffnen Sie vor dem Schließen ein drittes Terminal und prüfen Sie, dass ssh deploy@IHRE_SERVER_IP weiterhin funktioniert. Mit sudo sshd -T | grep -i passwordauthentication sehen Sie, ob wirklich no gilt. Einige Cloud-Images bringen eine eigene Datei mit, die Passwörter erlaubt; SSH liest die Dateien alphabetisch und der erste Wert gewinnt, deshalb der Name mit 00-.
Schritt 5: UFW-Firewall aktivieren
UFW (Uncomplicated Firewall) ist unter Ubuntu vorinstalliert. Die Regel ist einfach: alles Eingehende blockieren, nur Benötigtes erlauben. Erlauben Sie zuerst SSH, sonst kappen Sie Ihre eigene Verbindung:
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verboseDie Ports 80 und 443 brauchen Sie nur, wenn der Server eine Website ausliefert. Alle anderen Dienste (Datenbank, Admin-Oberfläche, Spieleserver) erhalten einen Port erst bei Bedarf, am besten nur für Ihre eigene IP: sudo ufw allow from IHRE_HEIM_IP to any port 5432.
Schritt 6: Automatische Sicherheitsupdates
Die meisten Einbrüche nutzen bekannte Lücken, für die es längst einen Patch gibt. Lassen Sie Ubuntu Sicherheitsupdates selbst einspielen:
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgradesBestätigen Sie mit „Ja“. Kernel-Updates erfordern gelegentlich einen Neustart; prüfen Sie ab und zu mit ls /var/run/reboot-required, und planen Sie bei Vorhandensein der Datei einen Neustart zu ruhiger Zeit.
Schritt 7: Fail2ban gegen Brute-Force
Fail2ban liest die Logs und sperrt IP-Adressen vorübergehend, die wiederholt scheitern:
sudo apt install fail2ban -y
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshdDie Standardeinstellungen schützen SSH bereits. Bei reinem Schlüssel-Login kommen Bots ohnehin nicht hinein, doch Fail2ban hält die Logs sauber und spart etwas CPU.
Checkliste für jeden neuen Server
- System aktualisiert und neu gestartet.
- Normaler Benutzer mit sudo; Root-Login deaktiviert.
- Passwort-Login aus, SSH-Schlüssel mit Passphrase.
- UFW aktiv, nur benötigte Ports offen.
- Automatische Sicherheitsupdates an.
- Fail2ban läuft.
- Backups oder Snapshots für alles, was nicht verloren gehen darf.
Den passenden Standort wählen
Sicherheit ist nur die halbe Entscheidung, der Standort bestimmt auch das Tempo. Sitzen Ihre Besucher in Deutschland oder Europa, liefert ein Rechenzentrum in Deutschland oder an einem anderen Ort der Standortübersicht meist die geringste Latenz. Bei HironServer können Sie Ubuntu in über 50 Ländern stündlich, wöchentlich oder monatlich abgerechnet bereitstellen und einen Standort so günstig testen; die aktuellen Tarife finden Sie auf der Preisseite.
FAQ
Ist SSH auf Port 22 sicher?
Ja, wenn der Passwort-Login aus ist und Sie Schlüssel nutzen. Ein anderer Port reduziert nur das Log-Rauschen und ist keine echte Schutzmaßnahme. Schlüssel und Firewall sind viel wichtiger.
Ich habe mich ausgesperrt. Was nun?
Nutzen Sie die Web- oder VNC-Konsole im Panel Ihres Anbieters, die nicht von SSH abhängt, und korrigieren Sie dort SSH-Konfiguration oder UFW-Regeln. Deshalb sollten Sie beim Ändern stets eine funktionierende Sitzung offen halten.
Brauche ich Fail2ban, wenn Passwörter deaktiviert sind?
Es ist optional. Gegen reinen Schlüssel-Login bringt es wenig zusätzlichen Schutz, hilft aber bei weiteren Diensten mit Login, etwa einem Web-Panel.
Sollte jede Anwendung einen eigenen Benutzer haben?
Idealerweise ja. Läuft jeder Dienst unter einem eigenen, unprivilegierten Benutzer, bleibt der Schaden bei einer Kompromittierung begrenzt.
Wie oft sollte ich aktualisieren?
Lassen Sie Sicherheitsupdates automatisch laufen und melden Sie sich alle ein bis zwei Wochen an, um sudo apt update && sudo apt upgrade auszuführen und reboot-required zu prüfen.