Neuen VPS in 10 Minuten sicher einrichten
Ein neuer VPS wird sofort angegriffen. Dieser 10-Minuten-Ablauf legt einen Benutzer an, aktiviert SSH-Schlüssel, sperrt root und richtet die Firewall ein.
Die ersten 10 Minuten entscheiden, wie sicher Ihr Server ist
Ein brandneuer VPS ist nicht sicher. Sobald er über eine öffentliche IP-Adresse erreichbar ist, versuchen Scanner, sich anzumelden. Das Standard-Image bietet dafür eine große Angriffsfläche: root ist häufig erreichbar, Passwörter sind oft zulässig, eine Firewall fehlt und Sicherheitsupdates werden nicht regelmäßig installiert. Die gute Nachricht: Das lässt sich mit etwa zehn Minuten und einigen Befehlen beheben. Diesen Ablauf arbeite ich auf jedem neuen Server ab, bevor ich dort etwas bereitstelle.
Arbeiten Sie die Schritte in der angegebenen Reihenfolge durch, da sie aufeinander aufbauen. Jeder Schritt hat eine eigene Anleitung, auf die im jeweiligen Abschnitt verwiesen wird. Diese Seite ist der schnelle Ablauf, der die einzelnen Anleitungen miteinander verbindet.
Minute 1: Alles aktualisieren
Melden Sie sich mit den Zugangsdaten Ihres Providers als root an und bringen Sie das System vollständig auf den neuesten Stand, bevor Sie etwas anderes tun:
apt update && apt upgrade -yEin System ohne eingespielte Sicherheitsupdates ist das einfachste Ziel. Deshalb steht dieser Schritt an erster Stelle. Richten Sie nach Abschluss automatische Sicherheitsupdates ein. So bleibt das System aktuell, ohne dass Sie daran denken müssen.
Minute 2: Einen normalen Benutzer mit sudo erstellen
Arbeiten Sie nicht weiter als root. Erstellen Sie einen Benutzer für sich selbst und geben Sie ihm sudo-Berechtigungen:
adduser matt
usermod -aG sudo mattMelden Sie sich ab jetzt als dieser Benutzer an und verwenden Sie sudo für administrative Aufgaben. Wenn Sie dauerhaft als root arbeiten, hat jeder Fehler und jeder erfolgreiche Angriff uneingeschränkte Berechtigungen. Genau das soll die Ausführung als unprivilegierter Benutzer verhindern.
Minute 4: SSH-Schlüssel einrichten
Passwörter können erraten werden, Schlüssel nicht. Erstellen Sie auf Ihrem eigenen Laptop einen Schlüssel, falls noch keiner vorhanden ist:
ssh-keygen -t ed25519Kopieren Sie anschließend den öffentlichen Schlüssel auf den Server:
ssh-copy-id matt@YOUR_SERVERFür ssh-copy-id muss die Anmeldung per Passwort für den neuen Benutzer aktiviert sein. Falls sie bereits deaktiviert ist, kopieren Sie ~/.ssh/authorized_keys von root nach /home/matt/.ssh/authorized_keys (im Besitz von matt). Alternativ können Sie Ihren öffentlichen Schlüssel manuell in diese Datei einfügen.
Das zugrunde liegende Modell mit einem Schlüssel pro Gerät, die Berechtigungen, die eine Schlüsselanmeldung verhindern, und das Sperren eines verlorenen Schlüssels werden in Grundlagen der SSH-Schlüsselverwaltung behandelt.
Melden Sie sich als matt ab und mit dem Schlüssel wieder an. Bestätigen Sie, dass die Anmeldung funktioniert, bevor Sie mit dem nächsten Schritt fortfahren. Wenn Sie SSH absichern, bevor Sie sich mit einem Schlüssel anmelden können, sperren Sie sich leicht selbst aus. Wenn bei dieser Anmeldung Permission denied (publickey) ausgegeben wird, beheben Sie das Problem jetzt, statt wieder auf das Passwort zurückzugreifen. Diese eine Meldung kann fünf verschiedene Fehler bedeuten. Die Ausgabe von ssh -v zeigt, welcher davon tatsächlich vorliegt.
Minute 6: Root-Login und Passwörter deaktivieren
Nachdem Ihr Schlüssel funktioniert, schließen Sie die beiden Zugangsmöglichkeiten, auf die sich die Scanner stützen. Verwenden Sie eine Drop-in-Datei, damit Paketaktualisierungen sie nicht überschreiben. Nennen Sie sie 00-, damit sie vor 50-cloud-init.conf einsortiert wird, die Ubuntu-Cloud-Images zusammen mit PasswordAuthentication yes ausliefern. sshd verwendet den ersten gelesenen Wert. Eine Datei, die später einsortiert wird, würde daher unbemerkt wirkungslos bleiben:
sudo nano /etc/ssh/sshd_config.d/00-hardening.confPasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin noLaden Sie anschließend SSH neu:
sudo systemctl restart sshPrüfen Sie danach die Einstellungen, die sshd tatsächlich verwendet. So kann eine wirkungslose Drop-in-Datei Sie nicht täuschen:
sudo sshd -T | grep -Ei 'passwordauthentication|permitrootlogin'Wenn Passwörter deaktiviert sind und der Root-Login nicht mehr möglich ist, kann der ständige Brute-Force-Netzwerkverkehr gegen Ihren Server nicht erfolgreich sein. Die vollständige Anleitung einschließlich einer optionalen Portänderung finden Sie unter SSH-Härtung auf einem VPS.
Minute 8: Firewall aktivieren
Blockieren Sie standardmäßig den gesamten eingehenden Datenverkehr. Erlauben Sie anschließend nur die benötigten Verbindungen. Erlauben Sie SSH, bevor Sie die Firewall aktivieren. Andernfalls trennen Sie Ihre eigene Verbindung:
sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw enableFügen Sie allow-Regeln für jeden tatsächlich betriebenen Dienst hinzu, beispielsweise 80/tcp und 443/tcp für eine Website. Wenn nach dieser Änderung keine neue SSH-Sitzung mehr aufgebaut werden kann, lesen Sie die Fehlermeldung, bevor Sie etwas ändern. Eine Ablehnung bedeutet, dass sshd geantwortet hat. Ein Timeout bedeutet in der Regel, dass die Firewall das Paket verworfen hat. Prüfen Sie, ob IPv4 und IPv6 abgedeckt sind. Eine Firewall, die nur IPv4 filtert, lässt die IPv6-Seite weit offen. Die vollständige Anleitung finden Sie unter Firewalls 101 auf einem VPS. Diese ufw-Befehle setzen Ubuntu oder Debian voraus. Auf einem Rocky- oder AlmaLinux-System ist das Ziel mit standardmäßig blockiertem eingehendem Datenverkehr identisch. Dort wird jedoch firewalld verwendet. Arbeiten Sie stattdessen die firewalld-Variante dieses Schritts durch.
Minute 10: Verlangsamen Sie Scanner mit Fail2ban
Fügen Sie abschließend Fail2ban hinzu, um Adressen zu sperren, die wiederholt auf Ihre Ports zugreifen:
sudo apt install -y fail2banUnter Ubuntu 24.04 schützt die Standardinstallation SSH bereits ab dem ersten Boot. Da ohnehin bereits Schlüssel erforderlich sind, dient dies als zusätzliche Absicherung. Sie reduziert die Anzahl der Logeinträge und blockiert wiederholte Angreifer, ersetzt aber nicht Ihre zentrale Schutzmaßnahme.
Ihre Checkliste
Das ist das Runbook. Verwenden Sie den folgenden Generator, um jede Prüfung abzuhaken und eine personalisierte Checkliste mit dem exakten Befehl für jeden Schritt zu erstellen. Sie können diese Checkliste beim Server aufbewahren:
Arbeiten Sie die Liste bei jedem neuen Server einmal durch. Danach wird der Ablauf zur Routine. Zehn Minuten jetzt ersparen Ihnen den sehr schlechten Nachmittag, der auf einen kompromittierten Server folgt.
Sobald die grundlegenden Maßnahmen umgesetzt sind, halten automatische Sicherheitsupdates unter Ubuntu den Server aktuell, ohne dass Sie sich erneut anmelden müssen. Jeder Dienst, den Sie anschließend hinzufügen, benötigt eine eigene Prüfung, und die Schwachstellen verlagern sich: Bei einem selbst gehosteten Passwort-Tresor speichert der Server niemals Klartextdaten. Die tatsächlichen Risiken von Vaultwarden sind daher das Admin-Token und die Backup-Datei.
FAQ
Was sollte ich auf einem neuen VPS zuerst tun?
Aktualisieren Sie das System mit apt update && apt upgrade -y. Erstellen Sie anschließend einen normalen Benutzer mit sudo und arbeiten Sie nicht mehr als root. Richten Sie danach SSH-Schlüssel ein, deaktivieren Sie die root-Anmeldung und die kennwortbasierte Authentifizierung, aktivieren Sie eine Firewall mit standardmäßig verweigertem Zugriff und installieren Sie Fail2ban. Diese Reihenfolge sorgt dafür, dass jeder Schritt durchgeführt werden kann, ohne dass Sie sich aussperren.
Wie verhindere ich, dass ich mich beim Absichern von SSH aussperre?
Richten und testen Sie die Anmeldung per SSH-Schlüssel ein, bevor Sie Kennwörter oder root deaktivieren. Melden Sie sich ab und mit dem Schlüssel wieder an, um die Funktion zu bestätigen. Deaktivieren Sie erst danach PasswordAuthentication und PermitRootLogin. Wenn Sie die Firewall aktivieren, erlauben Sie Port 22, bevor Sie ufw enable ausführen. Falls Sie sich trotzdem aussperren, können Sie sich über die Webkonsole Ihres Providers wieder anmelden, ohne SSH zu verwenden.
Brauche ich das alles wirklich auf einem kleinen Server?
Ja, denn Scanner berücksichtigen nicht, wie klein Ihr Server ist. Sie prüfen jede öffentliche IP-Adresse auf dieselbe Weise. Die gesamte Anleitung dauert etwa zehn Minuten und beseitigt die einfachen Angriffswege: keine root-Anmeldung, kein Erraten von Kennwörtern, keine Dienste, die Sie nicht bewusst veröffentlicht haben, und bekannte Fehler werden automatisch gepatcht.
Was ist der wichtigste einzelne Schritt?
SSH ausschließlich mit Schlüssel und deaktivierter root-Anmeldung zu verwenden. Die meisten Angriffe auf einen frischen VPS bestehen aus automatisierten Kennwortversuchen gegen root. Wenn Sie beides deaktivieren, ist diese gesamte Angriffskategorie nicht mehr möglich. Die Firewall und Fail2ban begrenzen anschließend die erreichbare Angriffsfläche und verlangsamen verbleibende Angriffe.
Wie bestätige ich, dass der Server tatsächlich abgesichert ist?
Prüfen Sie vor dem Vertrauen in die Konfiguration drei Punkte manuell. Führen Sie sudo ss -tlnp aus und bestätigen Sie, dass nur die Ports, die Sie öffnen wollten, an einer öffentlichen Adresse auf Verbindungen warten. Es darf kein 0.0.0.0- oder [::]-Dienst vorhanden sein, den Sie übersehen haben. Führen Sie sudo ufw status verbose aus und bestätigen Sie, dass die standardmäßige Richtlinie für eingehenden Datenverkehr deny lautet und sowohl die Regeln für unverschlüsselten Datenverkehr als auch für (v6) vorhanden sind. Öffnen Sie außerdem immer eine zweite SSH-Sitzung, bevor Sie die erste schließen. Dadurch kann ein Fehler in der SSH-Konfiguration Sie nicht vom Server aussperren. Wenn alle drei Prüfungen erfolgreich sind, ist die grundlegende Absicherung eingerichtet.