SSH Simple

Aus LOMSO
Zur Navigation springen Zur Suche springen
Du bist hier : Wiki home -> Events -> Linuxeinsteiger -> SSH Simple



Einfache und sichere Verbindung zwischen zwei PCs mit der Secure Shell

Dies ist eine einfache Einführung in die 'Secure shell' (SSH) für ein vertrauenswürdiges 'Familien-Netz' und benötigt keine tieferen Linux Kenntnisse.

Unsere Spickzettel, die man auch ausdrucken und falten kann, geben eine detailliertere Beschreibung von SSH.

Werkzeuge zum Einsatz mit SSH sind hier vorbereitet: SSH Werkzeuge


Hintergrund

das Open SSH Projekt

Open SSH in der Wikipedia

Mit SSH kann man einen verschlüsselten Datenkanal zwischen zwei Linux-PCs aufbauen. Verschiedene Programme sind in der Lage, diesen Kanal zu nutzen.

  • Terminals
  • grafische Ausgaben
  • Filesysteme
  • Filemanager
  • Remote-Desktops, z.B. 'X2GO'

Und noch viel mehr.

Da alle netzwerkfähigen Programme mit einem anderen PC über bestimmte Ports kommunizieren, kann man den Datenverkehr zwischen diesen Ports durch einen 'Tunnel' leiten, der über SSH aufgebaut wird.

Eine Liste der Ports auf einem Linux-PC ist hier zu finden:

/etc/services

Hier wird die Verwendung von SSH für ein vertrauenswürdigen Familien-Netz beschrieben. Alle Benutzer dieses Netzes teilen sich die Ressourcen ihrer PCs über ein unsicheres Netz, dem Internet. Mit SSH wird das vorher unsichere Netz sicher. Die Daten laufen verschlüsselt über das Netz und eine 'Mitlesen' vom 'Man in the Middle', d.h. dem Netzbetreiber, dem Provider uvam., ist ausgeschlossen.

'Man in the Middle' in der Wikipedia

Auch innerhalb eines lokalen Netzes, das durch einen Router keine direkte Verbindung dem Internet hat, lohnt es sich, SSH einzusetzen. Ein im lokalen Netz geschütztes Netbook/Notebook ist schnell mal unterwegs an ein unsicheres Netz angeschlossen. Sicherer ist es, den Zugriffs auf den PC/Netbook/Notebook unabhängig vom Zustand des gerade verwendeten Netzes immer sicher zu konfigurieren.

Das gilt insbesondere für den 'entfernten Desktop', der sich per Mausklick einfach freigeben lässt.


Voraussetzungen

  • Installation von Programmen
  • Arbeiten mit dem Terminal
  • Arbeiten als Benutzer root im Terminal, mit sudo -s


Installation

  • aus dem Repository, mit apt-get od. Synaptic: ssh installieren
  • Server und Client installieren, auf allen am zukünftigen Netz beteiligten PCs
  • der SSH-Server startet automatisch

apt-get ist als Spickzettel im Wiki vorhanden.


Login über Schlüssel einrichten

Mit

ssh-keygen -t rsa -b 4096

ein Schlüsselpaar erzeugen.

Das von 'ssh-keygen' verlangte Passwort kann man leer lassen, es hat für die Sicherheit der Verbindung keine Bedeutung. Mit dem Passwort wird der private Schlüssel gegen Diebstahl gesichert, was für Notebooks evtl. nötig ist.

ssh-keygen erzeugt ein Schlüsselpaar im Sub-Folder .ssh des Home-Folders des Benutzers:

/home/benutzer/.ssh/id_rsa
/home/benutzer/.ssh/id_rsa.pub

Der erste ist der private Schlüssel, der niemals weitergegeben werden darf.

Der zweite, 'id_rsa.pub' ist der öffentliche Schlüssel, der bedenkenlos verteilt werden kann. Die Schlüssel enthalten einen langen kryptischen Text, der keine Sonderzeichen enthält.

Der öffentliche Schlüssel kann daher problemlos, z.B. per EMail, versandt werden.

Der private Schlüssel enthält zur Sicherheit und Wiedererkennung den Text:

PRIVATE KEY

Auf allen beteiligten Client-PCs des zukünftigen SSH-Netzwerkes wird für jeden Benutzer ein solches Schlüsselpaar erzeugt. Der private Schlüssel verbleibt immer auf dem Client im Verzeichnis des Benutzers. Der öffentliche Schlüssel muss zum Server.

Installation des öffentlichen Schlüssels auf dem entfernten PC, dem SSH-Server

Mit USB-Stick, per EMail oder anderen Mitteln, wird der Schlüssel zum Besitzer des entfernten PC gebracht. Dieser kopiert den öffentlichen Schlüssel in den File

/home/benutzer/.ssh/authorized_keys2

der u.U. neu angelegt werden muss.

Falls man auch den Zugriff vom anderen PC aus auf den eigenen PC ermöglichen will, muss den öffentlichen Schlüssel des anderen PC in die eigene

/home/ich/.ssh/authorized_keys2

kopiert werden. Der authorized_keys2 File enthält alle öffentlichen Schlüssel der PCs, die auf diesen PC, über diesen Account, zugreifen dürfen.

Der Besitzer des PC hat damit eine einfache und transparente Kontrolle, wer alles auf seinen PC zugreifen darf.

Wichtig - Logins mit Passwort abschalten

Sofort nach der Installation folgendes ändern:

Im File

/etc/ssh/sshd_config 

folgende Zeilen ändern (mit sudo):

  • Zeile mit 'PermitRootLogin' anschauen
PermitRootLogin without-password 


  • Zeile mit 'PasswordAuthentication' anschauen

In dieser Zeile auch das Kommentarzeichen (#) entfernen, sonst ist der Eintrag unwirksam. Die Voreinstellung ist ein Login mit Passwort, das muss abgeschaltet werden.

PasswordAuthentication no


  • Zeile mit 'ChallengeResponseAuthentication' anschauen
 ChallengeResponseAuthentication  no


In der man page von sshd_config steht

ChallengeResponseAuthentication  yes

als Default, was PasswordAuthentication no umgeht, wenn UsePAM yes aktiv ist.

Debian und Ubuntu setzen aber als Default

 ChallengeResponseAuthentication  no

Damit gibt es keinen Fallback auf eine Passwort-Authentifizierung, wenn der Schlüssel falsch ist.

Macht man hier einen Fehler, kann man sich mit Passwort einloggen, obwohl das in der Zeile oben abgeschaltet wurde.

Details dazu finden man direkt in sshd_config.


Server neu starten:

# service ssh restart

Danach ist der Login über das Netz mit Benutzername/Passwort abgeschaltet.

Das sichert den PC gegen Angriffe von aussen ab.

SSH ist für Angriffe sehr beliebt. Einfache Benutzernamen/Passwörter sind für einen Angreifer auf den PC kein Hindernis.

Sind alle Login-Möglichkeiten eines Login über Benutzername/Passwort abgeschaltet, ist der PC gegenüber solchen Angriffen sicher.

SSH-Server hinter einem Router

(entfällt wenn der PC direkt mit dem Internet verbunden ist, z.B. ein über DSL-Modem).

Ein Home-Router setzt die externe IP-Adresse, die man vom Provider erhält, in eine interne IP-Adresse um, die nur im lokalen Netz in der eigenen Wohnung sichtbar ist. Diese interne Adresse beginnt meist mit

192.168. ...

Mit

sudo ifconfig

kann man sich im Terminal die eigene interne Adresse anzeigen lassen. Interne IP-Adressen werden durch den Router nicht in das Internet weitergeleitet.

Hintergrund:
http://de.wikipedia.org/wiki/Network_Address_Translation#Source_NAT

Im Internet ist daher nur der Router und nicht der PC sichtbar. Eine SSH-Verbindung zum SSH-Server-PC ist so nicht möglich. Im Router muss der Port 22 als 'Portweiterleitung' zum dem PC eingestellt werden, der als SSH-Server eingesetzt wird.

Details dazu bitte der Beschreibung des Routers entnehmen.

Ist das erfolgt, gelangen die Daten für den Port 22 auch an den richtigen PC.


Bemerkung zu Port 22

Oft kann man den 'Tipp' bekommen, doch nicht den Port 22 für SSH zu verwenden, weil der Port 22 ein häufiges Ziel von Angriffen sei.
Ein Betrieb von SSH über einen anderen Port ist problemlos möglich, aber

  • es schützt nicht vor Angriffen, weil ein Angreifer das schnell entdeckt
  • gegen ein unsicher konfiguriertes SSH schützt ein anderer Port auch nicht
  • alle SSH Verbindungen, die mit mir Kontakt aufnehmen wollen, müssen diesen anderen Port verwenden
  • es verletzt Regeln im Internet, die Ports sind nach der Liste in /etc/services vergeben und die Dienste werden auf diesen Ports erwartet

Gründe für die Verwendung anderer Ports für SSH:

  • der PC ist hinter einer Firewall, die Port 22 blockt
  • die gelegentlichen Angriffe auf Port 22 erzeugen eine zu grosse Netzlast
  • man hat nur wenige SSH-Verbindungen und die Information der Netzteilnehmer über einen anderen Port ist kein Hindernis.


externe IP Adresse

Der Router bekommt vom Provider eine IP-Adresse zugewiesen, die sich täglich ändern kann. Nur über diese IP-Adresse ist dann auch per SSH der PC über das Internet erreichbar. Wie ermittelt man automatisch die IP-Adresse des Routers?

Die Webseite

http://www.wieistmeineip.de/ 

zeigt die IP-Adresse des Routers an.

Das ist die Adresse, mit der man selbst Internet unterwegs ist. Möchte man eine SSH-Verbindung aufbauen, muss man den Besitzer des entfernten PC nach seiner momentanen IP-Adresse fragen (telefonisch, im Chat u.a.). Will man das vermeiden, kann der Router die momentane IP-Adresse unter einem Namen, der immer gleich bleibt, im Internet mit Hilfe eines Dienstes bekanntgeben

Details, siehe hier:

http://www.duckdns.org/

Aus der sich ständig ändernden IP-Adresse (z.B. 123.123.123.*) wird dann z.B. mein-linux-beispiel.example.com. Unter dieser gut merkbaren Adresse sind wir dann im Internet erreichbar.

Zusammenfassung

Die Texte,

Reihenfolge zum Arbeiten mit SSH:

  1. Installation von SSH
  2. Erzeugen der Schlüssel
  3. Absichern des Servers
  4. Verteilen der öffentlichen Schlüssel
  5. Testen
  6. und fertig

SSH ist der Standard zur sicheren Verbindung von Linux-PCs.

Es wird keine zusätzliche Software benötigt.

Alles ist in Linux out of the box enthalten.

Mit der Verbindung über einen Filemanager (s.o.) bekommt man ein transparentes Netzwerk zum Datenaustausch im vertrauten Bekanntenkreis ohne sich umständliche Passwörter merken zu müssen. Man muss nur die öffentlichen Schlüssel austauschen und in

~/.ssh/authorized_keys2

des anderen PCs eintragen lassen.

D.h. der öffentliche Schlüssel des SSH-Client kommt auf den SSH-Server.

Der private Schlüssel verbleibt auf dem SSH-Client.

Jeder Linux-PC kann gleichzeitig SSH-Client und SSH-Server sein.

Ergebnis

In meiner Familie sind wir alle ständig über SSH verbunden.

Wir haben ein sehr sicheres Familien-Netzwerk zur privaten Kommunikation.

Lange Email-Anhänge benötigen wir nicht mehr.

Es geht alles per Copy/Paste, direkt und sicher.

Und anstatt Programme zu installieren und zu konfigurieren, verwenden wir gegenseitig die fertig installierten Programme des anderen PC und nutzen die vorhandenen Leistungsreserven besser aus.

Interessant wird es im Urlaub. Mein PC ist aus stromsparenden Komponenten aufgebaut, die es erlauben, den PC über mehrere Wochen durchlaufen zu lassen. Mit den Techniken von SSH kann ich mit meinem kleinen Netbook die Ressourcen meines grossen PC über das Internet nutzen.

Was will man mehr?