Server Sicherheit SSH

Server Sicherheit SSH

SSH Konfigurieren

Da der Server nun einen Webserver besitzt, eine Firewall installiert hat und mit fail2ban die Logins/Zugriffe abgesichert sind, sollten wir noch SSH absichern.

Damit wir uns nicht immer als Hauptbenutzer root anmelden, legen wir am besten einen neuen Benutzer an. useradd -m Benutzer, dem User muss noch ein Passwort gegeben werden. passwd Benutzer

Jetzt können wir über SSH/Putty prüfen ob wir uns mit dem Benutzer einloggen können. Über den Befehl su, kann sich jeder Benutzer zum Hauptnutzer/root machen.

Wenn dies soweit klappt können wir in der Datei /etc/ssh/sshd_config PermitRootLogin yes auf no setzen. Damit darf sich der root Benutzer nicht mehr direkt einloggen. Zudem können wir die LoginGraceTime auf 30 setzen. Damit die Verbindung bis zum Login nicht ewig geöffnet bleibt.

Als Zusatz kann in der Datei auch noch AllowUsers Benutzer eingetragen werden. Dann darf sich nur der Benutzer einloggen und kein weiterer anderer.

Um nun ganz sicher zu gehen, sollten wir einen Key für SSH erstellen, ein sogenanntes Schlüsselpaar. Ein Öffentlicher Schlüssel auf dem Server und ein Privater Schlüssel auf dem PC mit dem wir uns Verbinden. Für Putty gibt es einen Keygenerator. Diesen Downloaden und öffnen, um ganz sicher zu gehen, sollten wir unten SSH2-RSA anklicken und 4096 bei den Bits eintragen.
Nun klickt man auf Generate und fährt irgendwie mit der Maus über den grauen Kasten, damit ein Schlüssel erzeugt wird. Nun steht oben im Kasten etwas mit ssh-rsa, diese Zeile müsst ihr in die Datei authorized_keys kopieren. Falls nicht vorhanden, als Benutzer einloggen mkdir .ssh, cd .ssh, nano authorized_keys. Dann die komplette Zeile einfügen.
Noch die richtigen Rechte für den Ordner und Dateien setzen chmod 0700 ~/.ssh und chmod 0600 ~/.ssh/authorized_keys.

Danach kann man den private Key aus dem Puttygen abspeichern. Wer auf ganz sicher gehen will, setzt noch eine Key passphrase, also ein Kennwort für den Schlüssel. Die .ppk kann nun bei Putty unter -SSH Auth eingetragen oder gesucht und hinterlegt werden.

Jetzt können wir testen ob wir uns als Benutzer mit dem Schlüssel und ggf. Kennwort für den Schlüssel auf dem Server anmelden können.

Wer zuhause auf dem Desktop auch Linux einsetzt, kann ein paar andere Befehle ausführen. In der Console als Benutzer sind dann auszuführen:
ssh-keygen -b 4096 – auch hier kann ein Kennwort für den Schlüssel hinterlegt werden.
Danach wird mit dem Befehl: ssh-copy-id -i .ssh/key_rsa.pub Benutzer@example.com der Schlüssel auf den Server kopiert.
Auch hier kann jetzt mit dem Befehl: ssh -i .ssh/key_rsa Benutzer@example.com getestet werden ob man sich mit dem Schlüssel auf dem Server einloggen kann.
Wenn das geklappt hat, könnten wir im SSH /etc/ssh/sshd_config noch Einstellungen vornehmen:

UsePAM no
AuthenticationMethods publickey

Dann kann sich kein Benutzer mehr mit Kennwort anmelden, sondern es Funktioniert nur noch über den Schlüssel.

Meine sshd_config sieht ungefähr so aus:

Port 22
Protocol 2
UsePrivilegeSeparation yes
SyslogFacility AUTH
LogLevel VERBOSE
LoginGraceTime 30
PermitRootLogin no
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
PermitEmptyPasswords no
ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no
AllowUsers Benutzer
AuthenticationMethods publickey

das sollte reichen, nun am besten noch ein Reboot, denn der tut immer gut ?