Mit putty und ssh key auf einen sicheren Linux Server zugreifen

Aus Linupedia
Wechseln zu: Navigation, Suche

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:

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:

Weitere Informationen zu putty und OpenSSH:

Ausführlicher Überblick über ssh und seine Möglichkeiten

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.


zurück zum Sicherheitsdienst