OsunSeyi
Hacker
Hi
habe zum eigenen Gebrauch einen Text zum Thema SSH-Konfiguration
zusammenkopiert (siehe unten).
Die Quellen sind mit angeführt.
Ich weiß nicht, ob das in der Form erlaubt ist, falls ja, möchte ich das Ganze
auch Anderen zur Verfügung stellen...
Gruß, tom
PS
1) Habe keine Möglichkeit gefunden, eine Datei mitzuschicken.
2) um Kritik/Anregung wird gebeten
habe zum eigenen Gebrauch einen Text zum Thema SSH-Konfiguration
zusammenkopiert (siehe unten).
Die Quellen sind mit angeführt.
Ich weiß nicht, ob das in der Form erlaubt ist, falls ja, möchte ich das Ganze
auch Anderen zur Verfügung stellen...
Gruß, tom
PS
1) Habe keine Möglichkeit gefunden, eine Datei mitzuschicken.
2) um Kritik/Anregung wird gebeten
Code:
<html><head><title>SSH-Konfiguration</title><meta http-equiv="content-type" content="text/html; charset=iso8859-1"></head><body bgcolor="lightyellow"><pre>
<a name="anfang"><h2>SSH KONFIGURATION</h2></a><b>
<a href="#key">- Schlüsselerzeugung</a>
<a href="#dat">- Konfigurationsdateien</a>
<a href="#config">- Server-Konfiguration</a>
<a href="#trouble">- Troubleshooting</a>
<a href="#quellen">- Quellen</a></b>
<HR>
<b>Wie funktioniert SSH?</b>
1. Auf dem Server-Rechner wird ein Host-Key-Paar (RSA) generiert.
- ein Verschlüsselungscode (Public Key)
- ein Entschlüsselungscode (Private Key).
Der laufende Server-Prozeß erzeugt zusätzlich ein Server-Key-Paar,
das nur im Memory gehalten und periodisch ersetzt wird.
2. Der lokale SSH-Client wendet sich an den SSH-Server auf dem Remote-Rechner,
um eine Verbindung aufzunehmen.
Der Server schickt dem Client daraufhin sowohl seinen 'Public Key' als auch den
periodisch erzeugten öffentlichen Serverschlüssel.
3. Ist der Key noch nicht bekannt, fragt der Client, ob die Verbindung aufgebaut werden
soll, und trägt den Server-Public-Key in die individuelle Liste des Benutzers ein.
Der SSH-Client kann nun den Server anhand der Liste erkennen.
4. Falls dies der Fall ist, verschlüsselt der Client eine von ihm erzeugte Zufallszahl aus
beiden übergebenen öffentlichen Schlüsseln (Hostkey und Serverkey).
Diese Zufallszahl dient im weiteren Verlauf als aktueller Sitzungsschlüssel.
5. Nun erst übergibt der Client Userid und Passwort.
6. Zum Schluß startet der Server eine Login-Shell bzw. führt das gewünschte Kommando aus.
Bei der Authentifizierung des Clients werden der Reihe nach verschiedene Verfahren ausprobiert.
Dabei wird der Client als berechtigt betrachtet, sobald das erste Verfahren folgender Liste
erfolgreich war:
1. Autentifikation entsprechend den r-Kommandos;
Unsicher und per Default deaktiviert.
2. Wie Punkt1; zusätzliche RSA-Authentifikation.
3. RSA-Authentifikation; dazu ist auf dem Remote-Rechner ein Eintrag in
~/.ssh/authorized_keys erforderlich.
4. Durch Paßwort-Abfrage.
<HR>
<a name="dat"><b>Dateien Serverseitig:</b></a>
<a href="#anfang"><b>⇑</b></a>
/etc/ssh/sshd_config
Der SSHD wird über diese Datei konfiguriert.
Meist sind fast alle Zeilen auskommentiert,
dies sollte die praktischen Bedürfnisse auch abdecken.
<a href="#config">Konfiguration</a>
/etc/hosts.allow & deny
In aktuellen Implementierungen des Ssh-Daemons ist die Auswertung der Dateien
/etc/hosts.allow und /etc/hosts.deny zumeist fest verdrahtet:
tux> strings /usr/sbin/sshd | egrep 'hosts.allow|hosts.deny'
hosts_allow_table
hosts_deny_table
/etc/hosts.allow
/etc/hosts.deny
# Zugang zur Secure Shell (hosts.allow)
sshd : LOCAL
# Alles pauschal verbieten (hosts.deny)
ALL : ALL
/etc/nologin
Wenn sie existiert, verweigert sshd jeden Einlogvorgang außer dem von root
(sofern root-Eingänge in der Konfigurationsdatei erlaubt waren).
Der Inhalt der Datei wird dem Client übermittelt.
<b>Dateien Clientseitig:</b>
/etc/ssh/ssh_known_hosts & ~/.ssh/known_hosts
enthalten die Public-Keys aller bekannten Rechner.
Die globale Datei wird vom Systemverwalter administriert,
die userbezogene wird automatisch angelegt und erweitert.
enthält die folgenden Felder:
Hostnamen Bits Exponent Modulus Kommentar
Hostnamen ist eine durch Kommas getrennte Liste von Namen
(* und ? dürfen benutzt werden).
Wird mit dem vollständigen Hostnamen des Rechners verglichen, der sich anmelden will.
Bits, Exponent und Modulus werden direkt den Host-Schlüsseln entnommen,
die in den Dateien /etc/ssh/ssh_host_*_key.pub gespeichert sind.
Das optionale Kommentarfeld wird nicht ausgewertet.
<HR>
<a name="key"><b>Schlüssel:</b></a>
<a href="#anfang"><b>⇑</b></a>
Der Befehl ssh-keygen erzeugt und verwaltet die RSA und DSA Schlüssel für ssh Verbindungen.
Normaluser können sich damit einen Schlüssel erzeugen, der Systemverwalter kann auch den
Host-Schlüssel damit anlegen.
Diese Schlüssel sind nicht zwingend für den Gebrauch von ssh erforderlich, bestimmte Server
verlangen ihn aber.
Es stehen zwei verschiedene Schlüsseltypen zur Verfügung, rsa und dsa.
Mit dem Befehl:
> ssh-keygen -t Typ
wird ein neues Schlüsselpaar angelegt.
Es ist möglich, über diese Schlüsselpaare eine Authentifizierung zu steuern (kein Passwort).
Anmeldung über das Public-Key-Verfahren:
> ssh-keygen -t dsa
Generating public/private dsa key pair.
... in ~/.ssh/id_dsa.pub
kopieren auf Server:
> ssh-copy-id -i /home/tux/.ssh/id_dsa.pub 192.168.0.175
password:
...
Passwort-Authentifikation ausschalten:
/etc/ssh/sshd_config:
# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no
...
/etc/ssh/sshd_config:
- PermitRootLogin yes/no
> sudo /etc/init.d/ssh restart
<HR>
<a name="config"><b>Die Datei /etc/ssh/sshd_config :</b></a>
<a href="#anfang"><b>⇑</b></a>
BatchMode yes/no
Die Abfrage nach dem Passwort oder der Passphrase wird unterbunden,
somit lassen sich z.B. Kommandos in Shellscripts ausführen.
Compression yes/no
Schaltet die Komprimierung der zu übertragenden Daten ein oder aus.
FallBackToRsh yes/no
Scheitert der Verbindungsaufbau zum Server (zB. weil dieser nicht aktiv ist),
kann eine Verbindung über rsh versucht werden. Default: 'no'
HostKey Dateiname
Spezifiziert die Datei, in der der Host-Schlüssel des Servers abgelegt ist.
Normalerweise ist das die Datei /etc/ssh/ssh_host_key.
Diese Datei darf nicht für alle Welt lesbar sein,
ansonsten verweigert sich sshd die Datei zu verwenden!
IgnoreRhosts yes/no
Sollen die Dateien ~/.rhosts und ~/.shosts ignoriert werden?
KeyRegenerationInterval Zeit
Die Anzahl der Sekunden, nach denen der Server-Schlüssel neu erstellt werden soll.
Standardmäßig sollte hier 3600 (eine Stunde) stehen.
Steht hier eine 0, so wird der Schlüssel niemals neu erstellt.
PermitRootLogin yes/no
Erlaubt, daß sich der Systemverwalter über ssh einloggen kann.
PasswordAuthentication yes/no
Soll eine Abfrage des Passwortes durchgeführt werden?
Steht der Wert auf »no«, ist ein Anmelden auf einem entfernten Rechner nur möglich,
wenn der eigene öffentliche Schlüssel dort bekannt ist.
Port n
Die Angabe auf welchem Port sshd laufen soll. Normalerweise ist es Port 22.
RhostsAuthentication yes/no
Ob bei der Authentifizierung die Dateien rhosts und /etc/hosts.equiv ausreichen,
soll auf »no« bleiben.
RhostsRSAAuthentication yes/no
Erlaubt die Benutzung von rhosts und /etc/hosts.equiv,
allerdings nur wenn die RSA-HOST-Authentifizierung erfolgreich war.
Default »yes«.
RSAAuthentication yes/no
Authentifizierung mittels RSA-Verschlüsselung.
Steht der Wert auf »yes«, sollte die Datei »~/.ssh/identity«
oder ein Authentifizierungsagent existieren.
StrictHostKeyChecking yes/no
Ein »yes« verschärft die Sicherheit, indem das Anmelden nur auf Rechnern gestattet wird,
die in den Datenbanken »/etc/known_hosts« bzw. »~/.ssh/known_hosts« enthalten sind.
Steht hier »no« werden neu besuchte Rechner automatisch der privaten Datei hinzugefügt.
<HR>
<a name="trouble"><b>Troubleshooting:</b></a>
<a href="#anfang"><b>⇑</b></a>
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
Schonmal auf den Server (mit gleicher IP) zugegriffen ?
(Schlüssel hat sich geändert)
> ssh-keygen -R hostname
/home/tux/.ssh/known_hosts updated.
Original contents retained as /home/tux/.ssh/known_hosts.old
Falls es nicht geht:
Inhalt von ~/.ssh/known_hosts komplett löschen oder entsprechend editieren!
Wenn weiter unten die Zeile kommt:
'DSA host key for 141.44.198.20 has changed and you have requested strict checking.'
versuche es mit Änderung in:
/etc/ssh/sshd_config
StrictHostKeyChecking: yes/no/ask (def: ask)
<b>Immer noch Probleme?</b>
* Ist der ssh-Zugriff überhaupt möglich?
Ein beliebtes Problem ist '... key_exchange ... connection closed by foreign host'.
Das liegt dann meist daran, daß die Reverse-Auflösung der eigenen IP-Adresse nicht
mit dem Namen für den eigenen Host übereinstimmt.
Auf der anderen Seite in /etc/hosts.deny die ALL: PARANOID Zeile auskommentieren.
Oder DNS in Ordnung bringen!
* Passwort wird verlangt.
Meistens ein Problem der Permissions auf der eigenen und/oder der anderen Seite:
Das Verzeichnis .ssh/ und die die Datei .ssh/authorized_keys darf nur für den Eigentümer,
der auch der "angepeilte" Nutzer sein muß, schreibbar sein!
ssh -v ... hilft, diese Art von Problemen zu diagnostizieren.
* Die SSH2 verlangt die Keys in ~/.ssh/authorized_keys2.
Die SSH2 auf Debian/GNU-Linux ist mögl. gepatcht und sucht die wie gehabt in:
~/.ssh/authorized_keys, U.u. muß aber trotzdem auf SuSE-Systemen eben diese 2 angehängt werden.
<HR>
<a href="#anfang"><b>⇑</b> nach oben</a>
<a name="quellen"><b>Quellen:</b></a>
<a href="http://www.linux-praxis.de/lpic1/lpi102/1.113.7.html">Einrichten von Secure Shell (OpenSSH) - LPI-Study Guides</a>
<a href="http://de.linwiki.org/index.php/Linuxfibel_-_Netzwerk_Server_-_Telnet_%26_Co.">Thomas Ermer / Michael Meyer: Linuxfibel - Netzwerk Server - Telnet & Co.</a>
<a href="http://www.schlittermann.de/ssh">Heiko Schlittermann: SSH ohne Passwort -- eine kurze Anleitung</a>
<a href="http://www.lrz-muenchen.de/services/security/ssh/ssh-4.html#publish4.1.0.0.0.0">Ernst Bötsch: Secure Shell (SSH) für Benutzer</a>
<a href="http://www.jfranken.de/homepages/johannes/vortraege/ssh1_inhalt.de.html">Johannes Franken: OpenSSH Grundlagen</a>
</body></html>