Ändern des SSH-Ports
Das Ändern des standardmäßigen SSH-Ports (22) verringert die Angriffsfläche gegenüber automatisierten Scans und einfachen Brute-Force-Angriffen, ersetzt jedoch keine geeigneten Sicherheitsmaßnahmen.
Bevor Sie Änderungen vornehmen, stellen Sie sicher, dass eine aktive SSH-Sitzung geöffnet ist. Schließen Sie diese nicht, bevor Sie überprüft haben, dass der neue Port funktioniert. Andernfalls können Sie den Zugriff auf den Server verlieren.
Portnummer auswählen
Wählen Sie eine Portnummer oberhalb von 1024. Ports im Bereich 49152–65535 überschneiden sich seltener mit anderen bekannten Diensten. Vermeiden Sie häufig verwendete Alternativen wie 2222 oder 22222, da diese häufig von automatisierten Scannern angegriffen werden. In dieser Anleitung wird 22777 als Beispiel verwendet.
Konfigurationsdatei sichern
Erstellen Sie vor Änderungen eine Sicherungskopie der SSH-Konfigurationsdatei:
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
SSH-Port unter Ubuntu und Debian ändern
Ab Debian 12 und einigen neueren Ubuntu-Versionen (22.04+) verwendet SSH möglicherweise standardmäßig die systemd-Socket-Aktivierung. In diesem Fall reicht es häufig nicht aus, lediglich die Direktive Port in sshd_config zu ändern.
Prüfen Sie zunächst, ob die Socket-Aktivierung aktiv ist:
systemctl is-active ssh.socket
Wenn der Befehl active zurückgibt, konfigurieren Sie den SSH-Socket für die Verwendung des neuen Ports.
Erstellen Sie eine systemd-Überschreibung für den SSH-Socket:
systemctl edit ssh.socket
Fügen Sie folgenden Inhalt hinzu:
[Socket] ListenStream= ListenStream=22777
Die leere Zeile ListenStream= entfernt den Standardport (22). Ohne diese Zeile kann SSH sowohl auf Port 22 als auch auf dem neuen Port lauschen.
Für eine zusätzliche Zuverlässigkeit sollten Sie den Port auch in der SSH-Konfiguration festlegen. Dies unterstützt den systemd-Generator und sorgt dafür, dass die Einstellung bei OpenSSH-Updates erhalten bleibt:
mkdir -p /etc/ssh/sshd_config.d echo "Port 22777" | tee /etc/ssh/sshd_config.d/10-port.conf
Für eine bessere Kompatibilität können Sie die Adressen stattdessen explizit angeben:
[Socket] ListenStream= ListenStream=0.0.0.0:22777 ListenStream=[::]:22777
Speichern Sie die Konfiguration und wenden Sie die Änderungen an:
systemctl daemon-reload systemctl restart ssh.socket systemctl restart ssh
Überprüfen Sie, ob der Dienst ausgeführt wird:
systemctl status ssh.socket
Auf einigen neueren Systemen, beispielsweise Ubuntu 24.04+, kann der systemd-Generator den Port automatisch aus sshd_config auslesen. In diesem Fall kann es ausreichen, Port direkt zu bearbeiten und anschließend systemctl daemon-reload sowie systemctl restart ssh.socket auszuführen. Die oben beschriebene Override-Methode funktioniert bei allen Versionen.
Ältere Ubuntu- und Debian-Versionen
Bei Ubuntu-Versionen vor 22.04 und Debian-Versionen vor 12 wird SSH nicht über die Socket-Aktivierung verwaltet. Öffnen Sie die SSH-Konfigurationsdatei:
nano /etc/ssh/sshd_config
Suchen Sie die folgende Zeile:
Port 22
Entkommentieren Sie die Zeile und ersetzen Sie 22 durch die gewünschte Portnummer:
Port 22777
Speichern Sie die Datei und überprüfen Sie die Konfiguration:
sshd -t
Wenn der Befehl nicht gefunden wird, verwenden Sie:
/usr/sbin/sshd -t
Wenn der Befehl keine Ausgabe zurückgibt, ist die Konfiguration gültig. Starten Sie den SSH-Dienst neu:
systemctl restart ssh
Socket-Aktivierung deaktivieren
Wenn Sie SSH lieber über den herkömmlichen Dienst statt über den Socket verwalten möchten, können Sie die Socket-Aktivierung deaktivieren:
systemctl disable --now ssh.socket systemctl enable --now ssh
Bearbeiten Sie anschließend sshd_config wie oben beschrieben und starten Sie SSH neu:
systemctl restart ssh
SSH-Port unter AlmaLinux, Rocky Linux und CentOS ändern
SSH-Konfigurationsdatei bearbeiten
Öffnen Sie die SSH-Konfigurationsdatei:
nano /etc/ssh/sshd_config
Suchen Sie die folgende Zeile:
Port 22
Entkommentieren Sie sie und ersetzen Sie 22 durch die gewünschte Portnummer:
Port 22777
Speichern Sie die Datei und überprüfen Sie die Konfiguration:
/usr/sbin/sshd -t
Wenn der Befehl keine Ausgabe zurückgibt, ist die Konfiguration gültig. Starten Sie den SSH-Dienst neu:
systemctl restart sshd
Überprüfen Sie, ob der Dienst ausgeführt wird:
systemctl status sshd
Port in SELinux freigeben
Auf Systemen mit aktiviertem SELinux müssen Sie den neuen Port auch in der SELinux-Richtlinie freigeben. Um zu prüfen, welche Ports derzeit für SSH zugelassen sind, führen Sie folgenden Befehl aus:
semanage port -l | grep ssh
Fügen Sie anschließend den neuen Port hinzu oder ändern Sie dessen Konfiguration:
semanage port -a -t ssh_port_t -p tcp 22777 || semanage port -m -t ssh_port_t -p tcp 22777
Wenn semanage nicht installiert ist, installieren Sie das erforderliche Paket:
dnf install policycoreutils-python-utils
Firewall konfigurieren
Geben Sie den neuen Port immer vor dem Neustart von SSH in der Firewall frei. Wenn Sie SSH zuerst neu starten, können Sie den Zugriff auf den Server verlieren.
UFW
ufw allow 22777/tcp ufw reload ufw status
firewalld
firewall-cmd --permanent --zone=public --add-port=22777/tcp firewall-cmd --reload
iptables
iptables -I INPUT -p tcp --dport 22777 -j ACCEPT iptables-save > /etc/iptables/rules.v4
Der Befehl iptables-save speichert Regeln nur dann in einer Datei, wenn iptables-persistent auf dem System installiert und konfiguriert ist. Installieren Sie es mit:
apt install -y iptables-persistent
Überprüfen Sie, ob Ihre Distribution diese Datei verwendet, bevor Sie sich für die dauerhafte Speicherung darauf verlassen. Beachten Sie, dass moderne Systeme möglicherweise nftables anstelle von iptables verwenden. Wenn Sie nftables verwenden, fügen Sie in Ihrer nftables-Konfiguration eine Regel hinzu, die den neuen Port freigibt.
Fail2Ban konfigurieren
Wenn Fail2Ban auf dem Server konfiguriert ist, aktualisieren Sie den SSH-Port in dessen Konfiguration. Öffnen Sie /etc/fail2ban/jail.local oder die entsprechende Datei unter /etc/fail2ban/jail.d/ und setzen Sie:
port = 22777
Starten Sie Fail2Ban nach der Aktualisierung der Konfiguration neu:
systemctl restart fail2ban
Neuen Port überprüfen
Prüfen Sie, ob SSH auf dem neuen Port lauscht:
ss -tlnp | grep :22777
Alternativ können Sie alle SSH-bezogenen Listener anzeigen:
ss -tlnp | grep ssh
Auf älteren Systemen können Sie stattdessen netstat verwenden:
netstat -tlnp | grep :22777
Sie können auch den Status des Dienstes direkt überprüfen.
Unter Ubuntu und Debian:
systemctl status ssh.socket
Unter AlmaLinux, Rocky Linux und CentOS:
systemctl status sshd
Schließen Sie Ihre aktuelle SSH-Sitzung nicht. Öffnen Sie stattdessen ein neues Terminalfenster und verbinden Sie sich über den neuen Port:
ssh root@YOUR_SERVER_IP -p 22777
Wenn die Verbindung erfolgreich hergestellt wird, können Sie die alte Sitzung schließen. Entfernen Sie anschließend Port 22 aus den Firewall-Regeln, wenn er nicht mehr benötigt wird.
Für UFW:
ufw delete allow 22/tcp ufw reload
Für firewalld:
firewall-cmd --permanent --zone=public --remove-port=22/tcp firewall-cmd --reload
Entfernen Sie Port 22 nicht aus der Firewall, bevor Sie überprüft haben, dass der neue Port funktioniert. Wenn die neue Verbindung fehlschlägt, verwenden Sie die geöffnete SSH-Sitzung, um das Problem zu beheben oder die Änderungen rückgängig zu machen:
systemctl revert ssh.socket cp /etc/ssh/sshd_config.backup /etc/ssh/sshd_config rm -f /etc/ssh/sshd_config.d/10-port.conf systemctl daemon-reload systemctl restart ssh.socket
Wenn die Socket-Aktivierung deaktiviert ist, ersetzen Sie die letzten beiden Befehle durch:
systemctl restart ssh
Fazit
Das Ändern des standardmäßigen SSH-Ports von 22 auf einen benutzerdefinierten Port kann die Angriffsfläche gegenüber automatisierten Scans und einfachen Brute-Force-Versuchen verringern. Das Ändern des Ports sollte jedoch als zusätzliche Sicherheitsmaßnahme betrachtet werden und nicht als Ersatz für eine ordnungsgemäße Absicherung von SSH.
Lassen Sie Ihre aktuelle SSH-Sitzung immer geöffnet, bis Sie erfolgreich über den neuen Port verbunden sind. Nachdem die neue Verbindung überprüft wurde, können Sie die alte Sitzung sicher schließen und Port 22 aus der Firewall entfernen, wenn er nicht mehr benötigt wird.