Home / LinuxUser / 2008 / 03 / Aber sicher!

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(268 Punkte bei 24 Stimmen)
Neues vom Systemd
(161 Punkte bei 4 Stimmen)
Mandriva in Nöten
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

Aber sicher!

SSH, SCP und SFTP

01.03.2008 Sicheres Arbeiten auf entfernten Rechnern und verschlüsselte Datenübertragung – das alles und noch viel mehr bietet SSH.

Die Abkürzung SSH steht für "Secure Shell" und bezeichnet sowohl das Protokoll als auch das Programm selbst. Auf vielen Plattformen, darunter auch Linux, bietet die vom OpenBSD-Projekt entwickelte Programmsammlung OpenSSH [1] alles, was Sie für die verschlüsselten Verbindungen benötigen: Kommandozeilentools zum Arbeiten auf entfernten Rechnern, die Möglichkeit, Programme remote auszuführen (auch grafisch, mittels X11-Weiterleitung), andere Internetdienste über SSH zu "tunneln" (und damit gegen Lauschangriffe abzusichern), Tools zum sicheren Kopieren von Daten und vieles mehr. Die Tabelle "OpenSSH-Suite" zeigt eine Übersicht der wichtigen Anwendungen.

Die Installation gestaltet sich unproblematisch, denn OpenSSH zählt zu den festen Bestandteilen jeder aktueller Linux-Distribution. Die meisten Systeme bieten für den Client und den Server zwei verschiedene Pakete an. Während der Client meistens vorinstalliert ist, müssen Sie den Server oft nachträglich einrichten, falls Sie von anderen Rechnern aus auf Ihren Linux-Computer per SSH zugreifen möchten. Eine Suche im Paketmanager nach openssh hilft in der Regel weiter.

Das grundlegende Arbeiten mit ssh und scp sowie das Erstellen von SSH-Schlüsseln und erste Schritte mit dem SSH-Agenten zeigt ein älterer Artikel [2]. Diese Folge geht einen Schritt weiter und verrät, was es mit Hostkeys auf sich hat und wie Sie den Fingerabdruck dieser Schlüssel prüfen, wie Sie private Schlüssel mit dem SSH-Agent (auch zeitlich begrenzt) verwalten, wie Sie mit dem eingebauten SOCKS-Proxy SSH-Verbindungen tunneln und wie Sie mit Secure FTP interaktiv Daten übertragen.

OpenSSH-Suite

Programm

Funktion

ssh Der Kommandozeilenclient ssh baut verschlüsselte Verbindungen zu entfernten Rechnern auf und führt auf Wunsch auch direkt Befehle aus.
scp Mit scp ("secure copy") kopieren Sie Dateien (nicht-interaktiv) lokal, zu oder von entfernten Rechnern.
sftp Der FTP-Client ("secure FTP") ermöglicht interaktive Kopieraktionen: Wie bei anderen Kommandozeilen-FTP-Clients stehen neben Kopierfunktionen zahlreiche weitere Möglichkeiten zur Verfügung, wie Verzeichniswechsel und -listings, Änderung von Zugriffsrechten, Löschen von Verzeichnissen oder Dateien und vieles mehr.
sshd Der SSH-Server sshd ist als Daemon implementiert und lauscht standardmäßig auf Port 22. Die SSH-Clients bauen Verbindungen mit dem sshd auf.
ssh-keygen Das Tool erstellt und konvertiert SSH-Schlüssel.
ssh-keysign Hilfsprogramm, das bei der Host-basierten Authentifizierung zum Einsatz kommt.
ssh-keyscan Mit dieser Anwendung zeigen Sie öffentliche Hostkeys an und hängen sie an die Datei ~/.ssh/known_hosts an.
ssh-agent Der SSH-Agent verwaltet private SSH-Schlüssel und vereinfacht den Umgang mit Passwörtern.
ssh-add Das Tool macht den ssh-agent mit neuen Schlüsseln bekannt.

Ein Schlüsselerlebnis: Der Hostkey

Beim Erstkontakt verrät die Gegenseite den Fingerabdruck ihres öffentlichen Hostkeys (Abbildung 1). Die Warnung, dass die Authentizität des Rechners nicht gesichert sei, müssen Sie explizit durch Eingabe von yes bestätigen. Erst danach geht's weiter, und die Gegenstelle fordert das Passwort an.

Abbildung 1: Kontaktaufnahme: Der entfernte Rechner identifiziert sich mit seinem Hostkey bei der ersten Anmeldung.

Die Hostkeys des fremden Systems landen in der Datei ~/.ssh/known_hosts. Sobald Sie sich erneut auf dem Rechner einloggen, prüft SSH, ob der Schlüssel noch stimmt, und verweigert die Zusammenarbeit, wenn das nicht der Fall ist: WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!. In einem solchen Fall kann es sich um böswillige Absicht und einen so genannten Man-in-the-middle-Angriff handeln; ein nicht mehr passender Hostkey hat aber oft ganz harmlose Gründe: Der Administrator hat den Schlüssel geändert oder das System neu installiert. Sind Sie sich sicher, dass das der Fall ist, greifen Sie zum Texteditor, öffnen die Datei ~/.ssh/known_hosts und löschen den entsprechenden Eintrag.

Im Verzeichnis /etc/ssh finden Sie sowohl den privaten als auch den öffentlichen Hostkey. Hat ein Administrator den Fingerabdruck des öffentlichen Schlüssels (/etc/ssh/ssh_host_rsa_key.pub) vorher bekannt gemacht, können Sie ihn beim Erstkontakt vor dem Akzeptieren überprüfen. Bei der Bestimmung des Fingerabdrucks hilft das Tool ssh-keygen. Mit der Option -l zeigen Sie den Fingerabdruck eines öffentlichen Schlüssels an, den Sie auf Anforderung angeben. Möchte der Administrator des Rechners macnugget, auf dem sich petronella von samesame aus einloggen möchte (Abbildung 1), den Fingerabdruck des Hostkeys herausfinden, geht er so vor, wie in Listing 1.

Listing 1
# ssh-keygen -l
Enter file in which the key is (/root/.ssh/id_rsa): /etc/ssh/ssh_host_rsa_key
2048 a0:0a:aa:3b:d3:08:f1:90:45:4f:48:c9:f6:cb:92:37 /etc/ssh/ssh_host_rsa_key.pub

Agent X is watching you

Der Artikel unter [2] beschreibt ausführlich, wie Sie einen SSH-Schlüssel anlegen und damit unter anderem eine Authentifizierung ohne Passworteingabe ermöglichen. Die gesparte Tipparbeit erkaufen Sie aber unter Umständen teuer: Der lokale, private Schlüssel bleibt ungesichert und öffnet einem Angreifer Tür und Tor, falls er in die falschen Hände gerät. Einen gesunden Mittelweg beschreitet das Programm ssh-agent: Es übernimmt die Verwaltung privater Schlüssel. So müssen Sie das Kennwort nur noch einmal pro Schlüssel zu Beginn einer ssh-agent-Sitzung eingeben.

Der Agent ist vielseitig: Er verrichtet entweder als Daemon im Hintergrund seine Arbeit oder lässt sich gezielt zum Aufruf einzelner Programme verwenden. Als zusätzliches Sicherheitsfeature lässt sich für den ssh-agent in beiden Anwendungsfällen mit der Option -t ein Timer einschalten. Nach dem Ablauf einer so festgelegten Zeitspanne "vergisst" der Agent die gespeicherten Schlüsselkennwörter. Hinter dem Parameter -t geben Sie die Lebensdauer der Passwörter an. ssh-agent versteht die verschiedensten Einheiten: Keine Angabe oder s bedeutet Sekunden, m Minuten, h Stunden, d Tage und w Wochen.

Um den Agenten als unabhängigen Daemon zu starten und ihn so zu konfigurieren, dass er neu hinzugefügte Schlüssel jeweils nach zwei Tagen vergisst, lautet der Aufruf beispielsweise:

$ ssh-agent -t 2d

Die Ausgabe verrät, auf welche Werte Sie die Umgebungsvariablen $SSH_AUTH_SOCK und $SSH_AGENT_PID setzen müssen, damit ssh-agent korrekt arbeitet. Kopieren Sie die Programmausgabe entweder mit der Maus und fügen sie ein, oder lassen Sie die Ausgabe direkt beim Start durch eval auswerten:

$ eval $(ssh-agent -t 2d)

Beim Start verrät das Programm weiterhin direkt seine Prozess-ID, was der nachfolgende ps-Aufruf bestätigt (Abbildung 2). Der Agent quittiert nicht von selbst seinen Dienst – auch nicht, wenn Sie die Shell schließen. Um das Programm zu beenden, rufen Sie in der Shell, in der ssh-agent gestartet wurde, ssh-agent -k auf. Ist das nicht möglich, etwa, weil die aufrufende Shell schon nicht mehr läuft, bleibt als einziger Ausweg das kill-Kommando [3], zum Beispiel:

$ kill 29692

Abbildung 2: ssh-agent benötigt verschiedene Umgebungsvariablen und verrät auch seine PID beim Start.

Um den ssh-agent nicht als Daemon, sondern gezielt mit einer Anwendung (beispielsweise einem Terminalprogramm) zu starten, geben Sie den Namen der ausführbaren Datei im Aufruf mit an:

$ ssh-agent gnome-terminal &

Damit steht der Agent nur für diese Anwendung und die aus ihr heraus gestarteten Programme zur Verfügung. Beenden Sie das Terminal, stellt das auch das Aus für ssh-agent und alle darin enthaltenen Schlüsselinformationen dar.

Achtung: Einige Distributionen, darunter aktuelle Debian-Versionen, starten das Programm ssh-agent zusammen mit der X-Umgebung. Am besten überprüfen Sie dies mit dem in Abbildung 2 gezeigten ps/grep-Aufruf. Lädt der Benutzer in dieser Konfiguration Schlüssel ohne zeitliche Begrenzung in den Agenten (siehe nächster Abschnitt) und vergisst, den Bildschirm zu sperren, wenn er den Rechner kurz verlässt, kann das zu einem potenziellen Sicherheitsrisiko werden. Um dem System dieses Verhalten abzugewöhnen, passen Sie die Datei /etc/X11/Xsession.options an und kommentieren die Zeile

use-ssh-agent

durch ein vorangestelltes Rautezeichen (#) aus.

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

1270 Hits
Wertung: 64 Punkte (5 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 06/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

gibt es ein Kommandozeilen Tool, um ein X11-Fenster in ein Anderes einzubetten?
GoaSkin , 21.05.2012 16:44, 0 Antworten
Das XEmbed-Protokoll ist u.A. dazu gedacht, dass man eine X11-Anwendung in eine andere wie ein Wi...
Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...