Inhaltsverzeichnis
- Einleitung
- Feedback
- Danksagungen
- Testumgebungen
- root Benutzer eingrenzen
- SSH Schlüsselpaar erstellen
- Schlüsselpaar unter Linux erstellen
- Schlüsselpaar unter Windows erstellen
- Konfiguration des SSH Daemons
1. Einleitung
Der Dienst ssh kann ein hohes Sicherheitsrisiko für ein Unix / Linux System darstellen, wenn dieser nicht richtig konfiguriert ist. Eingrenzen des Zugangs für den Benutzer root und die und Authentifizierung über öffentliche Schlüssel (Key-Auth) erhöhen die Sicherheit wesentlich.
In eigener Sache:
Für dieses HowTo übernimmt der Autor keine Haftung. Erstellt vorher ein Backup Eurer Konfiguration.
2. Feedback
Ein Feedback zu diesem HowTo ist wünschenswert, ebenso freue ich mich �ber Verbesserungsvorschläge.
Anregungen, Verbesserungsvorschläge oder Kritiken bitte an: info@benjamin-butschko.de
3. Danksagungen
Mein Dank geht an:
Tester
Sven Blaufuss
- Test unter
- Windows XP
- Debian GNU/Linux 3.1r1
- Debian GNU/Linux 4.0
- Debian GNU/Linux 5.0 (Lenny)
4. Testumgebungen
Getestet wurde dieses HOWTO auf folgenden Systemen:
- Debian GNU/Linux 3.1r1 (sarge) - Kernel 2.6.8-2-386
- Debian GNU/Linux 3.1r2 (sarge) - Kernel 2.6.8-2-386
- Debian GNU/Linux testing (etch) - Kernel 2.6.15-1-K7
- Debian GNU/Linux testing (etch) - Kernel 2.6.18.1
- Debian GNU/Linux stable (etch) - Kernel 2.6.21
- Debian GNU/Linux testing (lenny) - Kernel 2.6.28
- BusyBox v1.00-pre3 Linux - Kernel 2.4.17_mvl21-malta-mips_fp_le (Fritz!Box)
- Linux dm7020 2.6.9 #1 Thu Sep 22 21:28:02 CEST 2005 ppc unknown (Dreambox)
5. root Benutzer eingrenzen
Als erstes sollte man den Benutzer root den direkten Login per SSH verbieten. So wird der Missbrauch durch nicht autorisierte Personen über dem Versuch sich als root anzumelden vermieden. Dazu öffnen wir mit einem Texteditor als root die Datei /etc/ssh/sshd_config und ändern folgendes ab:
PermitRootLogin yes ersetzen wir durch
#PermitRootLogin yes
PermitRootLogin no
Anschließend speichern wir die Datei und wir brauchen nur noch den SSH-Deamon neu starten.
Nun kann man kann sich nicht mehr direkt als Benutzer root einloggen:
/etc/init.d/ssh restart
Achtung:
Der ssh Daemon erhält bestehende Verbindungen auch dann aufrecht, wenn dieser neu gestartet wurde. Nachdem wir die Konfiguration geändert haben, sollten wir zur Sicherheit das alte Terminalfenster geöffnet lassen, während wir uns nach dem Neustart des ssh-Daemons wieder einloggen. Auf diese Weise können wir Loginfehler von z.B. Schreibfehlern oder falschen Parametern in der Konfiguration schneller fixen. Sollte der Login nach einer änderung und Neustart des ssh-Daemons erfolgreich sein, können wir das alte Terminalfenster schließen.
6. SSH Schlüsselpaar erstellen
Damit man sich später ohne Kennwort per SSH Key-Auth einloggen kann, muss man vorher für den jeweiligen Benutzer ein Schlüsselpaar erstellen. Das Schlüsselpaar wird auf den jeweiligen Rechner, welcher per SSH auf den Zielrechner zugreifen soll, erstellt.
- öffentlicher Schlüssel (liegt auf den entfernten Rechner, auf dem man per SSH zugreifen möchte)
- privater Schlüssel (liegt auf den privaten Rechner).
7. Schlüsselpaar unter Linux erstellen
Zunächst loggen wir uns als normaler Benutzer in unser Linux-System. Nun geben wir an der Konsole folgenden Befehl ein:
ssh-keygen -d
Jetzt wird das Schlüsselpaar erzeugt "Generating public/private dsa key pair". Anschließend geben wir noch den Namen und den Ort für die Keyfiles an (optional) "Enter file in which to save the key (/home/USERNAME/.ssh/id_dsa)". Man sollte zusätzlich noch den privaten Schlüssel mit einem Kennwort schützen. Die Abfrage erfolgt direkt im Anschluß nach der Angabe des Speicherortes "Enter passphrase (empty for no passphrase)". Es wurden nun im Unterverzeichnis .ssh im Homeverzeichnis des Users die Dateien erstellt: id_dsa und id_dsa.pub. Die Datei id_dsa ist der private Key und sollte sicher aufbewahrt werden. Der öffentliche Schlüssel für unser Rechner befindet sich in der Datei id_dsa.pub. Nun kopieren wir den Schlüssel in eine neue Datei namens authorized_keys.
touch $HOME/.ssh/authorized_keys && cat $HOME/.ssh/id_dsa.pub >> $HOME/.ssh/authorized_keys
Die Arbeiten sind nun fast abgeschlossen. Baut nun eine ssh Verbindung unter Verwendung des privaten Keys auf:
ssh IP_ODER_SERVENAME_DES_ENTFERNEN_SYSTEMS -i $HOME/USERNAME/.ssh/id_dsa
Wenn die Verbindung erfolgreich war, erfolgt dann die Anpassung der Konfiguration des SSHd auf dem System.
8. Schlüsselpaar unter Windows erstellen
Am einfachsten geht die Erstellung eines Schlüsselpaares mit den Keygenerator (PuTTYgen), den man ebenfalls auf der Downloadseite von PuTTY findet. Starte das Tool PuTTYgen und wähle unter "Parameters" den Schlüsseltyp SSH2 DSA aus. Klicke nun auf Generate und bewege die Maus in der kleinen grauen Fläche. Anhand der Mausbewegung generiert das Programm einen zufälligen Schlüssel. Unter Keycomment kann man nun einen Kommentar zu diesem Schlüssel hinzufügen, wie z.B. USER@HOSTNAME. Damit man den privaten Schlüssel durch ein Kennwort schützen kann, sollte man unter Passphrase noch ein Kennwort eintragen. Abschließend speichern wir die beiden Schlüssel an einem beliebigen Ort auf unserem Rechner.
Kopiert den Inhalt im oberen grauen Fenster in die Zwischenablage, wir brauchen den Inhalt für den öffentlichen Key auf unserem Zielsystem.
Man kann auch alternativ den öffentlichen Schlüssel auf das Zielsystem übertragen, und dann wie im Abschnitt Schlüsselpaar unter Linux erstellen verfahren.
Ebenfalls lässt sich ein mit Linux erstellter Schlüssel in den Keygen von PuTTY importieren. Dazu startet PuTTYGen, klickt auf Conversions und dann auf Import key. Jetzt stellen wir mit PuTTY eine Verbindung zum Zielsystem her und loggen uns als user dort ein. Als erstes erstellen wir (falls nicht schon vorhanden), das Verzeichnis .ssh in unserem Heimatverzeichnis und wechseln in das Verzeichnis.
mkdir $HOME/.ssh
&& cd $HOME/.ssh
Nun erstellen wir in diesem Verzeichnis die Datei authorized_keys: touch authorized_keys. Jetzt starten wir einen Texteditor (z.B. vi oder viM oder der interne Editor aus den Midnight Commander mc) und fügen den Inhalt aus der Zwischenablage in die Datei. Dabei muss beachtet werden, das der Schlüssel nur in einer Zeile steht: vi authorized_keys.
Speichert die Datei ab.
Starten wir nun PuTTY erneut und laden uns die gespeicherte Sitzung. Nun wechseln wir im rechts unter Optionen zu Connection -> SSH und wählen unter Preferred SSH Version den Eintrag 2 only aus. Dann gehen wir zu Connection -> SSH -> Auth und wählen unter Private key file for authentication die private Schlüsseldatei aus. Abschließen wechseln wir zurück auf Session und speichern die Sitzung ab. Nun können wir anschließend einen Testlauf zu starten.
PuTTY fordert nun zur Eingabe eines Benutzernamens auf. Wir geben hier nun den Benutzernamen ein, für den wir den öffentlichen Schlüssel erstellt haben. Falls noch ein Kennwort für den privaten Schlüssel eingegeben wurde, muss dies anschließend auch eingegeben werden.
Danach befindet man sich im Heimatverzeichnis auf seinem System.
8. Konfiguration des SSH Daemons
Zum Bearbeiten der Konfiguration loggen wir uns auf unser entferntes System ein werden zum Superuser root: su-. Nun öffnen wir mit einem Texteditor die Datei /etc/ssh/sshd_config.
Folgende Werte werden verändert
# RSAAuthentication yes - default
RSAAuthentication no
von
#AuthorizedKeysFile %h/.ssh/authorized_keys
auf
AuthorizedKeysFile %h/.ssh/authorized_keys
von
#IgnoreUserKnowHosts yes
#ChallengeResponseAuthentication yes
PasswordAuthentication yes
auf
IgnoreUserKnowHosts yes
ChallengeResponseAuthentication no
PasswordAuthentication no
Abschließend speichern wir die Konfiguration ab und starten den SSH-Daemon neu.
Hinweis
Wir lassen die momentane Verbindung noch offen, den falls was bei der Konfiguration nicht geklappt hat, können wir mit der aktuellen Sitzung per SSH weiterarbeiten.
Zum Testen ob alles geklappt hat loggen wir uns mit einer weiteren SSH Sitzung auf unser System mit unserem Benutzer und den dazugehörigen Key ein.
Wenn alles geklappt hat, ist unsere Konfiguration beendet.
Herzlichen Glückwunsch :-)
Zurück