Sicherheit beim Selbsthosten: 10 kritische Punkte
SSH-Härtung, Firewall, Updates, Fail2ban & Co. – so schützen Sie Ihren Server.
Am Ende dieser Anleitung läuft Ihr selbst gehosteter Server deutlich sicherer als vorher. Sie melden sich per Schlüssel statt Passwort an, eine Firewall blockiert unerwünschte Zugriffe, und automatische Schutzmechanismen halten Angreifer fern. Sie verstehen dabei nicht nur, WELCHE Befehle Sie eingeben, sondern auch WARUM.
Das brauchen Sie vorab
- Ein Linux-Server (z. B. Ubuntu oder Debian), auf den Sie zugreifen können. Ohne einen laufenden Server gibt es nichts zu absichern.
- Zugang mit einem Benutzer, der
sudoverwenden darf.sudobedeutet, dass Sie kurzzeitig Administrator-Rechte bekommen, um Systemänderungen vorzunehmen. - Ein Terminal auf Ihrem eigenen Computer (unter Windows z. B. die 'Eingabeaufforderung', PowerShell oder das moderne 'Windows Terminal'). Damit tippen Sie Befehle ein.
- Eine funktionierende Internetverbindung und die IP-Adresse Ihres Servers. Die IP-Adresse ist wie eine Postanschrift, unter der Ihr Server erreichbar ist.
- Etwas Ruhe und ein zweites offenes Terminalfenster als Sicherheitsnetz. So sperren Sie sich nicht versehentlich aus, während Sie an den Zugangseinstellungen arbeiten.
Schritt für Schritt
-
Verbinden Sie sich per SSH mit dem Server
SSH steht für 'Secure Shell'. Das ist eine verschlüsselte Verbindung, über die Sie Ihren Server aus der Ferne bedienen, so als säßen Sie direkt davor. Alles, was Sie tippen, wird auf dem Weg zum Server unlesbar verschlüsselt.
Öffnen Sie das Terminal auf Ihrem eigenen Rechner. Der folgende Befehl baut die Verbindung auf. Ersetzen Sie
benutzerdurch Ihren Benutzernamen und192.168.1.10durch die echte IP-Adresse Ihres Servers.Beim ersten Verbinden fragt SSH, ob Sie dem Server vertrauen. Tippen Sie
yesund bestätigen Sie mit Enter. Danach geben Sie Ihr Passwort ein (das sehen Sie beim Tippen nicht — das ist normal).ssh benutzer@192.168.1.10 -
Erzeugen Sie ein SSH-Schlüsselpaar auf Ihrem eigenen Computer
Ein Passwort kann erraten werden. Ein SSH-Schlüssel dagegen besteht aus zwei zusammengehörigen Dateien: einem privaten Schlüssel, der geheim auf Ihrem Rechner bleibt, und einem öffentlichen Schlüssel, den Sie dem Server geben dürfen. Nur wer den passenden privaten Schlüssel besitzt, kommt hinein — das ist praktisch unmöglich zu erraten.
Öffnen Sie ein Terminal auf Ihrem EIGENEN Computer (nicht auf dem Server). Der folgende Befehl erstellt das Schlüsselpaar. Wenn nach einem Speicherort und einer Passphrase gefragt wird, können Sie mit Enter die Standardwerte übernehmen. Eine Passphrase ist ein zusätzliches Passwort, das den Schlüssel schützt — empfehlenswert, aber optional.
Nach dem Befehl liegen zwei Dateien im Ordner
.sshin Ihrem Benutzerverzeichnis:id_ed25519(privat, niemals weitergeben!) undid_ed25519.pub(öffentlich).ssh-keygen -t ed25519 -
Übertragen Sie den öffentlichen Schlüssel auf den Server
Jetzt bringen Sie den öffentlichen Schlüssel auf den Server, damit dieser Sie künftig ohne Passwort erkennt. Der Befehl
ssh-copy-iderledigt das automatisch: Er kopiert Ihren öffentlichen Schlüssel an die richtige Stelle auf dem Server.Führen Sie den folgenden Befehl auf Ihrem EIGENEN Computer aus. Sie werden dabei noch einmal nach Ihrem Server-Passwort gefragt — das ist das letzte Mal, dass Sie es hierfür brauchen.
Nach erfolgreicher Übertragung sollten Sie sich testweise neu verbinden können, ohne das Server-Passwort einzugeben. Probieren Sie
ssh benutzer@192.168.1.10— wenn Sie direkt (oder nur mit Ihrer Passphrase) hineinkommen, funktioniert der Schlüssel.ssh-copy-id benutzer@192.168.1.10 -
Deaktivieren Sie den Passwort-Login und den Root-Zugang
Da der Schlüssel funktioniert, schalten Sie jetzt den Passwort-Login komplett ab. Damit können Angreifer nicht mehr einfach Passwörter durchprobieren. Zusätzlich sperren Sie den direkten Login als
root(der allmächtige Administrator-Benutzer), dennrootist ein beliebtes Angriffsziel.Die Einstellungen stehen in der Datei
/etc/ssh/sshd_config. Öffnen Sie diese auf dem Server mit einem Texteditor.nanoist ein einfacher Editor, der sich mit Strg+O (speichern) und Strg+X (beenden) bedienen lässt.Suchen Sie in der Datei die Zeilen mit
PasswordAuthenticationundPermitRootLogin. Falls ein#davorsteht, entfernen Sie es (das#macht eine Zeile zu einem Kommentar, der ignoriert wird). Setzen Sie beide aufno, sodass dort steht:PasswordAuthentication noundPermitRootLogin no.WICHTIG: Bevor Sie die Verbindung schließen, öffnen Sie ein ZWEITES Terminalfenster und testen Sie, ob Sie sich noch einloggen können. So merken Sie sofort, falls etwas schiefging, und sperren sich nicht aus.
sudo nano /etc/ssh/sshd_config # Danach den SSH-Dienst neu starten, damit die Änderungen greifen: sudo systemctl restart ssh -
Installieren und aktivieren Sie die Firewall (ufw)
Eine Firewall ist wie ein Türsteher: Sie entscheidet, welche Verbindungen zum Server hinein dürfen und welche nicht.
ufwsteht für 'Uncomplicated Firewall' — eine besonders anfängerfreundliche Variante.Zuerst installieren Sie das Programm. Der Befehl
sudo apt install ufwlädt es herunter und richtet es ein. Falls Sie gefragt werden, ob Sie fortfahren möchten, bestätigen Sie mitjodery.ACHTUNG, jetzt kommt der kritischste Moment: Bevor Sie die Firewall einschalten, MÜSSEN Sie den SSH-Zugang freigeben. Wenn Sie das vergessen und die Firewall aktivieren, sperrt sie Ihre eigene Verbindung aus und Sie kommen nicht mehr auf den Server. Der Befehl
sudo ufw allow 22/tcpöffnet Port 22, den Standard-Port für SSH. Ein Port ist wie eine nummerierte Tür — verschiedene Dienste nutzen verschiedene Türnummern.Wenn Sie Webseiten hosten, geben Sie zusätzlich Port 80 (unverschlüsseltes Web) und Port 443 (verschlüsseltes Web, HTTPS) frei. Erst danach aktivieren Sie die Firewall mit
sudo ufw enable. Der Befehlsudo ufw statuszeigt Ihnen anschließend, welche Regeln aktiv sind.sudo apt install ufw sudo ufw allow 22/tcp sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable sudo ufw status -
Richten Sie Fail2ban gegen automatische Angriffe ein
Angreifer nutzen oft Programme, die tausende Login-Versuche pro Minute abfeuern. Fail2ban beobachtet die Logdateien (das sind Protokolle, in denen der Server festhält, wer sich anzumelden versucht) und sperrt automatisch jede IP-Adresse, die zu oft danebenliegt.
Die Installation ist unkompliziert.
sudo apt install fail2banlädt das Programm herunter und startet es. Das Schöne: Bereits die Standardeinstellungen schützen Ihren SSH-Zugang sofort, ohne dass Sie etwas konfigurieren müssen.Mit dem folgenden Statusbefehl prüfen Sie, dass Fail2ban läuft und den SSH-Schutz überwacht. Sie sehen dort unter anderem, wie viele Angriffsversuche bereits geblockt wurden.
sudo apt install fail2ban sudo systemctl status fail2ban sudo fail2ban-client status sshd -
Halten Sie das System mit Updates aktuell
Software hat Fehler, und manche davon sind Sicherheitslücken. Updates schließen diese Lücken. Ein Server, der nie aktualisiert wird, ist wie eine Tür mit einem bekannten kaputten Schloss.
Der Befehl
sudo apt updateholt die Liste der verfügbaren Aktualisierungen.sudo apt upgradeinstalliert sie dann. Mit dem&&dazwischen führen Sie beide nacheinander aus. Wenn Sie gefragt werden, ob Sie fortfahren möchten, bestätigen Sie.Damit Sie das nicht ständig manuell tun müssen, installieren Sie
unattended-upgrades. Dieses Programm spielt wichtige Sicherheits-Updates ganz von allein ein, auch wenn Sie gerade nicht am Server sitzen. Nach der Installation richten Sie es mit demdpkg-reconfigure-Befehl ein und wählen 'Ja'.sudo apt update && sudo apt upgrade sudo apt install unattended-upgrades sudo dpkg-reconfigure unattended-upgrades -
Nutzen Sie einen Reverse Proxy mit TLS statt offener Ports
Wenn Sie mehrere Webdienste betreiben, sollten Sie nicht für jeden einen eigenen Port ins Internet öffnen. Ein Reverse Proxy ist eine Art Empfangstheke: Alle Anfragen aus dem Internet kommen an EINER Stelle an, und der Proxy leitet sie intern an den richtigen Dienst weiter. Das reduziert die Angriffsfläche erheblich.
Gleichzeitig übernimmt der Reverse Proxy die Verschlüsselung per TLS. TLS ('Transport Layer Security') sorgt für das Schloss-Symbol im Browser und dafür, dass niemand mitlesen kann. Ein Zertifikat beweist dabei, dass Ihr Server wirklich der ist, für den er sich ausgibt.
Für Anfänger ist 'Caddy' eine sehr angenehme Wahl, weil es TLS-Zertifikate von Let's Encrypt (eine kostenlose Zertifizierungsstelle) vollautomatisch besorgt und erneuert. Nach der Installation tragen Sie in die Datei
/etc/caddy/Caddyfileeinfach Ihre Domain und das Ziel ein, wie im Beispiel unten.Nach dem Speichern starten Sie Caddy neu, und es holt automatisch ein gültiges Zertifikat für Ihre Domain. Ab jetzt ist Ihre Seite unter
https://erreichbar, ohne dass Sie sich um Verlängerungen kümmern müssen.sudo apt install caddy sudo nano /etc/caddy/Caddyfile # Beispielinhalt im Caddyfile (meine-domain.de ersetzen): # meine-domain.de { # reverse_proxy localhost:8080 # } sudo systemctl restart caddy -
Verstecken Sie Dienste hinter einem VPN statt sie offen ins Netz zu stellen
Manche Dienste — etwa ein Admin-Panel oder ein privater Datenspeicher — müssen gar nicht für die ganze Welt erreichbar sein. Ein VPN ('Virtual Private Network') baut einen privaten, verschlüsselten Tunnel zwischen Ihren Geräten und dem Server auf. Nur wer im Tunnel ist, sieht die dahinterliegenden Dienste.
Ein sehr einfaches, modernes VPN ist 'WireGuard'. Sie installieren es mit dem Paketmanager. Danach erzeugen Sie Schlüssel und eine Konfiguration — dieser Teil ist etwas umfangreicher, weshalb Sie am besten dem offiziellen WireGuard-Schnellstart folgen.
Die Grundidee für Sie als Einsteiger: Statt Port 8080 für Ihr Admin-Panel in der Firewall zu öffnen, lassen Sie ihn geschlossen und erreichen den Dienst nur über den VPN-Tunnel. Für Angreifer aus dem Internet existiert die Tür dann schlicht nicht sichtbar.
sudo apt install wireguard # Anschließend Schlüssel und Konfiguration nach der offiziellen # WireGuard-Anleitung erstellen und mit 'wg-quick up wg0' starten. -
Richten Sie Backups als letztes Sicherheitsnetz ein
Kein Schutz ist perfekt. Wenn doch einmal etwas schiefgeht — sei es ein Angriff, ein Festplattendefekt oder ein eigener Fehler — ist ein Backup Ihre Rettung. Ein Backup ist eine Kopie Ihrer Daten an einem anderen Ort.
Wichtig ist die 3-2-1-Regel: drei Kopien Ihrer Daten, auf zwei verschiedenen Medien, davon eine an einem anderen physischen Ort. So überstehen Ihre Daten selbst dann, wenn der ganze Server verloren geht.
Ein anfängerfreundliches Werkzeug ist
rsync, das Dateien effizient auf ein anderes Laufwerk oder einen anderen Server kopiert. Das Beispiel unten sichert das Verzeichnis/var/wwwauf eine externe Festplatte. Testen Sie regelmäßig, ob sich die Sicherung auch wirklich wiederherstellen lässt — ein ungetestetes Backup ist nur eine Hoffnung.sudo apt install rsync rsync -av /var/www /mnt/backup/www
Häufige Probleme und Lösungen
Nach dem Aktivieren der Firewall komme ich nicht mehr auf den Server.
Sehr wahrscheinlich haben Sie vergessen, Port 22 für SSH freizugeben, BEVOR Sie ufw enable ausgeführt haben. Verbinden Sie sich über die Notfall-Konsole Ihres Anbieters (bei den meisten Hostern im Kundenbereich als 'Konsole', 'VNC' oder 'Rescue' zu finden) und geben Sie dort sudo ufw allow 22/tcp ein. Danach sind Sie wieder erreichbar.
Der SSH-Login verlangt trotz Schlüssel weiterhin ein Passwort.
Prüfen Sie mit ls ~/.ssh auf Ihrem eigenen Rechner, ob der Schlüssel existiert, und ob ssh-copy-id erfolgreich war. Auf dem Server müssen die Rechte stimmen: chmod 700 ~/.ssh und chmod 600 ~/.ssh/authorized_keys. Sind die Rechte zu offen, ignoriert SSH den Schlüssel aus Sicherheitsgründen.
Fail2ban hat mich selbst ausgesperrt, weil ich mich vertippt habe.
Verbinden Sie sich über die Notfall-Konsole Ihres Anbieters und heben Sie die Sperre für Ihre IP auf mit sudo fail2ban-client set sshd unbanip IHRE-IP-ADRESSE. Um das künftig zu vermeiden, können Sie Ihre eigene feste IP in der Fail2ban-Konfiguration unter ignoreip eintragen.
Fazit
Sie haben Ihren Server jetzt auf mehreren Ebenen abgesichert: sichere Anmeldung per Schlüssel, eine Firewall, automatische Sperren gegen Angreifer, aktuelle Software und ein Backup als Rettungsanker. Keine dieser Maßnahmen allein macht Sie unangreifbar, aber gemeinsam erhöhen sie die Hürde für Angreifer enorm. Sicherheit ist kein einmaliges Projekt, sondern eine Gewohnheit — schauen Sie regelmäßig nach Updates und prüfen Sie Ihre Backups.
Für Self-Hosting-Setups empfehlen wir einen VPS mit mindestens 2 GB RAM. Hetzner Cloud ist unser Standard-Partner für zuverlässige, günstige Server aus deutschen Rechenzentren.
Hetzner Cloud ab 3,29 € → Mit einem Kauf über diesen Link unterstützen Sie unsere Arbeit – ohne Mehrkosten für Sie.Häufige Fragen
Muss ich wirklich den SSH-Port von 22 auf einen anderen ändern?
Es ist optional und bringt nur einen kleinen Vorteil: Automatische Massen-Scans zielen meist auf Port 22, deshalb wird ein anderer Port seltener angeklopft. Das ist aber nur 'Sicherheit durch Verstecken' und ersetzt keine echte Härtung. Deutlich wichtiger sind Schlüssel-Login, das Deaktivieren von Passwörtern und Fail2ban. Wenn