Moin moin,
neulich ist mir mal wieder aufgefallen – man es wollen aber verdammt viele Linux-OnlineServer-Besitzer einen Brute-Force-Angriff auf ihre SSH-Dienste…so schafft man Abhilfe:
SSH – Zertifikatsauthentifizierung (Anmeldung ohne Passwort)
Durchgeführt natürlich auf meinem lieben CentOS, jedoch absolut Plattform übergreifend können die SSH-Tools für die Zertifikats-Erstellung verwendet werden.
Was tun wir hier eigentlich?
Das Bearbeiten der SSHD-Konfiguration zur Aktivierung der Zertifikatsauthentifizierung,
das Generieren von Zertifikaten für Benutzer und deren Bereitstellung.
In einem extra Artikel der hier verlinkt wird dann das Verwenden dieses in PuTTy…
Fangen wir mal mit dem Einfachsten an: Wie erstelle ich das Zertifikat?
su <Benutzer>
ssh-keygen -t rsa
Dann den Pfad angegeben in dem die Schlüssel erstellt werden und ggf. eine Passphrase zur automatischen Verschlüsselung des Zertifikats eingegeben und tada – der neue private/öffentliche Schlüssel liegen per Default unter:
~/.ssh/id_rsa – privater Schlüssel
~/.ssh/id_rsa.pub – öffenlicher Schlüssel
Der private Schlüssel wird später für den Client verwendet, der öffentliche Schlüssel wird auf dem Server für das Profil hinterlegt:
cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
Den privaten Schlüssel würde ich dann per SCP/SFTP herunterladen für die Verwendung in PuTTy.
Und wie schalte ich diese Funktionalität im SSH-Deamon frei?
Hierfür öffnen wir die SSHD-Konfigurationsdatei, per Default:
nano /etc/ssh/sshd_config
Folgende Stellen in der Konfiguration sollten angepasst werden:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
#ehemals ~/.ssh/authorized_keys – ist aber das Selbe
#AuthorizedKeysCommand none
#AuthorizedKeysCommandRunAs nobody
Weitere sinnvolle Einstellungen wären:
Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
Protocol 2
PermitRootLogin no
PasswordAuthentication no
#bitte erst Aktivieren wenn Zertifikat heruntergeladen
#bitte erst Aktivieren wenn Zertifikat heruntergeladen
WICHTIG: hierzu muss aber ein alternativer Benutzer zu root angelegt sein der für SSH verwendet werden kann!!!
Kommando für auf die Schnelle:
useradd -s /bin/bash -m -d /home/<Benutzer> <Benutzer>
passwd <Benutzer>
Die Verwendung von PuTTy ist dann hier zu finden.
Eigentlich ganz einfach, wenn man weis was man tut. ;)
Neustart des SSH-Dienstes:
/etc/init.d/sshd restart