Auf frisch eingerichtete Root-Servern kann man sich in der Regeln per SSH verbinden, indem man Benutzername und Passwort eingibt. Diese Methode ist nicht empfehlenswert, da Angreifer das Passwort z.B. per Brute Force Attacke herausfinden und sich dann Zugriff zum Server verschaffen können. Sicherer ist es die SSH-Verbindung zum Root-Server mit Hilfe asymetrischer Keys (publickey Authentifizierung) durchzuführen.
Wie das funktioniert, beschreibe ich in diesem Artikel.
Zunächst erzeuge ich auf dem Client ein Schlüsselpaar:
chef@chefrechner:~$ ssh-keygen -b 2048 -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/chef/.ssh/id_rsa):
Hier wird das Schlüsselpaar erzeugt und im angegebenen Verzeichnis gespeichert.
Enter passphrase (empty for no passphrase):
Verzichtet man hier auf die Passphrase, kann man die SSH-Verbindung herstellen ohne irgendwo Passwörter zu verwenden. Allerdings können sich Angreifer ohne weitere Hindernisse Zugang zum Rechner verschaffen, wenn sie den Key z.B. stehlen.
Your identification has been saved in /home/chef/.ssh/id_rsa.
Your public key has been saved in /home/chef/.ssh/id_rsa.pub.
The key fingerprint is:
5b:77:fc:c7:23:46:bc:ff:43:a8:57:83:7a:a5:11:91 chef@chefrechner
chef@chefrechner:~$
Die Datei id_rsa.pub wird nun auf den Zielrechner kopiert, und zwar am besten in das Verzeichnis /home/benutzername/.ssh. Existiert das Verzeichnis .ssh nicht, muss es natürlich noch angelegt werden.
Nun füge ich den Key zur Datei authorized_keys hinzu.
cat id_rsa.pub >> authorized_keys
Da ich hier auf mein erstes Problem hatte, erkläre ich diesen Schritt etwas genauer. Mit dem Befehl wird der Inhalt von id_rsa.pup an den Inhalt der Datei authorized_keys angehängt. Das ist wichtig, weil man sich ja evtl. von mehreren Rechnern aus anmelden möchte und dann auf jedem Rechner eine id_rsa.pub erzeugen und diese in die Datei authorized_keys schreiben muss. Ist die Datei authorized_keys noch nicht vorhanden, muss sie natürlich erst erzeugt werden, bevor man etwas reinschreiben kann
Nun ändere ich noch die Zugriffsrechte für authorized_keys und lösche id_rsa.pub.
chef@server:~/.ssh$ chmod 600 authorized_keys
chef@server:~/.ssh$ rm id_rsa.pub
Nun muss noch der Deamon konfiguriert werden. In der Datei /etc/ssh/sshd_config sollten folgende Angaben stehen:
PermitRootLogin yes
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
Die Zeilen stehen wahrscheinlich alle schon drin, bei mir war nur die letzte auskommentiert.
Anschließend stelle ich eine SSH-Verbindung zum Server her und sollte nun nicht mehr nach einem Passwort gefragt werden. Falls es Pobleme gibt, könnte ein Neustart des SSH-Deamons nach den Änderungen in der Config helfen, bei mir ging es aber auch ohne.
Am Ende führe ich noch zwei Maßnahmen zur Absicherung des Servers durch (in der Datei /etc/ssh/sshd_config):
1. Den SSH Zugang per Benutzername und Passwort komplett ausschalten
PasswordAuthentication no
#UsePAM yes
2. Root wird der SSH Zugriff komplett verboten:
PermitRootLogin no
Um mit Root Rechten zu arbeiten, loggt man sich als normaler User ein und verschafft sie sich mit “su”.
Quelle: Einrichten von public keys mit ssh