Technologie

VPS absichern: Die ersten 10 Einstellungen

Wir zeigen Ihnen für einen neuen virtuellen Server SSH-, Firewall-, Fail2ban- und Update-Einstellungen in der richtigen Reihenfolge, mit funktionierenden Befehlen und typischen Fehlern.

Aurora YazılımRedaktionsteam 6 Min. Lesezeit
VPS absichern: Die ersten 10 Einstellungen
Was ist beim Absichern eines VPS zuerst zu tun?

Beim Absichern eines VPS aktualisieren Sie zuerst das System, legen einen Benutzer mit sudo-Rechten statt root an und richten die Anmeldung per SSH-Schlüssel ein. Danach sperren Sie den Root-Login und die Passwortanmeldung per SSH, öffnen in der Firewall nur die nötigen Ports, installieren Fail2ban, aktivieren automatische Sicherheitsupdates und planen regelmäßige Backups.

Wo beginnt die VPS-Sicherheit?

Ein frisch gestarteter virtueller Server ist ab dem Moment der Internetanbindung das Ziel automatischer Scanner. Diese Bots haben es nicht auf ein bestimmtes Unternehmen abgesehen, sondern probieren jede Maschine mit offenem SSH-Port und schwachem Passwort. Dass schon in den ersten Stunden Tausende Anmeldeversuche in den Server-Logs landen, ist ganz normal.

Deshalb beginnt die VPS-Sicherheit mit einigen grundlegenden Einstellungen in der ersten Stunde nach der Einrichtung. Die folgenden zehn Schritte sind für Server auf Basis von Ubuntu und Debian geschrieben; bei anderen Distributionen unterscheiden sich Paketmanager und Dienstnamen, die Logik bleibt aber dieselbe.

Ist Serveradministration Neuland für Sie oder betreiben Sie Ihre Website gemeinsam mit einem Softwareteam, klären Sie von Anfang an, wer für diese Schritte verantwortlich ist. Sicherheitseinstellungen sind keine Aufgabe, die man einmal erledigt und dann vergisst, sondern ein Prozess, der regelmäßige Pflege braucht.

Das sollten Sie vorab wissen

Bevor Sie loslegen, sollten Sie Folgendes zur Hand haben: die IP-Adresse des Servers, den vom Anbieter bereitgestellten ersten Root- oder Administrator-Zugang und ein Terminal auf Ihrem eigenen Rechner. Unter Windows 10 und 11 ist der OpenSSH-Client in PowerShell bereits integriert; unter macOS und Linux genügt das Terminal.

Es ist außerdem eine gute Gewohnheit, die Befehle in einer Notizdatei festzuhalten. Wenn Sie wissen, welche Einstellung Sie wann geändert haben, finden Sie bei späteren Problemen die Ursache leichter und können dieselbe Einrichtung auf einem zweiten Server wiederholen. Wenn Sie bei der Einrichtung nicht weiterkommen, können Sie sich über die Kontaktseite an unser Team wenden.

System- und Benutzereinstellungen

Die ersten beiden Schritte: den Server von bekannten Sicherheitslücken befreien und die tägliche Arbeit mit einem anderen Konto als root erledigen.

1. System aktualisieren

Das fertige Image des Anbieters kann schon Monate alt sein. Als Erstes bringen Sie alle Pakete mit aktuellen Sicherheitspatches auf den neuesten Stand. Wurde ein Kernel-Update eingespielt, starten Sie den Server neu.

bash
sudo apt update && sudo apt upgrade -y
sudo reboot

2. Benutzer mit sudo-Rechten anlegen

Mit dem Root-Konto zu arbeiten bedeutet, dass ein einziger fehlerhafter Befehl das gesamte System treffen kann. Legen Sie einen eigenen Benutzer an und fügen Sie ihn der Gruppe sudo hinzu; nutzen Sie Administratorrechte nur dann, wenn sie wirklich nötig sind.

bash
sudo adduser yonetici
sudo usermod -aG sudo yonetici

SSH-Sicherheit

SSH ist die Eingangstür des Servers. Für die SSH-Sicherheit sind zwei Schritte am wirksamsten: Schlüssel statt Passwort verwenden und den Root-Login sperren.

3. Anmeldung per SSH-Schlüssel einrichten

Erzeugen Sie auf Ihrem Rechner ein Schlüsselpaar und kopieren Sie den öffentlichen Schlüssel auf den Server. Unter macOS und Linux erledigt der Befehl ssh-copy-id das in einem Schritt; unter Windows können Sie den öffentlichen Schlüssel mit PowerShell auf den Server übertragen. Wenn Sie dem Schlüssel eine Passphrase geben, schützt er Sie zusätzlich, selbst wenn Ihr Rechner in fremde Hände gerät.

bashmacOS / Linux
ssh-keygen -t ed25519
ssh-copy-id yonetici@SUNUCU_IP
powershellWindows PowerShell
ssh-keygen -t ed25519
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh yonetici@SUNUCU_IP "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

4. Root- und Passwort-Login sperren

Nachdem Sie in einem zweiten Terminal geprüft haben, dass die Anmeldung per Schlüssel funktioniert, härten Sie die SSH-Konfiguration. Die Konfiguration vor der Änderung zu testen verhindert, dass eine fehlerhafte Zeile den Dienst stoppt.

Achtung: Bei manchen Cloud-Images können zusätzliche Dateien im Ordner /etc/ssh/sshd_config.d/ die Passwortanmeldung wieder aktivieren. Prüfen Sie nach der Einstellung auch diesen Ordner.

bashIn /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
bashTesten und neu starten
sudo sshd -t
sudo systemctl restart ssh

Firewall und Fail2ban

Auf dem Server sollten nur die Ports offen sein, die wirklich Dienste nach außen anbieten. Korrekte Firewall-Einstellungen verkleinern die Angriffsfläche; Fail2ban sperrt hartnäckig probierende Adressen automatisch.

5. Firewall aktivieren

Unter Ubuntu bietet UFW eine schlichte Oberfläche für iptables. Erlauben Sie zuerst SSH und aktivieren Sie danach die Firewall; bei umgekehrter Reihenfolge bricht Ihre Verbindung ab.

bash
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 verbose

6. Fail2ban installieren

Fail2ban überwacht die Logs und sperrt IP-Adressen, die wiederholt fehlgeschlagene Anmeldungen verursachen, für eine bestimmte Zeit. Nehmen Sie die Einstellungen nicht in der Hauptdatei vor, sondern in der Datei jail.local, die bei Updates nicht überschrieben wird.

bashInstallation
sudo apt install fail2ban -y
sudo systemctl enable --now fail2ban
ini/etc/fail2ban/jail.local
[sshd]
enabled = true
maxretry = 5
bantime = 1h
findtime = 10m
bashPrüfung
sudo systemctl restart fail2ban
sudo fail2ban-client status sshd

Updates und Dienste

Ein großer Teil der Sicherheitslücken stammt aus Software, für die der Patch längst veröffentlicht, aber nie eingespielt wurde. Auch jeder unnötig laufende Dienst ist ein zusätzliches Risiko.

7. Automatische Sicherheitsupdates

Das Paket unattended-upgrades spielt Sicherheitspatches ohne Ihr Zutun ein. Größere Versionssprünge führen Sie dagegen kontrolliert und von Hand durch, nachdem Sie ein Backup erstellt haben.

bash
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgrades

8. Offene Ports und Dienste prüfen

Lassen Sie sich auflisten, welcher Dienst auf welchem Port lauscht. Dienste, die nur vom Server selbst erreichbar sein müssen, etwa Datenbanken, sollten an 127.0.0.1 lauschen und nicht nach außen offen sein. Deaktivieren Sie Dienste, die Sie nicht benötigen.

bash
sudo ss -tulpn
sudo systemctl disable --now SERVIS_ADI

Überwachung und Backups

Veröffentlichen Sie auf dem Server eine Website, kommt zu diesen Schritten noch HTTPS hinzu; die Einrichtung des kostenlosen Zertifikats und die automatische Erneuerung beschreiben wir in unserem Beitrag zur SSL-Zertifikat-Einrichtung.

9. Logs und Ressourcen überwachen

Einen Angriff bemerkt man am einfachsten anhand der Logs. Prüfen Sie regelmäßig SSH-Anmeldungen, Speicherplatzbelegung und ungewöhnliche CPU-Auslastung. Auch die korrekte Serverzeit ist Voraussetzung dafür, dass die Logs aussagekräftig sind.

bash
sudo journalctl -u ssh --since today
df -h
timedatectl

10. Backup und Snapshot planen

Keine Sicherheitsmaßnahme bietet hundertprozentigen Schutz; die letzte Verteidigungslinie ist das Backup außerhalb des Servers. Nutzen Sie die Snapshot-Funktion des Anbieters, verlassen Sie sich aber nicht allein darauf: Senden Sie Datenbank- und Datei-Backups zusätzlich an einen separaten Speicher und testen Sie die Wiederherstellung regelmäßig. Zur Strategie lesen Sie unsere Anleitung Backups richtig erstellen.

Vorsicht bei Docker

Mit Docker veröffentlichte Ports ändern die iptables-Regeln direkt und können daher UFW-Regeln umgehen. Ein Datenbank-Port, der in UFW gesperrt erscheint, kann von außen erreichbar sein, wenn er mit docker run -p veröffentlicht wurde.

Die Lösung: Binden Sie Container-Ports, die nur vom Server selbst erreichbar sein müssen, an 127.0.0.1 und öffnen Sie nach außen nur die Ports 80 und 443 über einen Reverse-Proxy. Details finden Sie in der offiziellen Docker-Netzwerkdokumentation.

bashBeispiel: Port nur an das lokale Netz binden
docker run -d -p 127.0.0.1:5432:5432 postgres

Häufige Fehler und nächste Schritte

Diese zehn Schritte sind ein Anfang. Auch die auf dem Server laufende Anwendung selbst muss aktuell gehalten werden, Verwaltungsoberflächen sollten mit Zwei-Faktor-Authentifizierung geschützt sein, und für den Verdachtsfall sollte ein Notfallplan bereitliegen. Wie Sie nach einem Angriff vorgehen, erklären wir Schritt für Schritt im Beitrag Website gehackt.

Möchten Sie die Serverpflege nicht mit dem eigenen Team stemmen, übernimmt unsere Speed- und Performance-Optimierung diese Last, indem sie Hosting, Sicherheit und Geschwindigkeit der Website gemeinsam betrachtet. In unseren Projekten für Shopsysteme, Webdesign und Branchensoftware wird die Serversicherheit als Teil der Inbetriebnahme eingeplant.

FehlerFazitSo geht es richtig
UFW aktivieren, ohne SSH zu erlaubenDer Zugriff auf den Server bricht abZuerst ufw allow OpenSSH
Passwort-Login sperren, ohne den Schlüssel zu testenSie sperren sich selbst ausIn einem zweiten Terminal testen
Datenbank nach außen offen lassenDaten sind direkt angreifbarAn 127.0.0.1 binden
Backup auf demselben Server aufbewahrenMit dem Server geht auch das Backup verlorenSeparaten Speicher verwenden
Updates monatelang aufschiebenBekannte Sicherheitslücken bleiben offenAutomatische Sicherheitsupdates

Häufig gestellte Fragen

01Erhöht ein geänderter SSH-Port die Sicherheit?

Den Standardport 22 zu ändern, verringert automatisierten Bot-Verkehr und das Rauschen in den Logs, ist aber keine echte Sicherheitsmaßnahme. Den eigentlichen Schutz bieten Maßnahmen wie Anmeldung per Schlüssel, gesperrte Passwortanmeldung und Fail2ban. Ändern Sie den Port, vergessen Sie nicht, den neuen Port in der Firewall zu erlauben.

02Verwalteter Server oder selbst verwalten?

Kennen Sie sich mit der Linux-Administration aus und können Sie regelmäßig Zeit für die Pflege einplanen, können Sie den VPS selbst verwalten. Andernfalls sorgt ein verwalteter Dienst oder ein erfahrenes Team dafür, dass Updates und Überwachung nicht zu kurz kommen; vernachlässigte Wartung ist die häufigste Ursache von Sicherheitslücken.

03Was tun, wenn Fail2ban mich selbst sperrt?

Melden Sie sich über die Web-Konsole des Anbieters am Server an und heben Sie die Sperre mit dem Befehl sudo fail2ban-client set sshd unbanip IP_ADRESI auf. Haben Sie eine feste IP-Adresse, tragen Sie sie in der Datei jail.local in die Zeile ignoreip ein, damit es nicht wieder passiert.

Auf einem neuen VPS wehren diese zehn Einstellungen den Großteil automatisierter Angriffe schon am ersten Tag ab; zusammen mit regelmäßigen Updates und einem getesteten Backup bilden sie ein solides Fundament. Möchten Sie Sicherheit und Geschwindigkeit Ihres Servers gemeinsam und messbar steuern, werfen Sie einen Blick auf die Speed- und Performance-Optimierung von Aurora.