Mit putty und ssh key auf einen sicheren Linux Server zugreifen
Autor: framp
Dieses HOWTO beschreibt, welche Schritte notwendig sind um sicher von einem Windows Rechner per ssh mit putty und nur mit einem ssh key auf einen Linux Server mit SuSE zuzugreifen.
Sämtliche Schritte auf dem Server werden mittels putty mit Konsolbefehlen und keiner graphischen Oberfläche beschrieben. Eine graphische Oberfläche birgt eine Menge Sicherheitsprobleme und aus langer Linuxerfahrung leidgeprüfter Serveradministratoren sollte keine graphische Oberfläche (X, KDE, GNOME) auf einem Server installiert sein. Die konkrete Anleitung geht davon aus, dass keine Passwörter mehr zur Authentifiziereung benutzt werden sondern asymmetrische keys. Diese kann man durch eine Passphrase sichern oder aber auch auf die Passphrase verzichten. Der Vorteil bei keiner Passphrase ist, dass ein Zugriff immer ohne Passworteingabe möglich ist. Der Nachteil ist, dass jeder, der den private key hat oder illegalerweise kopiert unbegrenzten Zugriff hat. Wer also ohne Passwort fahren will muss seine keys absolut sicher verwahren!
Sämtliche Konfigurationsaktionen auf dem Server werden per putty mit einem normalen user und seinem password gemacht. Ein paar Änderungen benötigen auch den user root mit seinem passwort. Erst am Ende nach erfolgreichem Test wird die Passwortauthentifizierung ausgeschaltet. Danach ist ein ssh Zugriff nur noch mit keys möglich und jegliche Anmeldeversuche am Linux Server sind ohne key zum Scheitern verurteilt.
Achtung: Am Ende der Konfiguration kann sich aus Sicherheitsgründen niemand mehr als root per ssh auf den Server anmelden! Dieses ist nur noch dem einen Benutzer der konfiguriert wurde mit seinem Key möglich! Wenn root Zugriff benötigt wird muss sich erst als normaler User anmelden und kann dann mit su - root Rechte bekommen. Sind Zugriffe von weiteren Usern notwendig sind die Steps 1-2 entsprechend zu wiederholen.
Konkret wurde die HOWTO Schritte mit putty 0.58 sowie OpenSSH 4.1p1 mit SuSE 10.0 erstellt. In der StepByStep Anleitung des Einrichtens eines eines ssh Zugriffs mit putty wird das im HOWTO für den user framp auf dem ssh Server obelix eingerichtet. Dieses ist den lokalen Gegebenheiten anzupassen.
Folgende Schritte sind notwendig um sich letzendlich per putty und ssh key auf einen ssh Server anmelden zu koennen:
Inhaltsverzeichnis
- 1 Erzeugen eines privaten und public keys mit putty
- 2 Kopieren des public OpenSSH Keys auf den Server und Aufnahme des keys in der authorized_keys Datei
- 3 Änderung der sshd Konfiguration so dass keys akzeptiert benutzt werden
- 4 Einrichten des putty um mit dem key auf den Server zugreifen zu können und Test des Zugriffs mit key
- 5 Änderung der sshd Konfiguration so dass keine Passwoerter mehr erlaubt sind sondern nur noch mit keys möglich ist
- 6 Hardening des sshd Servers, d.h. Prüfen von wichtigen Parametern auf die richtige sichere Einstellung
- 7 Grundlagen für dieses HOWTO und weiterführende Literatur
Erzeugen eines privaten und public keys mit putty
a) Starten des Programms puttygen auf dem WindowsClient. Dann ssh-2 RSA wählen und number of bits in generated key auf 2048 setzen.
b) Drücken von Generate
c) Save the generated key drücken und sichern des private keys in C:\Program Files\putty als id_rsa_priv.ppk. U.U. sollte man noch eine pass Passphrase aus Sicherheitsgründen eingeben (s.o.).
d) Selektieren des gesamten public keys ('Public key for pasting into OpenSSH authorizedKeys file') und kopieren (CTRL C) ins Clipboard.
e) Öffnen eines Editors (z.B. notepad) und paste (CTRL V) des public keys in den Editor. Sichern der Datei in C:\Program Files\putty als rsa_public.
Kopieren des public OpenSSH Keys auf den Server und Aufnahme des keys in der authorized_keys Datei
a) Öffnen eines Befehlsfensters den linux public key in das home Verzeichnis des users framp kopieren
C:\Program Files\putty>pscp id_rsa_linux framp@obelix:id_rsa
b) Mit folgendem wird ein Befehlsfenster mit putty auf dem Server geöffnet und ein Verzeichnis angelegt (sofern es nicht schon existiert)
C:\Program Files\putty>putty framp@obelix:id_rsa
im Fenster
mkdir .ssh
c) Anhängen des public keys an die existierenden public keys
cat id_rsa.pub >> .ssh/authorized_keys
WICHTIG ! >> benutzen !!! Ansonsten werden schon existierende Authorisierungen gelöscht!
Änderung der sshd Konfiguration so dass keys akzeptiert benutzt werden
a) Im putty Fenster mit
C:\Program Files\putty>pscp root@obelix:/etc/ssh/sshd_config sshd_config
die sshd Konfigurationsdatei downloaden.
b) Editieren der Datei mit einem Windows Editor so dass die folgenden Parameter wie folgt gesetzt sind:
PubkeyAuthentication yes RSAAuthentication no
c) Im putty Fenster mit
C:\Program Files\putty>pscp sshd_config root@obelix:/etc/ssh/sshd_config
die sshd Konfigurationsdatei uploaden.
d) Im Server Befehlsfenster welches in 2.a geöffnet wurde
rcsshd restart
eingeben.
Einrichten des putty um mit dem key auf den Server zugreifen zu können und Test des Zugriffs mit key
a) Starten des Programms putty auf dem WindowsClient.
b) Beim hostname framp@obelix eintragen (userid und Server name oder IP)
c) Zu Connection->SSH->Auth gehen und das Private key file for authentication füllen mit C:\Program Files\putty\id_rsa_priv.ppk.
d) open und erscheint ein Befehlsfenster des Servers. U.U. muss noch die Passphrase eingegeben werden
e) Sichern des putty Profiles
f) Damit ist die ssh Verbindung mit key getestet und es kann die Passwortauthentifizierung ausgeschaltet werden.
Änderung der sshd Konfiguration so dass keine Passwoerter mehr erlaubt sind sondern nur noch mit keys möglich ist
Nach den folgenden Änderungen kann ein Client nur noch mit dem richtigen Key auf den Server zugreifen! Also sicherstellen, dass der vorherige Step problemlos funktioniert und man ohne Passworteingabe auf den Server kommt. Ansonsten kann man sich nicht mehr am Server per ssh anmelden!
Achtung: |
Die folgenden Änderungen im ssh-Zugang in einer offenen Konsole machen, sshd neu starten (Schritt d) und dann mit einer NEUEN putty Konsole testen, ob der Zugriff noch funktioniert. Die alte Konsole ist ja bereits drin und bleibt bestehen. Damit kann man die Änderung bei Bedarf rückgängig machen. |
a) Im putty Fenster mit
C:\Program Files\putty>pscp root@obelix:/etc/sshd/sshd_config sshd_config
die sshd Konfigurationsdatei downloaden.
b) Editieren der Datei mit einem Windows Editor so dass die folgenden Parameter wie folgt gesetzt sind:
PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePam no
c) Im putty Fenster mit
C:\Program Files\putty>pscp sshd_config root@obelix:/etc/sshd/sshd_config
die sshd Konfigurationsdatei uploaden.
d) Im Server Befehlsfenster
rcsshd restart
eingeben.
Hardening des sshd Servers, d.h. Prüfen von wichtigen Parametern auf die richtige sichere Einstellung
Diese Schritte sind eigentlich nicht mehr notwendig da kein Zugriff ohne key mehr möglich ist. Es kann aber immer sein
dass aus verschiedenen Gründen doch wieder auf Passwörter umgestellt wird (PasswordAuthentication yes). root Zugriff per ssh
sollte aus Sicherheitsgründen immer ausgeschaltet sein. Benötigt man root recht kann man als normaler User per su -
root Rechte erhalten oder man setzt sudo ein. Deshalb sollte ein jeder ssh Server auf alle Fälle noch wie folgt gesichert werden:
a) Im putty Fenster mit C:\Program Files\putty>pscp root@obelix:/etc/sshd/sshd_config sshd_config die sshd Konfigurationsdatei downloaden.
b) Editieren der Datei mit einem Windows Editor so dass die folgenden Parameter wie folgt gesetzt sind:
PermitRootLogin no AllowGroups users AllowUsers xxx yyy zzz (xxx, yyy und zzz sind user die per ssh zugreifen duerfen) ClientAliveInterval 15 LoginGraceTime 10 PubkeyAuthentication yes MaxAuthTries 3 MaxStartups 1 PrintLastLog yes KeepAlive no UsePam no
c) Im putty Fenster mit
C:\Program Files\putty>pscp sshd_config root@obelix:/etc/sshd/sshd_config
die sshd Konfigurationsdatei uploaden.
d) Im Server Befehlsfenster
rcsshd restart
eingeben.
Grundlagen für dieses HOWTO und weiterführende Literatur
Beiträge im WiKi:
- Einrichten von public keys mit ssh
- Wie sichere ich meinen ssh Server?
- Den eigenen Server absichern
- Kontrolliertes Ausfuehren von Befehlen als root
Weitere Informationen zu putty und OpenSSH:
Ausführlicher Überblick über ssh und seine Möglichkeiten
- Linux Magazin - OpenSSH aus der Sicht des Admins Blickdicht
- Linux Magazin - OpenSSH aus der Sicht des Admins, Teil 2, Tunnelblick
Des weiteren liefert eine Suche nach ssh im LC Forum diverse weitere Fragen und Antworten zu ssh die hier nicht behandelt wurden. Last but not least lieferte Mit putty und ssh key auf einen sicheren Linux Server zugreifen wesentliche Teile zu diesem HOWTO.