Hier fasse ich ein paar Möglichkeiten zusammen, um den Zugriff auf einen Server per SSH sicherer zu machen.
- Root Login per SSH deaktivieren
- Login mit SSH Keys
- Port ändern und einfacher Login
- Problembehebungen
Root Login per SSH deaktivieren
Ein wichtiger Schritt bevor man anfängt seinen Server weiter einzurichten, den Login per SSH für den User Root zu verbieten. Als erstes melden wir uns mit root per ssh bei unserem Server an und dann legen wir einen Nutzer an, den wir in Zukunft für die Anmeldung nutzen:
adduser Nutzername
Code-Sprache: Bash (bash)
Nun werden wir dazu aufgefordert, ein Passwort zu vergeben und dieses zu bestätigen. Die weiteren Abfragen kann man einfach mit [Enter] übergehen. Danach fügen wir den neu erstellten Nutzer der Sudo Gruppe hinzu:
usermod -aG sudo Nutzername
Code-Sprache: Bash (bash)
Jetzt melden wir uns einmal ab und danach mit dem neu erstellten Nutzer wieder an.
Nun editieren wird die Datei /etc/ssh/sshd_config:
sudo nano /etc/ssh/sshd_config
Code-Sprache: Bash (bash)
Dort suchen wir die Zeile
PermitRootLogin yes
Code-Sprache: Bash (bash)
Und ändern diese auf
PermitRootLogin no
Code-Sprache: Bash (bash)
Danach starten wir den Dienst SSH einmal neu
sudo systemctl restart ssh
Code-Sprache: Bash (bash)
SSH Login mit Keys statt mit Passwort
Eine passwortlose Anmeldung erhöht die Sicherheit und den Komfort beim Zugriff auf einem entfernten Server. Statt einem Passwort, welches erraten oder abgefangen werden kann, verwenden wir ein Schlüsselpaar zur Authentifizierung.
Ein Schlüsselpaar besteht aus zwei Teilen. Ein privater Schlüssel, der auf dem Computer bleibt und ein öffentlicher Schlüssel, der auf den Server kopiert wird. Wir erstellen das Schlüsselpaar mit
ssh-keygen -t ed25519 -C "ihre_email@example.com"
Code-Sprache: Bash (bash)
Die Mailadresse wird als Kommentar hinzugefügt und dient zur leichteren Identifizierung und hat keine technische Funktion.
Wir werden gefragt, wo der Schlüssel gespeichert werden soll. Der Standardpfad (~/.ssh/id_ed25519) ist in der Regel die beste Wahl. Drücken Sie einfach die Enter-Taste.
Anschließend können wir eine Passphrase (ein Passwort für den Schlüssel) festlegen. Dies bietet eine zusätzliche Sicherheitsebene. Wenn wir eine Passphrase festlegen, müssen wir diese bei der ersten Verwendung des Schlüssels in einer Sitzung eingeben. Für eine vollständig passwortlose Anmeldung können wir das Feld leer lassen, indem wir die Enter-Taste drücken.
Mit ssh-copy-id können wir nun den öffentlichen Schlüssel auf den Server kopieren. Das Tool kopiert den Schlüssel auf den Server und setzt automatisch die richtigen Dateiberechtigungen. Vergesst nicht, den Benutzernamen und die IP Adresse oder die Domain anzugeben.
ssh-copy-id benutzer@server_ip_oder_domain
Code-Sprache: Bash (bash)
Hier werden wir nun ein letztes Mal nach dem Passwort gefragt und danach ist der Schlüssel auf dem Server hinterlegt unter ~/.ssh/authorized_keys .
Jetzt melden wir uns ab und gleich darauf mit
ssh benutzer@ip Adresse / Domain
Code-Sprache: Bash (bash)
wieder an und es sollte keine Passwortabfrage mehr kommen, außer wenn man Befehle mit sudo ausführen muss, aber dies sollte man bei einem öffentlichen Server auch so belassen.
Wenn dies alles geklappt hat, deaktivieren wir zum Schluss noch die Authentifizierung mit Passwort. Dazu öffnen wir die Datei /etc/ssh/sshd_config und ändern die Zeile PasswordAuthentication von yes auf no. Danach starten wir den Dienst SSH neu.
sudo systemctl restart ssh
Code-Sprache: Bash (bash)
Wichtig ist, dass wir uns zuerst absichern, dass die Key Anmeldung auch funktioniert, ansonsten sperren wir uns vom Server aus.
Port ändern und den Login-Befehl vereinfachen
Wenn man die Möglichkeit hat, von den Standardeinstellungen abzuweichen, sollte man sich immer die Mühen machen. Gerade bei meinem Mailserver habe ich festgestellt, wie die Angriffe auf bestimmte Ports abnehmen, wenn man vom Standard abweicht. Natürlich ist man was einen Mailserver betrifft an bestimmte Ports gebunden, aber den Port für den SSH Zugriff können wir ändern und dies werden wir nun unter anderem tun.
Als erstes öffnen wir die sshd_config.
sudo nano /etc/ssh/sshd_config
Code-Sprache: Bash (bash)
Dort suchen wir nun nach der der Zeile mit der Portangabe. Unter Umständen kann diese auch mit # auskommentiert sein. Hier entfernen wir die Kommentierung und geben unseren gewünschten Port ein.
Port 12345
Code-Sprache: Bash (bash)
Theoretisch können wir Nummern von 0-65535 nutzen. Um nicht mit anderen Diensten in die Quere zu kommen, entscheide ich mich immer für Ports zwischen 1024 und 49151.
Danach starten wir einmal den Dienst SSH neu.
sudo systemctl restart ssh
Code-Sprache: Bash (bash)
Nun können wir uns mit Angabe des geänderten Ports anmelden.
ssh -p 12345 benutzer@ihre_server_ip
Code-Sprache: Bash (bash)
Zu Hause bin ich nur noch mit Linux unterwegs und um mir die Login-Prozedur zu vereinfachen habe ich eine config erstellt.
nano ~/.ssh/config
Code-Sprache: Bash (bash)
Hier können wir nun folgenden Inhalt einfügen:
Host meinserver
HostName beispieldomain.de
User benutzername
IdentityFile ~/.ssh/id_ed25519
Port 12345
Code-Sprache: Bash (bash)
Hier ändern wir den Host auf den gewünschten Namen den wir frei vergeben können, unsere Domain oder IP Adresse, den Benutzernamen den wir auf dem Server eingerichtet haben, den privaten Schlüssel für den Key-Login und den geänderten SSH Port.
Nun können wir uns ganz einfach mit „ssh meinserver “ einloggen.
Problembehebungen
Bei manchen Systemen kann es vorkommen, dass zusätzliche Konfigurationen unter zum Beispiel /etc/ssh/sshd_config.d/custom.conf oder so ähnlich vorhanden sind. Wenn in einer der Dateien in diesem Verzeichnis der root Login erlaubt wird oder auch die Anmeldung mit Passwort statt mit Keys, dann werden die Einstellungen in der /etc/ssh/sshd_config überschrieben. Entsprechende Zeilen lassen sich einfach mit # auskommentieren:
# PermitRootLogin yes
Code-Sprache: Bash (bash)
Schreibe einen Kommentar