- Login per ssh
- scp: Sicheres Kopieren über das Netz
- Der SSH-Server
- Authentifizierung per Schlüssel
- Tunnelbau: Andere Protokolle sichern
Der Client ssh bietet die Möglichkeit, eine Sitzung auf einer fernen Maschine auszuführen. Der Client scp kann Dateien von einem Rechner zum anderen kopieren.
Login per ssh
Das Kommando ssh erwartet als Parameter den Namen oder die IP-Adresse des Zielrechners. Des weiteren können Sie mit einem @-Zeichen getrennt, den gewünschten Benutzer auf dem Zielrechner angeben. Geben Sie keinen Benutzernamen vor dem @ ein, wird der gleiche Benutzer verwendet wie auf dem Client.
$ ssh arnold@192.168.109.199 arnold@192.168.109.199's password:Nun geben Sie das Passwort ein. Sie könen es nicht sehen (auch keine Sterne oder Punkte für jeden Buchstaben), sondern erst nach Eingabe von Return sehen, ob der Zielrechner mit dem Passwort zufrieden ist.
Anschließend erhalten Sie eine normale Shell, vorausgesetzt, der SSH-Server wurde auf der Zielmaschine installiert.
Sicherheit bei ssh
Der Client ssh ist auf jeder Linux-Maschine installiert. Sie können damit eine Sitzung auf einem fremden Rechner eröffnen.- Die gesamte Datenübertragung wird verschlüsselt.
- Ein Man-In-The-Middle-Angriff wird unterbunden, indem sich der Client einen Fingerabdruck der bisher angesprochenen Server merkt und bei einer Änderung sofort Alarm gibt.
Konfiguration
Die Clients werden in der Datei ssh_config konfiguriert, die sich im Verzeichnis /etc oder in /etc/ssh befindet.
Windows
Für MS Windows gibt es das freie Programm PUTTY, das einen ssh-Client und einen scp beinhaltet. Sie finden es unter:http://www.chiark.greenend.org.uk/~sgtatham/putty
scp: Sicheres Kopieren über das Netz
Das Kopieren erfolgt mit dem Befehl scp. Die Argumente lehnen sich an den Standardbefehl cp für das lokale Kopieren an. Erst wird die Quelle dann das Ziel genannt. Neu ist, dass ein anderer Rechner angegeben werden kann. Dieser wird mit einem Doppelpunkt abgeschlossen. Zusätzlich kann mit ein Benutzer angegeben werden, der mit @ abgeschlossen wird.
scp [Benutzer@[Hostname:]]Quelldateien [Hostname:]Ziel
Um die Datei /etc/passwd auf dem eigenen Rechner in das Heimatverzeichnis des Rechners idefix zu kopieren, verwendet man den folgenden Befehl:
scp /etc/passwd idefix:Will man die Datei /etc/passwd auf dem Rechner idefix in das Verzeichnis Dokumente auf dem lokalen Rechner zu kopieren, verwendet man den folgenden Befehl:
scp idefix:/etc/passwd DokumenteSollen alle Dokumente des Benutzers maria auf dem Rechner idefix in dessen Heimatverzeichnis Dokumente in dem eigenen Verzeichnis Dokumente/maria abgelegt werden, würde man folgenden Befehl verwenden:
scp idefix:Dokumente/* Dokumente/maria
Das Programm zeigt beim Kopiervorgang einen Verlaufsbalken an. Dieses unterhaltsame Feature können Sie allerdings auch mit der Option -q abschalten.
gaston> scp silver:/etc/passwd . passwd 100% |*****************************| 2071 00:00 gaston>
Der SSH-Server
Ein Linux-Rechner hat zwar von Haus aus immer einen SSH-Client (ssh und scp), allerdings ist der SSH-Server nicht standardmäßig installiert. Dazu muss das Paket openssh-server unter Administratorrechten installiert werden. Unter Debian, Ubuntu, Linux Mint und einigen anderen Distributionen lautet der Befehl:
# apt-get install openssh-server
Ubuntu-User müssen eventuell den Befehl sudo davor stellen.
Nach der Installation des Servers können alle Benutzer des Systems von außen angesprochen werden, sofern die Benutzer laut /etc/passwd einen Login besitzen. In der Konfigurationsdatei können durch AllowUsers und DenyUsers explizit einzelne Benutzer erlaubt oder ausgeschlossen werden.
Konfiguration
Der Serverprozess heißt sshd, seine Konfigurationsdatei sshd_config und befindet sich im Verzeichnis /etc/ssh. Darin befinden sich mehrere Variablen. Die wichtigsten sind:- PasswordAuthentication (YES/no)
Es ist einem Client erlaubt, über ein Passwort einzuloggen. Wird dieses Schlüsselwort gar nicht erwähnt, ist das in Ordnung. Standardmäßig steht dieser Wert auf yes. Das Abschalten der Option PasswordAuthentication ist möglich und sinnvoll, um zu verhindern, dass ein Server durch ein schwaches Passwort kompromitiert werden kann. - ListenAddress IP-Adresse des Netzwerks/Hosts
Der SSH-Server ist nur über ein bestimmtes Netzwerk oder einen Host ansprechbar. Standard ist, dass alle Netzwerke dies dürfen. - AllowUsers Liste von Usern
Die Benutzer, die sich per ssh einloggen dürfen, werden - durch Leerzeichen getrennt - hier aufgeführt. Ist diese Variable aktiv, dürfen nur hier aufgeführte Benutzer den SSH-Server verwenden.
Authentifizierung per Schlüssel
Die Authentifizierung per Passwort hat vor allem den Nachteil, dass das Passwort jedes Mal eingetippt werden muss. Ein Skript hat damit seine Probleme. Die Alternative besteht darin, einen Schlüssel zu verwenden. SSH verwendet dazu RSA.RSA ist ein asymmetrisches Kryptoverfahren, auf dem die Schlüsselverwaltung von SSH beruht. Es ist nach den Entwicklern Rivest, Shamir und Adleman benannt (Rivest, Shamir, Adleman: A Method for Optaining Digital Signatures and Public Key Cryptosystems. Communication of the ACM, Feb. 1978.)
Auf dem Zielrechner, der ohne Passwort erreicht werden soll, muss der öffentliche Schlüssel des Benutzers auf der Clientmaschine im Verzeichnis seiner authorisierten Schlüssel eingetragen werden.
Vorbereitung: Anlegen eines Schlüsselpaares
Das Programm ssh-keygen erzeugt ein Schlüsselpaar für den angemeldeten Benutzer auf der Maschine, auf der der Befehl aufgerufen wird.Im Beispiel soll der Rechner gaston per ssh oder scp auf den Rechner silver zugreifen können. Mit dem Kommando ssh-keygen wird auf gaston ein Schlüssel erzeugt:
gaston> ssh-keygen Generating public/private rsa1 key pair. Enter file in which to save the key (/home/arnold/.ssh/id_rsa) Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/arnold/.ssh/id_rsa Your public key has been saved in /home/arnold/.ssh/id_rsa.pub The key fingerprint is: 3b:a2:62:ed:02:ef:30:79:a1:4b:0b:b6:35:21:d8:f1 arnold@gaston The key fingerprint is: SHA256:ei9nEpQRwRC2ptEmRMfHyAYSyxpajJQNjSoi5dvnndQ arnold@gaston The key's randomart image is: +---[RSA 2048]----+ | oOo++=*oo | |.*.* +=.= | |+o= o.=. o | |*+. * o | |* o. .S. | | . . ..o E | | o.o.o | | ..=.o | | =. | +----[SHA256]-----+ gaston>
Es entstehen im Verzeichnis .ssh zwei Dateien. Der eine ist der private Schlüssel und heißt id_rsa. Die andere Datei heißt id_rsa.pub ist öffentlich.
Der öffentliche Schlüssel wird auf dem Server hinterlegt. Der private Schlüssel dient als Kontrolle und liegt bereits an der richtigen Stelle.
Öffentlichen Schlüssel kopieren
Wie aus den Meldungen zu entnehmen ist, befinden sich die Dateien mit den Informationen im Unterverzeichnis .ssh des Benutzerverzeichnisses. Die Datei id_rsa.pub enthält eine Zeile mit dem öffentlichen Schlüssel. In dieser Datei befindet sich nur die eine Zeile, die auf arnold@gaston endet. Diese Zeile wird auf dem Zielrechner an die Datei .ssh/authorized_keys angehängt.Die nächsten Arbeiten loggen wir uns auf silver ein, beispielsweise mit ssh von gaston aus.
gaston> ssh silver arnold@debian's password: silver> cd silver> scp gaston:.ssh/id_rsa.pub gaston.pub silver> cat gaston.pub >> .ssh/authorized_keys silver> rm gaston.pub
Wenn die Konfigurationsdateien der ssh-Komponenten nicht verändert wurden, kann sich nun der Benutzer arnold von gaston aus auf dem Rechner silver anmelden, ohne ein Passwort einzugeben:
gaston> ssh silver Last login: Mon Feb 25 00:04:06 2002 from mail.willemer.edu Have a lot of fun... silver>
Mit diesen Werten ist das Einloggen ohne Passwort nur erlaubt, wenn eine Schlüsselübergabe stattgefunden hat. Alle rhosts-Varianten der Authentifizierung sind ausgeschlossen. Ein direktes Einloggen mit der Eingabe eines Passworts ist aber erlaubt. Sobald die RSA-Keys eingerichtet sind, können Sie die PasswordAuthentication wieder auf no schalten, um ein direktes Einloggen zu vermeiden.
Schlüsselverteilung mit ssh-copy-id
Wenn auf dem Computer nur ein Schlüssel eingerichtet ist, können Sie sich das Kopieren und Anhängen an die existierenden bekannten Schlüssel vereinfachen, indem Sie das Skript ssh-copy-id, das standardmäßig unter Linux vorinstalliert ist, aufrufen.
client $ ssh-copy-id user@server
Wenn es mehr als einen Schlüssel gibt, kann der gewünschte mit der Option -i explizit benannt werden.
client $ ssh-copy-id -i ~/.ssh/meinkey user@server
Tunnelbau: Andere Protokolle sichern
Mit ssh können Sie Netzverbindungen anderer TCP/IP-Dienste sichern. Die Basis ist eine gewöhnliche Sitzung mit ssh, der man allerdings die Ports zuordnet. Dazu gibt es die Option -L. Als weiterer Parameter wird ein Tripel aus eigener Portnummer, dem Benutzer auf dem Zielrechner und dem Zielport angefügt. Als Beispiel wird eine Sitzung aufgesetzt, die vom Rechner silver zu gaston führt. Der Zielport ist 110, der für POP3 verwendet wird:
silver> ssh gaston -L 2002:gaston:110 Last login: Sun Jul 7 11:32:27 2002 from silver.willemer.edu Have a lot of fun... gaston>
Sobald diese Sitzung angemeldet ist, kann auf dem Rechner silver ein Mailclient aufgerufen werden. In der Konfiguration des Mailprogramms wird als Server localhost, also silver, angegeben. Der Port wird von 110 auf 2002 umgestellt. Sobald Sie nun Ihre Mail abrufen, wird der Mailclient lokal auf silver den Port 2002 anfragen. Der ist aber durch die ssh-Sitzung über eine gesicherte Verbindung mit dem Port 110 von gaston verbunden. Dieser Tunnel bleibt so lange bestehen, wie die ssh-Sitzung besteht. Nach dem Ausloggen kann auch auf den Tunnel nicht mehr zugegriffen werden.
Durch Firewall und Proxy
Da die Verbindung durch SSH getunnelt wird, kann sie überall da aufgebaut werden, wo eine solche Verbindung erlaubt ist. Damit hat die Freigabe von SSH zur Folge, dass die Berechtigten auch beinahe jede andere Verbindung zwischen den Rechnern aufbauen können, für die SSH gestattet ist. Eine Firewall wie auch ein Proxy können die Verbindung zwar als SSH identifizieren, sie können aber nicht erkennen, welcher Protokolltyp darin getunnelt wird.