Debian OpenSSH: Unterschied zwischen den Versionen

Aus Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 156: Zeile 156:
  Match address '''''192.168.0.0/24'''''
  Match address '''''192.168.0.0/24'''''
   PasswordAuthentication yes
   PasswordAuthentication yes
=SSH-Tunnel=
Mit einem sog. SSH-Tunnel kann man beliebige andere TCP/IP Verbindungen über die verschlüsselte SSH-Verbindung übertragen. So ist es beispielsweise möglich, das unverschlüsselte FTP-Protokoll durch einen SSH-Tunnel zu verschlüsseln. Es ist auch möglich, z.B. das Webinterface eines Routers durch den SSH-Tunnel aus der Ferne aufzurufen, ohne dafür einen eigenen Port zu öffnen. Sinn macht ein SSH-Tunnel eigentlich nur, wenn SSH übers Internet zum Einsatz kommt.
Ein SSH-Tunnel wird mit Putty initiert. Solange die Putty-Verbindung besteht, ist auch der SSH-Tunnel aktiv und kann benutzt werden.
'''Aufbau eines SSH-Tunnels mit Putty:'''
Als Beispiel soll das Webinterface der Fritzbox mit IP-Adresse 192.168.178.1 auf Port 80, die Zu Hause steht, durch den SSH-Tunnel von einem entfernten Internet-PC aus aufgerufen werden, auf dem Putty installiert ist:
* Einstellungen wie für eine normale oder Private/Public-Key Verbindung
* Zusätzlich:
:* Im linken Baum Connection/SSH/Tunnels folgende Eingaben vornehmen
::Source-Port: beliebiger Port auf dem lokalen PC, über den der Tunnel angesprochen werden soll - z.B: 3000
::Destination: IP-Adresse:Port im Zielnetz - z.B 192.168.178.1:80
:* Button '''''Add''''' anklicken
:* Evtl. weitere Tunnels auf identische Art und Weise einfügen.
* Evtl. die Session abspeichern
* Button '''''Open''''' anklicken
* Evtl. Username und Passwort eingeben, falls nicht Private/Public-Key Verfahren zum Einsatz kommt.
'''Benutzung des Tunnels:'''
Webbrowser öffnen und als Adresse http://localhost:3000 eingeben.
Die Webseite der entfernten Fritzbox sollte nun angezeigt werden.

Version vom 9. Januar 2011, 16:09 Uhr

Installation

Die Installation von OpenSSH ist relativ einfach:

apt-get install openssh-server

(Die Frage nach evtl. fehlenden Abhängigkeiten mit j beantworten.


Client Software

Windows Client

Als Clients sind Putty und Winscp sehr empfehlenswert.

  • Putty empfiehlt sich vor allem für alle Administrationsaufgaben auf der Kommandozeilenebene.
  • Winscp ist ähnlich eines FTP-Programms, vor allem auf Mausbedienung ausgelegt. Es ist aber auch relativ einfach möglich, Konfigurationsdateien mit einem Windowskonformen Editor einfacher als mit dem rudimentären vi, zu bearbeiten. Es ist auch einfach möglich, Datein per Drag&Drop zwischen Windows-PC und Linux hin und her zu kopieren.

Putty

Download von Putty: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

Bulbgraph.png Hinweis:
Am einfachsten zu installieren ist die Windows-Installer Version. Also diese downloaden.

Den Anweisungen des Installers folgen um Putty zu installieren.


WinSCP

Download von WinSCP: http://winscp.net/eng/download.php Zur Installation den Anweisungen des Setup-Programms folgen.

Bulbgraph.png Hinweis:
Während der Installation wird nach dem gewünschten User Interfaface gefragt. Es steht zur Wahl:
  • Norton Explorer Imitation: Zwei Dateifenster. Linkes Fenster: Lokale Windows Verzeichnisse. Rechtes Fenster: Remote (Debian Server) Directory
  • Windows Explorer Style: Verzeichnisbaum und Dateifenster des Debian Servers. Kein lokales Fenster für Windows files.


Linux Client

Kommandozeilen Tool

Unter jeder gängigen Linuxdistribution sollte bereits ein SSH-Client installiert sein. Mit dem Befehl

ssh IP_Des_Server

kann eine SSH-Verbindung zu einem SSH-Server aufgebaut werden.


Putty

Putty steht auch für Linux zur Verfügung. Die Installation unterscheidet sich je nach verwendeter Distribution. Unter Ubuntu z.B. das Paket putty mittels Synaptic installieren.

Bulbgraph.png Hinweis:

Zum Einfügen eines Textes aus der Zwischenablage dient - im Gegensatz zur Windowsversion von Putty - die mittlere Maustaste.


Funktions Test

Putty

Um Putty und die SSH-Verbindung zu testen, folgende Schritte durchführen:

  • Putty starten
  • Folgende Einstellungen vornehmen:
Protokoll SSH (Standardmäßig angewählt)
Port 22 (Standard für SSH)
Hostname: IP_des_Servers
  • Button Open anklicken
  • Im sich öffnenden Fenster User: root und Passwort: root_Passwort eingeben


WinSCP

Um WinSCP und die SSH-Verbindung zu testen, folgende Schritte durchführen:

  • WinSCP starten
  • Folgende Einstellungen vornehmen:
Hostname: IP_des_Servers
Port Number:  22
User Name: root
Password: root_pwd
File protocol: SCP oder SFTP
Bulbgraph.png Hinweis:
Wenn die Verbindungsdaten mittels Button "Save" gespeichert werden sollen, sollte aus Sicherheitsgründen hier kein Passwort eingegeben werden. Das Passwort wird dann später abgefragt.

WinSCP-Login.JPG

  • Button Login drücken
  • Beim ersten Connect zum Server erscheint eine Warnung, dass der verwendete Schlüssel nicht in der Datenbank von WinSCP zu finden sei. Button Yes anklicken.
  • Passwort des Users root eingeben, falls nicht bereits im Schritt 2 erfolgt
  • Das Verzeichnis root wird angezeigt


Erweiterung: Zugang mittels Public Key

Es ist möglich, sich mittels sog. Public- und Private-Keys anzumelden. Dann entfällt die nötige Eingabe von User und Passwort. Zusätzlich wird die Sicherheit erhöht. Um Zugang zu erreichen ist der korrekte Schlüssel erforderlich anstatt "nur" eines Passwortes. Ein Passwort kann erraten werden, falls es nicht besonders sicher ist, bzw. durch Brute-Force Attacken ermittelt werden. Das Zertifikat kann zur Erhöhung der Sicherheit mit einem Passwort versehen werden. Im lokalen Netz ist dies eigentlich nicht unbedingt nötig. Wenn allerdings der Server via Internet per OpenSSH erreichbar sein soll (→ siehe hier, dann ist es empfehlenswert ein Passwort zu vergeben.

Der OpenSSH-Server verwendet den Public Key und der SSH-Client (Putty oder WinSCP zum Beispiel) authentifiziert sich als berechtigter User mit dem Private Key. Deshalb sollte der Private Key nie in fremde Hände geraten.

Generierung von Private und Public Key mittels Puttygen:

  • Start:Programme\Putty\Puttygen

Puttygen.JPG

  • Parameters: 1024 bit / Type=SSH
  • Button "Generate" anklicken.
  • Mauszeiger solange bewegen, bis der eingeblendete Fortschrittsbalken komplett ausgefült ist
  • Password vergeben (2x bei passphrase und confirm passphrase). Hinweis siehe einleteinder Absatz dieses Kapitels.
  • Private Key speichern, z.B. debian_private.ppk
  • den Public Key (Feld "Public Key for pasting into OpenSSH authorized_keys file") komplett mit der Maus markieren und STRG-C drücken, um ihn ins Clipboard zu übertragen.

Server konfigurieren

  • Folgendes Verzeichnis an der Console einrichten:
cd /root
mkdir .ssh
chmod og= .ssh
cd .ssh
  • Den Public Key an den Server per Copy&Paste via clipboard und Putty übertragen.
vi authorized_keys
    • <rechte Maustaste> betätigen, um den eben kopierten Public Key einzufügen
    • File abspeichern und editor beenden
  • Die Zugriffsrechte des Pubic Key anpassen:
chmod og= authorized_keys

Putty konfigurieren

  • Putty öffnen
  • Konfigurationsdaten wie → hier beschrieben
  • Zusätzlich im Bereich Connection/SSH/Auth (linker Options-Baum) das eben erstellte Private Key File ("Private key file for authentification") auswählen.
  • Zusätzlich im Bereich Connection/Data (linker Options-Baum) User root als Auto-login username eintragen
  • Open anklicken
  • Im sich öffnenden Fenster sollte erscheinen 'Using username "root".'
  • Es sollte keine normale Passwortabfrage wie vor der Einrichtung des Public Key-Verfahrens erscheinen, sondern:
    • Falls bei der Generierung des Keys in Puttygen ein Passwort vergeben wurde, wird dies hier abgefragt (Ausgabe in der Form):
Passphrase for key "rsa-key-20080906":
  • Nun sollte eine Ausgabe in der Form erscheinen:
Authenticating with public key "rsa-key-20080906"

WinSCP konfigurieren

  • WinSCP öffnen
  • Konfigurationsdaten wie → hier beschrieben
  • Zusätzlich: untere Private Keyfile den eben erstellten Private Key auswählen
  • login anklicken


Freigabe Internet

Um via Internet auf den Server zugreifen zu können, muß im DSL-Ruter noch eine Portfreigabe/Portweiterleitung eingerichtet werden. dazu muß ein Port aus dem Internet an Port 22 des Servers weitergeleitet werden. Es empfiehlt sich, einen anderen Port als 22 (z.B. 2200) aus dem Internet zu verwenden, da er dann bei Standard Portscans evtl. unbeachtet bleibt. Dies erhöht die Sicherheit vor Attacken aus dem Internet. Generell sollte ein sehr sicheres Passwort verwendet werden, noch besser Authentifizierung mittels → Public/Private Key mit sicherer Passwort Phrase (und abgeschalteter → Kennwortauthentifizierung), wenn ein Zugang aus dem Internet gewünscht wird.

Webseite des Routers öffnen und eine Portweiterleitung mit folgenden Daten einrichten:

Name/Bezeichung der Weiterleitung: z.B. Debian_SSH
Protokoll: TCP
Von Port: z.B. 2200
An IP-Adresse: IP_des_Servers
An Port: 22


Authorized Keys Only

Trotz eingerichtetem → Public-Key Verfahren, kann die Authentifizierung nachwievor mittels Passwort oder deutlich sicherer mittels Public/Private Key-Verfahren. Nun kann die Authentifizierung mittels Passwort abgeschaltet werden, so dass nur noch Verbindungen mittels passendem Schlüssel möglich sind. Allerdings sollte bedacht werden, dass jeder, der im Besitz des Schlüssels ist, sich einloggen kann, falls kein Schlüssel-Passwortschutz vergeben wurde. Weiterhin sollte bedacht werden, dass falls der Private Key verloren gehen sollte, z.B. durch Festplatten-Crash der Berechtigte User auch keinen Zugriff mehr hat. Deshalb sollte der Private Key zusätzlich an einem sicheren Ort aufbewahrt werden.

Voraussetzung: → Zugang mittels Public Key Abschnitt erfolgreich durchgeführt

Abschaltung der klassischen Passwort Authentifizierung:

vi /etc/ssh/sshd_config

Folgenden Eintrag ändern und evtl. auskommentieren (# Zeichen entfernen):

PasswordAuthentication no


Authorized Keys (Internet) / Password (lokal)

Eine Mischform aus Passwort- und Authorized Keys Methode wird nun beschrieben. Ein Einloggen aus dem Internet ist nur mittels Private-Key möglich (kein Einloggen mit Debian Passwort möglioch), der wiederum Passwortgeschützt sein sollte (Hinweise siehe oben). Aus dem lokalen Netz heraus ist sowhol Private/Public-Key als auch Passwortverfahren möglich.

Konfigfile editieren:

vi /etc/ssh/sshd_config

Passwortauthentication Global abschalten:

PasswordAuthentication no

Passwordauthentication aus dem lokalen Netzwerk erlauben (Dabei die ersten drei Stellen des Subnetzes (192.168.0) an die eigene Netzwerkarchitektur anpassen):

Match address 192.168.0.0/24
  PasswordAuthentication yes


SSH-Tunnel

Mit einem sog. SSH-Tunnel kann man beliebige andere TCP/IP Verbindungen über die verschlüsselte SSH-Verbindung übertragen. So ist es beispielsweise möglich, das unverschlüsselte FTP-Protokoll durch einen SSH-Tunnel zu verschlüsseln. Es ist auch möglich, z.B. das Webinterface eines Routers durch den SSH-Tunnel aus der Ferne aufzurufen, ohne dafür einen eigenen Port zu öffnen. Sinn macht ein SSH-Tunnel eigentlich nur, wenn SSH übers Internet zum Einsatz kommt.

Ein SSH-Tunnel wird mit Putty initiert. Solange die Putty-Verbindung besteht, ist auch der SSH-Tunnel aktiv und kann benutzt werden.


Aufbau eines SSH-Tunnels mit Putty:

Als Beispiel soll das Webinterface der Fritzbox mit IP-Adresse 192.168.178.1 auf Port 80, die Zu Hause steht, durch den SSH-Tunnel von einem entfernten Internet-PC aus aufgerufen werden, auf dem Putty installiert ist:

  • Einstellungen wie für eine normale oder Private/Public-Key Verbindung
  • Zusätzlich:
  • Im linken Baum Connection/SSH/Tunnels folgende Eingaben vornehmen
Source-Port: beliebiger Port auf dem lokalen PC, über den der Tunnel angesprochen werden soll - z.B: 3000
Destination: IP-Adresse:Port im Zielnetz - z.B 192.168.178.1:80
  • Button Add anklicken
  • Evtl. weitere Tunnels auf identische Art und Weise einfügen.
  • Evtl. die Session abspeichern
  • Button Open anklicken
  • Evtl. Username und Passwort eingeben, falls nicht Private/Public-Key Verfahren zum Einsatz kommt.


Benutzung des Tunnels:

Webbrowser öffnen und als Adresse http://localhost:3000 eingeben. Die Webseite der entfernten Fritzbox sollte nun angezeigt werden.