LPIC102/110.3 Daten durch Kryptografie schützen: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 174: | Zeile 174: | ||
Wenn es sich um keine echte man-in-the-middle-attack handelt, entfernt man mithilfe eines Editors den veralteten Schlüssel aus der known_hosts-Datei und baut die Verbindung erneut auf. | Wenn es sich um keine echte man-in-the-middle-attack handelt, entfernt man mithilfe eines Editors den veralteten Schlüssel aus der known_hosts-Datei und baut die Verbindung erneut auf. | ||
[[Category:Linux]] |
Version vom 17. Juli 2019, 09:01 Uhr
Ausführliche Informationen zur Funktionsweise von SSH werden im Artikel SSH (secure shell) erläutert.
In diesem Artikel geht es nur um LPIC prüfungsrelevante Themen zu SSH.
Wichtigste Wissensgebiete
- einen OpenSSH-2-Client grundlegend konfigurieren und verwenden
- die Rolle von OpenSSH-2-Rechnerschlüsseln verstehen
- GnuPG grundlegend konfigurieren und verwenden
- GPG verwenden um Dateien zu verschlüsseln, entschlüsseln, signieren und zu überprüfen
- SSH-Port-Tunnel (auch X11-Tunnel) verstehen
Liste wichtiger Dateien, Verzeichnisse und Anwendungen
- ssh
- ssh-keygen
- ssh-agent
- ssh-add
- ~/.ssh/id_rsa und id_rsa.pub
- ~/.ssh/id_dsa und id_dsa.pub
- ~/.ssh/id_ecdsa und id_ecdsa.pub
- ~/.ssh/id_ed25519 und id_ed25519.pub
- /etc/ssh/ssh_host_rsa_key und ssh_host_rsa_key.pub
- /etc/ssh/ssh_host_dsa_key und ssh_host_dsa_key.pub
- /etc/ssh/ssh_host_ecdsa_key und ssh_host_ecdsa_key.pub
- /etc/ssh/ssh_host_ed25519_key und ssh_host_ed25519_key.pub
- ~/.ssh/authorized_keys
- ssh_known_hosts
- gpg
- gpg-agent
- ~/.gnupg/
SSH verwenden
Das Paket openssh-server installiert die serverseitige Komponente von SSH.
Folgende Befehle starten unter systemd den SSH Dienst.
user:~ # systemctl start sshd.service user:~ # systemctl enable sshd.service
SSH-Client-Verbindung
Um eine Verbindung zwischen zwei Linux-Systemen aufzubauen, startet man ssh und übergibt den Host-Namen bzw. die IP-Adresse.
Anschliessend folgt die Eingabe eines Kennwortes:
# ssh server root@server's password:
Möchte man sich nicht mit seinem lokalen Benutzerkonto anmelden, gibt es zwei Wege:
# ssh -l willi server # ssh willi@server
Grafische Anwendungen unter X tunneln
Zuerst wird die SSH-Verbindung von einem X-Terminal aus mit der zusätzlichen Option -X (großes X) initiiert.
# ssh -l willi -X server
Auf der Konsole des Remote-Systems führt man die Anwendung aus:
user@server's password: user@server:~ # openoffice
Die grafische Ausgabe und die Bedienung erfolgt lokal am SSH-Client-Rechner.
Das hier beschriebene Verfahren wird als X11-Tunnel bezeichnet.
Weiterleitung anderer Ports durch einen SSH-Tunnel.
Als Beispiel, der Zugriff auf einen Terminalserver im entfernten Netzwerk hinter einem SSH-Server.
IP-Adresse des Terminalservers 192.168.50.10
Terminalserver lauscht an Port 3389
IP des SSH-Server 119.117.63.126
Zunächst wird die SSH-Verbindung initiiert:
# ssh 119.117.63.126 -L 4711:192.168.50.10:3389
Option -L leitet Port 4711 an 192.168.50.10 mit Portnummer 3389 weiter.
Verbindungen werden an 192.168.50.10:3389 weitergeleitet.
Terminal-Dienste-Clients (z. B. remmina) nutzen nun als Ziel localhost:4711
Hinweis
Auch vom Windows-Computer aus kann mittels PuTTy auf einen Linux-Host zugegriffen werden.
Läuft ein X-Server auf dem Windows-Computer (z. B. Xming oder Cygwin), ist auch das Tunneln von Ports inklusive X11 durchführbar.
Wiki Artikel zu PuTTy
PuTTY - ein freier SSH-Client
SSH-Konfigurationsdateien
/etc/ssh/sshd_config
Die Konfigurationsdatei sshd_config dient der Konfiguration von sshd, also den SSH-Server.
z.B.
Port 22 Protocol 2 ListenAddress 192.168.0.58 PermitRootLogin no HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_ecdsa_key HostKey /etc/ssh/ssh_host_ed25519_key
Erklärung:
- sshd verwendet den Standardport 22.
- Ausschließlich SSH-2-Verbindungen.
- Zugriff auf Schnittstelle des Rechners: 192.168.0.58
- Kein login für root.
- Als Hostkey kommen RSA, ECDSA und Ed25519 in Frage.
Auf Schlüssel wird etwas später näher eingegangen.
/etc/ssh/ssh_config
Die Konfigurationsdatei ssh_config dient der clientseitigen Konfiguration von SSH.
z.B.
- Clientseitige X11-Weiterleitung oder Passwortauthentifizierung
- RSA-Authentifizierung aktiv/inaktiv
- Standardport für ausgehende Verbindungen festlegen
Die Optionsnamen innerhalb dieser Datei sind ansonsten selbsterklärend.
ACHTUNG! Die beiden gerade besprochenen Dateien kann man aufgrund ihrer Namensähnlichkeit schnell verwechseln.
/etc/hosts.allow und /etc/hosts.deny
Die Dateien /etc/hosts.allow und /etc/hosts.deny steuern wie die oben beschriebenen Dateien, den Zugriff auf SSH. Wie diese beiden Dateien benutzt werden, wird an anderer Stelle beschrieben.
Wichtig für die Prüfung: Die Datei hosts.allow hat Vorrang vor der Datei hosts.deny - Wird einem Host der Zugriff auf SSH durch hosts.allow gewährt, kann das durch keinen Eintrag in hosts.deny zurückgenommen werden.
/etc/nologin
Mit dem erstellen einer leeren Datei namens /etc/nologin lässt sich der Zugriff auf SSH verhindern. Nur root kann sich dann noch am System anmelden. In dieser Datei kann auch eine Nachricht an Benutzer hinterlassen werden die sich lokal anmelden wollen.
Authentifizierung der Server mit Schlüsseln
Server authentifiziert sich gegenüber dem Client mit seinem Hostkey.
Ist der Ziel-Host dem Client noch nicht bekannt, erfolgt eine Warnmeldung.
In der Meldung erscheint auch der Fingerprint des Hostkeys:
[root@scientific /]# ssh uvm1.nwa-net.de The authenticity of host uvm1.nwa-net.de (176.95.26.236)' can't be established. ECDSA key fingerprint is SHA256:TbVCtl6TJHAHacrTdwh9gqzvx8fB5bzhi1lL/ByFbYE. ECDSA key fingerprint is MD5:c8:db:4a:6f:99:7a:e9:9d:ca:82:c7:36:99:ac:14:c9. Are you sure you want to continue connecting (yes/no)?
Bestätigt man mit yes, wird der Hostkey des Servers in die Datei ~./ssh/known_hosts des Benutzers eingetragen und die Verbindung hergestellt.
Bei späteren Anmeldungen entfällt entsprechend die Warnmeldung.
Eine Liste der bekannten Hosts können Sie mithilfe des folgenden Kommandos bekommen:
[root@scientific /]# ssh-keygen -l -f ~/.ssh/known_hosts 256 SHA256:VOrsAcZc//9EiAATV2DfSN2jHONQBEuJpyrmW+Q3CWQ user,192.168.178.2 (ECDSA) 256 SHA256:TbVCtl6TJHAHacrTdwh9gqzvx8fB5bzhi1lL/ByFbYE uvm1.nwa-net.de,176.95.26.236 (ECDSA)
Ändert sich der Schlüssel eines Zielsystems, erfolgt die Warnmeldung:
$ ssh scientific @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the ECDSA key sent by the remote host is SHA256:r+9OEu2EM5ubr0P5wl4lLgUo5n/8/AkX2exIiPqQ9rs. Please contact your system administrator. Add correct host key in /root/.ssh/known_hosts to get rid of this message. Offending ECDSA key in /root/.ssh/known_hosts:15 ECDSA host key for scientific has changed and you have requested strict checking. Host key verification failed.
Wenn es sich um keine echte man-in-the-middle-attack handelt, entfernt man mithilfe eines Editors den veralteten Schlüssel aus der known_hosts-Datei und baut die Verbindung erneut auf.