Wie sichere ich meinen SSH-Server unter Linux
SSH unter Linux absichern: Root-Login deaktivieren, Login per Schlüssel statt Passwort, Port 22 ändern, fail2ban und die UFW-Firewall konfigurieren.
Kurz vorweg: Einen SSH-Server unter Linux sicherst Du mit fünf Handgriffen ab — PermitRootLogin no, Anmeldung per SSH-Schlüssel statt Passwort (PasswordAuthentication no), Beschränkung auf bestimmte Konten per AllowUsers, MaxAuthTries 3 gegen Brute Force und eine Firewall, die Port 22 (oder Deinen eigenen Port) nur für die IP-Bereiche öffnet, die ihn wirklich brauchen. Alles davon steht in /etc/ssh/sshd_config und ist in zehn Minuten erledigt.
Checkliste: SSH-Server unter Linux absichern
Diese Einstellungen setze ich auf jedem Linux-Server, den ich neu aufsetze. Alle Zeilen kommen in /etc/ssh/sshd_config, danach sudo systemctl restart ssh:
PermitRootLogin no— kein direkter Root-Login über SSH. Stattdessen mit einem normalen Benutzer anmelden und mitsudoarbeiten.PasswordAuthentication no— Anmeldung nur per SSH-Schlüssel. Wichtig: Erst den Schlüssel hinterlegen und die Anmeldung damit in einer zweiten Session testen, dann diese Zeile setzen. Sonst sperrst Du Dich aus.PermitEmptyPasswords no— Konten ohne Passwort dürfen nie herein.Port 1022(optional) — ein anderer Port als 22 reduziert vor allem den Lärm im Log, echte Sicherheit bringt er nicht.AllowUsers deinuser— nur die aufgezählten Konten dürfen sich per SSH anmelden. Sehr wirksam und schnell gesetzt.MaxAuthTries 3— begrenzt die Fehlversuche pro Verbindung.- fail2ban installieren (
sudo apt install fail2ban) — sperrt IP-Adressen nach wiederholten Fehlversuchen automatisch aus. - Firewall aktivieren — nur den SSH-Port freigeben, idealerweise eingeschränkt auf bekannte Quell-IPs.
Prüfe die Konfiguration vor dem Neustart mit sudo sshd -t. Der Befehl meldet Syntaxfehler, bevor der Dienst damit auf die Nase fällt. Und lass beim Umstellen immer eine bestehende SSH-Session offen, bis Du Dich in einem zweiten Fenster erfolgreich neu angemeldet hast.
Warum das alles nötig ist und wie die einzelnen Punkte im Detail aussehen, zeige ich jetzt der Reihe nach.
Normalerweise wird SSH verwendet, um sicher auf Linux-Server zuzugreifen. Durch Benutzer manuell oder auch durch automatisierte Systeme wie Ansible. Die meisten Benutzer verwenden SSH-Verbindungen mit den Standardeinstellungen, um sich mit einem entfernten Server zu verbinden. Dennoch bergen die unsicheren Standardeinstellungen verschiedene Sicherheitsrisiken.
Das Root-Konto eines Servers mit offenem SSH-Zugriff könnte gefährdet sein. Besonders dann, wenn eine öffentliche IP-Adresse verwendet wird, ist es viel einfacher, das Root-Passwort zu knacken. Daher ist es notwendig, sich mit SSH-Sicherheit vertraut zu machen.
Root Login deaktivieren
Lege einen neuen Benutzer an. Vergib ihm root-rechte und konfiguriere /etc/ssh/sshd_config mit PermitRootLogin no.
Ändere den standard SSH Port (22)
Wähle zunächst einen Port aus. e.g. 1022
In /etc/ssh/sshd_config musst Du nur Port 1022
Nun konfiguriere deine Firewall. Wie Du die UFW-Firewall einrichten kannst, zeigt eine eigene Anleitung. Verwendest Du die UFW, dann genügt:
sudo ufw allow 5022/tcp
sudo service ssh restart
Zugriff für Benutzer mit leeren Passwörtern sperren
Es kann sein, dass es auf Deinem System Benutzer ohne Passwörter gibt
Um zu verhindern, dass solche Benutzer auf die Server zugreifen, kannst Du folgendes in Deine /etc/ssh/sshd_config einsetzen
PermitEmptyPasswords no
Statt Dich auf Passwörter zu verlassen, solltest Du den SSH-Login per Schlüssel einrichten. Brauchst Du verschlüsselten Zugriff auf weitere Dienste hinter dem Server, hilft Dir die dynamische SSH-Portweiterleitung. Um zu kontrollieren, welche Ports sich von außen erreichen lassen, kannst Du anschließend die offenen Ports mit nmap prüfen.
Mehr aus „Linux, DevOps & Systeme"
Docker Speicherplatz freigeben
Docker Speicherplatz freigeben: mit docker system df die Belegung sehen und mit prune ungenutzte Images, Container, Volumes und Build-Cache löschen.
WeiterlesenWindows Core Prozesse verstehen
Windows Core-Prozesse verstehen: was smss.exe, csrss.exe, lsass.exe und svchost.exe wirklich tun und woran Du getarnte Malware im Prozessbaum erkennst.
WeiterlesenUbuntu LTS Release Update
Ubuntu LTS sicher aktualisieren: Snapshot bei Contabo oder Netcup anlegen, mit apt update und do-release-upgrade hochziehen und den SSH-Port bestätigen.
WeiterlesenÜber diesen Blog
Ein Sammelsurium an Denkanstößen.
Hier sammle ich Wissen, Argumente und Links zu allem, was mich beschäftigt — von Technik über Küche bis Nachhaltigkeit. Beruflich berate ich zu Cybersecurity.