SSH-Server "OpenSSH"
Diese Veröffentlichung widmet sich dem Einsatz eines SSH-Servers (siehe auch: SSH-Server) auf Basis des Programms OpenSSH.
Installation
sudo apt update && sudo apt install --yes openssh-server
Hinweis:
Die Installation von „openssh-server“ installiert auch den Dateiserver „openssh-sftp-server“.
SSH-Host-Keys auf ED25519 begrenzen
Wir empfehlen die Beschränkung der SSH-Host-Keys auf das ED25519-Kryptosystem.
Wir empfehlen vor jeder Änderungen an der SSH-Server-Konfiguration eine Sicherheitskopie der aktuellen SSH Serverkonfiguration zu erstellen:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_$(date +%F_%T).bak
Folgender Befehl entfernt die Kommentierung der Zeile mit dem ED25519-Schlüssel und setzt ihn somit als Standard:
sudo sed --in-place '/#HostKey.*ed25519_key/s/^#//g' /etc/ssh/sshd_config
Anschließend startet man den SSH-Server neu, damit die Konfigurationsdatei neu eingelesen wird:
sudo service ssh restart
Wenn auf dem OpenSSH-Server (oder davor) eine Firewall aktiv ist, so muss muss der SSH-Port (Standard: Port 22) in der Firewall freigegeben werden. Im Fall der von uns empfohlenen Firewall ufw - Uncomplicated Firewall kann dies zum Beispiel durch folgende Kommandos erreicht werden:
sudo ufw allow from 192.168.178.0/24 to any app SSH # ggf. den IPv4-Bereich anpassen sudo ufw allow from fe80:: to any app SSH # ggf. den IPv6-Bereich anpassen sudo ufw reload# Regeln anwenden
IP-Adresse eines SSH-Servers ermitteln
Damit sich ein SSH-Client zu einem SSH-Server verbinden kann, muss dessen IP-Adresse oder Domainname bekannt sein. Man kann die lokalen IP Adressen wie folgt ermitteln:
IPv4 (Beispiel)
ip addr show | grep 192 | cut --delimiter " " --fields 6 | cut --delimiter "/" --fields 1
IPv6 (Beispiel)
ip addr show | grep fe80 | cut --delimiter " " -f 6 | cut --delimiter "/" --fields 1
Prüfsumme eines SSH-Host-Keys ermitteln
Damit ein SSH-Client einen SSH-Server verifizieren kann, muss dessen „Host-Key-Fingerprint“ (Fingerabdruck) bekannt sein. Man kann z.B. den Fingerabdruck eines „ED25519-SSH-Host-Key“-Fingerabdruck wie folgt ermitteln:
sudo ssh-keygen -lf /etc/ssh/*ed25519_key | cut --delimiter=":" --field=2
Mit den IP-Adressen und der Prüfsumme kann nun eine SSH-Anmeldung von einem Client zu dem Server hergestellt werden. Es empfiehlt sich im ersten Schritt den SSH-Schlüssel des Client-Kontos zum Server-Konto zu kopieren:
ssh-copy-id ssh-user@ssh-server
Passwort-Authentifizierung deaktivieren
Wenn der Zugang zum SSH-Server via Schlüssel erfolgt (wozu wir ausdrücklich raten), so kann die Passwort-Authentifizierung mit folgender Befehlszeile deaktiviert werden:
sudo sed --in-place '/#PasswordAuthentication yes/s/^#PasswordAuthentication yes/PasswordAuthentication no/g' /etc/ssh/sshd_config
Anschließend sollte man den SSH-Server neu starten:
sudo service ssh restart
alte Schlüssel sichern; neue Schlüssel generieren
Während der Installation von „openssh-server“ werden automatisch Schlüssel für alle gängigen Kryptosysteme für den Rechner erzeugt („Host-Keys“). Da zum Zeitpunkt der Schlüsselerzeugung evtl. noch nicht genügend Entropie vorhanden war, empfiehlt es sich die „alten“ Schlüssel zu sichern und anschließend neue zu generieren:
Zunächst wechselt man in das Verzeichnis, in welchem die Host-Keys liegen. Auf einem Debian-Server ist das „/etc/ssh/“:
root@server:~# cd /etc/ssh/
Nun erstellt man eine Sicherheitskopie der aktuelle Schlüssel:
root@server:~# tar -czf "alte Schlüssel.tar.gz" ssh_host*
Die alten Schlüssel kann man nun gelöscht:
root@server:~# rm ssh_host*
Jetzt können die neuen Schlüssel generiert werden:
root@server:~# ssh-keygen -A
Alle Schritte in einer Zeile:
root@server:~# cd /etc/ssh/ && tar -czf "alte Schlüssel.tar.gz" ssh_host* && rm ssh_host* && ssh-keygen -A
Oder als Skript:
# Skript zum sichern alter Host-Keys und zum generieren neuer Schlüssel #!/bin/bash cd /etc/ssh/ tar -czf "alte Schlüssel.tar.gz" ssh_host* rm ssh_host* ssh-keygen -A
Die Sicherheitskopien der alten Schlüssel können abschließend noch auf einen Backup-Server verschoben werden. Per Terminal kann folgende Muster-Kommandozeile verwendet werden:
scp /etc/ssh/"alte Schlüssel.tar.gz" backup-server:/"Sicherung Server"/
informiert bleiben
Um über neue Entwicklungen von OpenSSH auf dem Laufenden zu bleiben, empfiehlt sich das Abonnement der Mailingliste "OpenSSH-Unix-Announce".
Deinstallation (samt Konfiguration)
Unter Beibehaltung der Konfiguration:
sudo apt-get --yes autoremove openssh
Mit Entfernung der Konfiguration:
sudo apt-get --purge --yes autoremove openssh
empfohlene nächste Schritte
Qualitätssicherung
Für Fragen, Verbesserungsvorschläge, Alternativen oder sonstiges Feedback bitten wir um eine Mail an hallo@neuhaus-it.de. Das hilft uns die Qualität unserer Veröffentlichungen zu verbessern und somit anderen Kunden bessere Inhalte zu bieten.