[Quicktipp] Standard SSH Port wechseln

Im Standard verbinden sich die meisten Administratoren und Benutzer mit dem SSH Port 22. Dieser Port ist der Standard Port und ein beliebtes Angriffsziel. Wer Zugang über eine SSH Verbindung erlangt, im schlimmsten Fall als Root Benutzer, der hat die Kontroller über seinen Server verloren und kann in der Regel sein System komplett neu aufsetzen. Aufgrund dessen sollte jeder den SSH Port Absichern.

Ein guter Schutz ist die Port Änderung. So wird der Port 22 nach außen komplett geschlossen und Angreifer erhalten beim Versuch auf den Port 22 eine „ssh: connect to host … port 22: Connection refused“ Meldung.

SSH Port ändern

Die Port Änderung erfolgt direkt auf dem Server. Es wird die sshd_config-Datei geöffnet und der Port in Zeile 5 geändert. Angegeben werden kann jeder beliebige Port.

Es sollte kein Port überschrieben werden, der schon von anderen Diensten verwendet wird

Datei öffnen:

Sudo bzw. Root Rechte werden benötigt

sudo nano /etc/ssh/sshd_config

Port ändern:

Die Port Angabe steht gleich am Anfang der Datei. In meinem Beispiel setze ich den neuen Port auf 9889.

# Package generated configuration file
# See the sshd_config(5) manpage for details

# What ports, IPs and protocols we listen for
Port 9889
# Use these options to restrict which interfaces/protocols sshd will bind to

Wer den neuen Port vergisst, sperrt sich selber aus

SSH neustarten

Damit die Änderung aktiv wird, muss der SSH Dienst neugestartet werden. Dieser Neustart gelingt mit dem Befehl:

sudo /etc/init.d/ssh restart

SSH Login mit Port Angabe

Eine SSH Verbindung mit geänderten Port wird über den Parameter „-p“ aufgerufen:

ssh benutzer@domain.tld -p 9889

Beim Rsync muss der neue Port ebenfalls mit angegeben werden. Sonst erhält der Nutzer auch hier eine „Connection refused“-Meldung.

rsync -e "ssh -p 9889" /var/www/ benutzer@domain.tld:/var/www/

7 comments

Hi,
einen default Port zu ändern ist nichts außer schlechte Praxis und verursacht mehr Probleme als es löst. Ein einfacher Portscan ermittelt in wenigen Sekunden die offenen Ports und im selben Atemzug auch noch welcher Dienst auf dem Port läuft. Es spielt dabei absolut keine Rolle ob der Dienst auf dem Standardport läuft oder nicht. Um einen SSH Zugang zu schützen sollte man stattdessen vernünftige Authetifizierungsverfahren verwenden, sprich Public Key Verfahren oder ähnliches. Ausbauen lässt sich der Schutz durch Programme wie fail2ban die bei erkannten Brutforceangriffen die entsprechenden IPs blocken.

Ich würde ja statt der „Security by obscurity“ einfach schlüsselbasierte Authentifizierung nehmen. Ist sicherer und auch bequemer, da man nicht immer das Passwort angeben muss. 😉

…und damit wir den neuen Port nicht ‚vergessen‘ (weil wir ja öfter nutzen;)), schreiben wir in die ~/.ssh/config diesen neuen Abschnitt:

# hier kommt meine bevorz. Abk. hin
Host domtld
#hier der offizielle Hostname
Hostname domain.tld
Port 9889
User benutzer
#wenn ich dann gleich zum nächsten Rechner weiter huepfen moechte
ForwardAgent yes
!<—–

an der konsole dann einfach:
$: ssh domtld
eingeben… 😉

Ich sehe eigentlich nur einen Grund den Standard-Port zu wechseln: Wenn man seinen SSH-Server mit PasswordAuthentication betreibt (statt Passwörter zu verbieten und ausschliesslich Schlüssel oder Zertifikate zu erlauben). Wenn man nicht noch fail2ban o.ä. nutzt, dann ist von PasswordAuthentication dringend abzuraten. Wenn man es nicht nutzt, braucht man auch nicht den default Port ändern.

Passwörter sollte man für root gar nicht und für einfache Nutzer nicht ohne zweiten Faktor (z.B. Google Authenticator) zulassen. Alles andere ist potentiell unsicher. Am besten nur public-key zulassen und auf ganz sensiblen Servern noch port-knocking einrichten.

Den Standard-Port zu wechseln, halte ich auch für Unfug.

Ich erlaube keine Passwörter für meinen ssh-Zugang und benutzte Schlüssel für ssh. Der Root-User ist deaktiviert und zu allem Überfluss läuft auch noch fail2ban.

Trotzdem habe ich kürzlich den Port umgelegt und seitdem sind meine Logs viel übersichtlicher :-).