Login


 
Newsletter
Werbung
So, 24. August 2003, 00:00

Konfiguration der Secure Shell an einem Beispiel

Allgemeines

ssh ist ein Ersatz für rlogin/rsh und telnet, der starke Verschlüsselung mit RSA und DES bereitstellt. Die Schlüssellänge für RSA ist in der Voreinstellung 768 bit für den privaten und 1024 bit für den öffentlichen Schlüssel.

Es gibt zwei Hauptversionen von ssh: Version 1 (aktuell 1.2.27) und Version 2 (aktuell 2.0.13). Das Problem mit Version 2 ist, daß sie weniger frei ist als Version 1. Genauer gesagt, sie ist frei für nicht-kommerzielle Nutzung. Jede berufliche Nutzung fällt unter kommerzielle Nutzung, was in Version 1 noch nicht der Fall war. Daher verwende ich Version 1 und kann keine Aussagen über die Konfiguration von Version 2 machen.

ssh kann bezogen werden von metalab. Dieser Server hat zahlreiche Mirrors weltweit. Freie Alternativen wie lsh sind in Entwicklung, aber wohl noch nicht einsatzbereit.

Es gibt ein ssh-FAQ von Thomas König.

Installation

Für die meisten Distributionen dürfte ein ssh-Paket verfügbar sein. Für Red Hat ist dies z.B. auf den Halloween-CDs zu finden. Auf die Installation dieser Pakete gehe ich nicht näher ein.

Hat man den Quellcode, ist das Vorgehen wie bei GNU-Programmen gewohnt:

./configure
make CFLAGS=-O2
make install

Diese Schritte auf allen Hosts wiederholen. Wenn die Hosts sich das Source-Verzeichnis teilen, ist auf den weiteren Hosts nur noch 'make hostinstall' notwendig.

make install generiert den Host-Key, dessen privater Teil in /etc/ssh_host_key gespeichert wird. Der öffentliche Teil kommt nach /etc/ssh_host_key.pub.

Nun ist auf jedem Host, der ssh-Logins zulassen soll, eine Konfigurationsdatei /etc/sshd_config anzulegen und sshd zu starten. Für /etc/sshd_config gibt es viele Optionen, mir genügt jedoch eine Minimalversion, in der die meisten Optionen der Vorgabe entsprechen:

/etc/sshd_config

IdleTimeout 0
RhostsAuthentication no
PasswordAuthentication no
RhostsRSAAuthentication yes
KeyRegenerationInterval 0
PermitRootLogin no
SyslogFacility AUTH

In Kurzfassung bedeutet das, daß sowohl Logins mit Paßwort als auch solche ohne Paßwort, aber nur von bekannten Hosts aus (RhostsRSAAuthentication), zugelassen sind. Normale Logins über unsichere Methoden (Paßwort, .rhosts) sind nicht möglich. Aber Vorsicht! Login mit "rsh" oder "telnet" ist weiterhin möglich, wenn auf dem Server noch rlogind und in.telnetd verfügbar sind. Diese sollten dann in /etc/inetd.conf abgeschaltet werden. Dann inetd neu starten und die Kiste ist sicher ;-)

Der Daemon sshd kann einfach durch Angabe seines Namens, also ohne zusätzliche Argumente, gestartet werden.

/etc/ssh_config

Host *
# ForwardAgent yes
# ForwardX11 yes
 RhostsAuthentication no
 RhostsRSAAuthentication yes
# RSAAuthentication yes
# TISAuthentication no
 PasswordAuthentication no
 FallBackToRsh no
# UseRsh no
# BatchMode no
# StrictHostKeyChecking no
# IdentityFile ~/.ssh/identity
# Port 22
# Cipher idea
# EscapeChar ~

In dieser Datei sind nur die von den Vorgaben abweichenden Optionen aktiviert. Es ist für das eigentliche Login auch eher unbedeutend, da es nur Präferenzen festlegt. Z.B. bedeutet "RhostsRSAAuthentication yes", daß diese Authentikationsmethode von ssh versucht werden soll.

/etc/ssh_known_hosts

grumbeer.hjbaader.home,grumbeer.inka.de 1024 35 14...5690749
mirabell.hjbaader.home 1024 37 15...7346669

Wichtiger ist da schon die Datei ssh_known_hosts, die die öffentlichen Schlüssel der bekannten Hosts enthält. Zwar kann jeder User sein privates known_hosts anlegen, aber es ist komfortabler, die wichtigsten Hosts global zu halten.

Das Tool make_ssh_known_hosts soll den Nameserver fragen und für jeden Host in einer Domain den öffentlichen Schlüssel ermitteln. Bei mir funktioniert das nicht, vielleicht, weil ich den neuen BIND (8.1.1) einsetze.

/etc/ssh_known_hosts sollte natürlich global lesbar sein, sonst macht es wenig Sinn.

Login ohne Paßwort

Ist in Ihrem Home-Verzeichnis auf dem Server eine Datei .rhosts oder .shosts vorhanden, die Ihnen gehört und auch nur von Ihnen zugreifbar ist (Permissions 0600), dann muß nur der Client-Host in der known_hosts-Liste des Servers stehen. Dann wird, wenn obige Konfigurationsdateien verwendet werden, ein Login ohne Paßwort durchgeführt. Sie brauchen nicht einmal einen eigenen Schlüssel dafür. Diese Methode ist analog zum alten .rhosts-Mechanismus, jedoch ist wenigstens die Authentizität des Clients und des Servers gesichert und der Datentransfer ist verschlüsselt.

Login mit Paßwort

Das Paßwort ist notwendig, wenn es keine Datei .rhosts oder .shosts in Ihrem Home-Verzeichnis auf dem Server gibt, oder wenn diese Methode abgeschaltet ist.

Zunächst erzeugen Sie Ihr persönliches Key-Paar:

ssh-keygen

Dies erzeugt ein Unterverzeichnis ~/.ssh, in dem unter anderem die Dateien identity.pub (öffentlicher Schlüssel) und identity (privater Schlüssel) liegen. Der private Schlüssel wird mit dem Paßwort verschlüsselt, nach dem ssh-keygen fragt, zudem ist die Datei für andere User nicht lesbar.

Die Datei identity.pub muß man dann noch nach authorized_keys kopieren. So steht es in der Dokumentation.

Beim Login mit ssh wird das angegebene Paßwort abgefragt.

Kommentare (Insgesamt: 0 || Kommentieren )
Pro-Linux
Pro-Linux @Twitter
Neue Nachrichten
Werbung