SSH/Fingerprint: Unterschied zwischen den Versionen

Aus Foxwiki
 
(45 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
'''topic''' - Kurzbeschreibung
'''Fingerabdruck eines SSH-Servers prüfen'''
 
== Beschreibung ==
== Beschreibung ==
; Erhöhen Sie die Sicherheit
Die Überprüfung der Authentizität Ihres Servers ist wichtig, wenn Sie sich zum ersten Mal mit ihm verbinden
* indem Sie die Identität des Computers überprüfen
* mit dem Sie sich mit ssh per Auge und mit SSHFP in DNS verbinden
 
* [http://en.wikipedia.org/wiki/Secure_Shell Mit ssh] können Sie eine Verbindung zu einem Remote-Computer herstellen, wobei die Daten zwischen den beiden Computern verschlüsselt werden.
 
Sie können dann sicher tun:
* Kommandozeilen-Login
* Dateikopie
* Tunnel anderer Protokolle (zB: rsync, X11), ...
 
Sie authentifizieren sich entweder durch Eingabe eines Passworts oder [https://www.phcomp.co.uk/Tutorials/Unix-And-Linux/ssh-passwordless-login.html Schlüsselaustausch]
* Eine große Schwachstelle ist ein [http://en.wikipedia.org/wiki/Man-in-the-middle_attack Man-in-the-Middle-Angriff,] bei dem eine böswillige Snooping-Einheit (Mallory) zwischen Ihnen und dem Remote-Computer den gesamten Datenverkehr abfängt, entschlüsselt und erneut verschlüsselt, bevor er weitergesendet wird.
* Mallory kann dies schnell genug tun, sodass Sie sich seiner Existenz nicht bewusst sind.
* Zum Schutz gegen dem Ihr ssh Programm prüft die Fernbedienung des SSH Servers Fingerabdruck mit dem Fingerabdruck vom letzten Mal gespeichert angeschlossen.
* Wenn sich der Fingerabdruck geändert hat, werden Sie gewarnt und gefragt, ob Sie fortfahren möchten.
* In [http://en.wikipedia.org/wiki/Openssh openssh] (dem ssh, das auf den meisten Linux-Systemen verwendet wird) wird dieser Fingerabdruck in $HOME/.ssh/known_hosts gespeichert
* Der Fingerabdruck ist eine Kurzversion des öffentlichen Schlüssels des Servers
* Es ist für Sie einfacher zu überprüfen als der vollständige Schlüssel.
* Es ist sehr schwer, einen anderen öffentlichen Schlüssel mit demselben Fingerabdruck zu fälschen.
 
== Fingerprint manuell prüfen  ==
Wenn Sie zum ersten Mal eine Verbindung zu einem Computer herstellen, werden Sie darauf hingewiesen, dass die Authentizität nicht festgestellt werden kann und erhalten einen Schlüssel-Fingerabdruck zur Überprüfung. Etwas wie das:
 
Die Echtheit des Hosts 'mint.phcomp.co.uk (78.32.209.33)' kann nicht festgestellt werden.
Der Fingerabdruck des RSA-Schlüssels lautet 6a:de:e0:af:56:f8:0c:04:11:5b:ef:4d:49:ad:09:23.
Möchten Sie die Verbindung wirklich fortsetzen (ja/nein)?  Nein
 
Möglicherweise stellen Sie fest, dass der Fingerabdruck in einem anderen Format angezeigt wird – lesen Sie einfach weiter.
 
Um den Fingerabdruck überprüfen zu können, müssen Sie wissen, was es ist. Sie werden wahrscheinlich die finden PUB Dateien in / etc / ssh / die enthalten [https://www.phcomp.co.uk/Tutorials/Unix-And-Linux/ssh-check-server-fingerprint.html#KeyTypes RSA & DSA Schlüssel ]. Dadurch werden die Fingerabdrücke generiert, die Sie überprüfen können:
cd /etc/ssh
für Datei in *sa_key.pub
do ssh-keygen -lf $file
getan
 
Es macht wenig Sinn, dies zu tun, nachdem Sie sich eingeloggt haben, ein ausreichend genialer Mallory könnte das, was die oben Generierten im Handumdrehen erzeugen, so ändern, dass Sie sehen, was er Ihnen zeigen möchte. Dies muss erledigt vorher werden und Sie können es dann mit dem, was Sie sehen, überprüfen. Sie können die Fingerabdrücke ausdrucken und in Ihrer Aktentasche oder Brieftasche aufbewahren.
 
== Rechnerschlüssel überprüfen ==
* Wenn Sie zum ersten Mal eine Verbindung zu einem Computer herstellen, haben Sie den Fingerabdruck nicht in Ihren bekannten_hosts keinen, also hat ssh Vergleich, also fragt es Sie.
* Diese Seite beschreibt Möglichkeiten, wie Sie mehr tun können, als nur blind sagen Ja zu.
* Bei der erstmaligen Verbindung zu einem Server wird dem Benutzer ein Fingerabdruck des öffentlichen Schlüssels des Servers angezeigt (außer die Option StrictHostKeyChecking wurde deaktiviert).
 
Fingerabdrücke können mittels ssh-keygen(1) ermittelt werden:
$ ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key
 
* Falls der Fingerabdruck bereits bekannt ist, kann er verglichen und der Schlüssel akzeptiert oder zurückgewiesen werden.
* Falls nur veraltete (MD5) Fingerabdrücke für den Server verfügbar sind, kann die Option -E von ssh-keygen(1) verwandt werden, um den Fingerabdruck-Algorithmus zum Vergleichen herunterzustufen.
 
* Da es schwierig ist, Rechnerschlüssel nur durch Anschauen von Fingerabdruck-Zeichenketten zu vergleichen, wird auch der visuelle Vergleich mittels Random Art (ASCII-Visualisierung) unterstützt.
* Wird die Option VisualHostKey auf “yes” gesetzt, dann wird bei jeder Anmeldung an einem Server eine kleine ASCII-Graphik angezeigt, unabhängig davon, ob die Sitzung selbst interaktiv ist oder nicht.
* Indem der Benutzer das vom Rechner verwandte Muster lernt, kann er leicht herausfinden, wenn sich der Rechnerschlüssel geändert hat und ein komplett anderes Muster angezeigt wird.
* Da diese Muster aber nicht eindeutig sind, wird ein Muster, das einem Muster aus der Erinnerung ähnlich sieht, nur eine gute Wahrscheinlichkeit dafür geben, dass der Rechnerschlüssel unverändert ist, kein garantierter Beweis.
 
Um zusammen mit der zufälligen Kunst die Fingerabdrücke für alle bekannten Rechner anzuzeigen, kann folgender Befehl verwandt werden:
$ ssh-keygen -lv -f ~/.ssh/known_hosts
 
Falls ein Fingerabdruck unbekannt ist, ist eine alternative Methode zur Überprüfung verfügbar: Durch DNS-bestätigte SSH-Fingerabdrücke. Ein zusätzlicher Ressourcendatensatz (RR), SSHFP, wird zu einer Zonendatei hinzugefügt und der verbindende Client ist in der Lage, den Fingerabdruck mit dem angebotenen zu vergleichen.
 
In diesem Beispiel findet eine Verbindung eines Clients mit einem Server “host.example.com” statt. Die SSHFP-Ressourcendatensätze sollten zuerst zu der Zonendatei für host.example.com hinzugefügt werden:
$ ssh-keygen -r host.example.com.
 
Die Ausgabezeilen müssen zu der Zonendatei hinzugefügt werden. So überprüfen Sie, ob die Zone auf Fingerabdruckanfragen antwortet:
$ dig -t SSHFP host.example.com
 
Schießlich verbindet sich der Client:
$ ssh -o "VerifyHostKeyDNS ask" host.example.com
[…]
Matching host key fingerprint found in DNS.
Are you sure you want to continue connecting (yes/no)?
 
Lesen Sie die Option VerifyHostKeyDNS in ssh_config(5) für weitere Informationen.
 
=== SSH-BASIERTE VIRTUELLE PRIVATE NETZWERKE ===
ssh unterstützt „Virtual Private Network“- (VPN-)Tunneln mittels des tun(4) -Netzwerk-Pseudogerätes. Damit wird es möglich, zwei Netzwerke sicher zu verbinden. Die Konfigurationsoption PermitTunnel von sshd_config(5) steuert, ob und falls ja auf welcher Stufe (Layer 2- oder 3-Verkehr) der Server dies unterstützt.
 
Das folgende Beispiel würde das Client-Netzwerk 10.0.50.0/24 mit dem fernen Netzwerk 10.0.99.0/24 unter Verwendung einer Punkt-zu-Punkt-Verbindung von 10.1.1.1 nach 10.1.1.2 verbinden, vorausgesetzt, dass der auf dem Gateway zu dem fernen Netzwerk laufende SSH-Server, auf 192.168.1.15, dies erlauben würde:


; Auf dem Client
=== Authentizität eines entfernten Hosts ===
# ssh -f -w 0:1 192.168.1.15 true
; Warum die SSH-Fingerabdruckprüfung wichtig ist
# ifconfig tun0 10.1.1.1 10.1.1.2 netmask 255.255.255.252
SSH-Verbindungen sind am verwundbarsten, wenn Sie sich zum ersten Mal mit einem Server verbinden
# route add 10.0.99.0/24 10.1.1.2
* Nachdem Sie zum ersten Mal eine Verbindung zu einem Server hergestellt haben, speichert der SSH-Client seinen Fingerabdruck


; Auf dem Server
* Wenn sich dieser Fingerabdruck dann ändert, weil jemand versucht, Sie mit einem bösartigen Server zu verbinden, wird Ihr SSH-Client Sie warnen, dass sich der Fingerabdruck geändert hat
# ifconfig tun1 10.1.1.2 10.1.1.1 netmask 255.255.255.252
# route add 10.0.50.0/24 10.1.1.1


Der Client-Zugriff kann mittels der nachfolgend beschriebenen Datei /root/.ssh/authorized_keys und der Server-Option PermitRootLogin feiner gesteuert werden. Der folgende Eintrag würde Verbindungen auf dem tun(4) -Gerät 1 von Benutzer “jane” und auf dem Tun-Gerät 2 von Benutzer “john” erlauben, falls PermitRootLogin auf “forced-commands-only” gesetzt ist:
Wenn Sie sich zum ersten Mal mit einem Server verbinden, war Ihr Client nicht in der Lage, seinen Fingerabdruck zu protokollieren und zu überprüfen, ob er korrekt ist
* Daher kann ein Angreifer erfolgreich einen Man-in-the-Middle-Angriff durchführen
* Die einzige Möglichkeit, um sicherzustellen, dass Sie sich von Anfang an mit dem richtigen Server verbinden, besteht darin, den Fingerabdruck Ihres SSH-Schlüssels manuell zu überprüfen


  tunnel="1",command="sh /etc/netstart tun1" ssh-rsa … jane
== Fingerabdruck eines SSH-Schlüssels überprüfen ==
tunnel="2",command="sh /etc/netstart tun2" ssh-rsa … john
Bevor Sie Ihren Fingerabdruck überprüfen können, müssen Sie den dafür verwendeten Algorithmus kennen
* Dieser sollte aus dem Inhalt Ihrer Nachricht hervorgehen
  <code>Die Authentizität des Hosts '172.86.75.163 (172.86.75.163)' kann nicht festgestellt werden.ED25519 key fingerprint is SHA256:NTw36MQjDxsHlxC/Xso5yKMlKJu93uYknRx2LEaqk7I.This key is not known by any other namesSind Sie sicher, dass Sie die Verbindung fortsetzen möchten (ja/nein/[fingerprint])?</code>
Sie können sehen, dass unser Schlüssel den Algorithmus '''ED25519''' verwendet und mit '''SHA256''' gehasht wird
* Sie sollten sich dies notieren, ebenso wie den Fingerabdruck selbst, in diesem Fall <code>NTw36MQjDxsHlxC/Xso5yKMlKJu93uYknRx2LEaqk7I</code>


Da eine SSH-basierte-Installation einen ordentlichen Aufwand verursacht, könnte sie mehr für temporäre Installationen, wie für drahtlose VPNs, geeignet sein. Dauerhafte VPNs werden besser durch Werkzeuge wie ipsecctl(8) und isakmpd(8) bereitgestellt.
Ihr Schlüsselalgorithmus könnte auch ECDSA, RSA und DSA sein, und Ihr Hashing-Algorithmus könnte MD5 statt SHA sein


== Anwendungen ==
=== Überprüfen des Fingerabdrucks auf dem Server ===
=== Fehlerbehebung ===
Loggen Sie sich über eine vertrauenswürdige Methode in Ihren Server ein
== Konfiguration ==
=== Dateien ===
== Siehe auch ==
=== Unterseiten ===
{{Special:PrefixIndex/{{BASEPAGENAME}}}}
=== Sicherheit ===
=== Dokumentation ===
==== RFC ====
==== Man-Pages ====
# ssh-Manpage
# ssh-keygen-Manpage
# ssh_config-Manpage


==== Info-Pages ====
Führen Sie den Befehl ssh-keygen aus, um den Fingerabdruck Ihres Schlüssels auszulesen
=== Links ===
; SHA256
==== Einzelnachweise ====
ssh-keygen -lf [Datei]]
<references />
==== Projekt ====
==== Weblinks ====
# OpenSSH/Cookbook ( [https://en.wikibooks.org/wiki/OpenSSH/Cookbook/Public_Key_Authentication#Downloading_keys https://en.wikibooks.org/wiki/OpenSSH/Cookbook/Public_Key_Authentication#Downloading_keys ])
# Passwortlose Anmeldung mit SSH ( [https://www.phcomp.co.uk/Tutorials/Unix-And-Linux/ssh-passwordless-login.html https://www.phcomp.co.uk/Tutorials/Unix-And-Linux/ssh-passwordless-login.html ])


==== Technical bits  ====
; MD5
; Schlüsseltypen, dies ist die erste Zahl im SSHFP RR:
ssh-keygen -E md5 -lf [Datei]
# RSA — 1 — ein von Ron Rivest, Adi Shamir und Leonard Adleman erfundener Kryptografiesalgorithmus mit öffentlichem Schlüssel ( [http://en.wikipedia.org/wiki/RSA_%28algorithm%29 http://en.wikipedia.org/wiki/RSA_%28algorithm%29 ])
# DSA — 2 — Digitaler Signaturalgorithmus ( [http://en.wikipedia.org/wiki/Digital_Signature_Algorithm http://en.wikipedia.org/wiki/Digital_Signature_Algorithm ])
# ECDSA — 3 — Elliptic Curve Digital Signature Algorithm ( [http://en.wikipedia.org/wiki/Elliptic_Curve_DSA http://en.wikipedia.org/wiki/Elliptic_Curve_DSA ])


; Wo die Schlüsseltypen verwendet werden:
{| class="wikitable options"
# SSH-Version 1 – verwendet nur RSA. Sie sollten SSH Version 1 nicht verwenden, sie gilt nicht mehr als sicher
|-
# SSH-Version 2 – RSA & DSA
! !! Datei
# DNS SSHFP RR — RSA, DSA & kürzlich (2012) ECDSA ( [http://www.iana.org/assignments/dns- http://www.iana.org/assignments/dns-sshfp-rr-parameters/dns-sshfp-rr-parameters.xml ])
|-
# Die zweite Zahl im SSHFP RR ist der Fingerabdrucktyp:
| [[ED25519]] || /etc/ssh/ssh_host_ed25519_key.pub
# SHA-1 — 1 — sicherer Hash-Algorithmus 1 ein 160-Bit-Nachrichtenauszug ( [http://en.wikipedia.org/wiki/Sha-1 http://en.wikipedia.org/wiki/Sha-1 ])
|-
# SHA-256 — 2 — sichere Hash-Algorithmus 2 Familie ein 256-Bit-Nachrichtenauszug ( [http://en.wikipedia.org/wiki/Sha-256 http://en.wikipedia.org/wiki/Sha-256 ])
| [[ECDSA]] || /etc/ssh/ssh_host_ecdsa_key.pub
|-
| [[RSA]] || /etc/ssh/ssh_host_rsa_key.pub
|-
| [[DSA]] || /etc/ssh/ssh_host_dsa_key.pub
|}


[[Kategorie:Secure Shell]]
; Beispiel
  ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
256 SHA256:NTw36MQjDxsHlxC/Xso5yKMlKJu93uYknRx2LEaqk7I root@6311ad8b487e6f00018c5cd1 (ED25519)


== Testfragen ==
Wenn die Ausgabe nicht mit dem Fingerabdruck übereinstimmt, den Sie zuvor notiert haben, '''stellen Sie keine Verbindung zum Server her!'''
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 1''
<div class="mw-collapsible-content">'''Antwort1'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 2''
<div class="mw-collapsible-content">'''Antwort2'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 3''
<div class="mw-collapsible-content">'''Antwort3'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 4''
<div class="mw-collapsible-content">'''Antwort4'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 5''
<div class="mw-collapsible-content">'''Antwort5'''</div>
</div>


= TMP =
[[Kategorie:SSH]]

Aktuelle Version vom 29. April 2024, 11:58 Uhr

Fingerabdruck eines SSH-Servers prüfen

Beschreibung

Die Überprüfung der Authentizität Ihres Servers ist wichtig, wenn Sie sich zum ersten Mal mit ihm verbinden

Authentizität eines entfernten Hosts

Warum die SSH-Fingerabdruckprüfung wichtig ist

SSH-Verbindungen sind am verwundbarsten, wenn Sie sich zum ersten Mal mit einem Server verbinden

  • Nachdem Sie zum ersten Mal eine Verbindung zu einem Server hergestellt haben, speichert der SSH-Client seinen Fingerabdruck
  • Wenn sich dieser Fingerabdruck dann ändert, weil jemand versucht, Sie mit einem bösartigen Server zu verbinden, wird Ihr SSH-Client Sie warnen, dass sich der Fingerabdruck geändert hat

Wenn Sie sich zum ersten Mal mit einem Server verbinden, war Ihr Client nicht in der Lage, seinen Fingerabdruck zu protokollieren und zu überprüfen, ob er korrekt ist

  • Daher kann ein Angreifer erfolgreich einen Man-in-the-Middle-Angriff durchführen
  • Die einzige Möglichkeit, um sicherzustellen, dass Sie sich von Anfang an mit dem richtigen Server verbinden, besteht darin, den Fingerabdruck Ihres SSH-Schlüssels manuell zu überprüfen

Fingerabdruck eines SSH-Schlüssels überprüfen

Bevor Sie Ihren Fingerabdruck überprüfen können, müssen Sie den dafür verwendeten Algorithmus kennen

  • Dieser sollte aus dem Inhalt Ihrer Nachricht hervorgehen
Die Authentizität des Hosts '172.86.75.163 (172.86.75.163)' kann nicht festgestellt werden.ED25519 key fingerprint is SHA256:NTw36MQjDxsHlxC/Xso5yKMlKJu93uYknRx2LEaqk7I.This key is not known by any other namesSind Sie sicher, dass Sie die Verbindung fortsetzen möchten (ja/nein/[fingerprint])?

Sie können sehen, dass unser Schlüssel den Algorithmus ED25519 verwendet und mit SHA256 gehasht wird

  • Sie sollten sich dies notieren, ebenso wie den Fingerabdruck selbst, in diesem Fall NTw36MQjDxsHlxC/Xso5yKMlKJu93uYknRx2LEaqk7I

Ihr Schlüsselalgorithmus könnte auch ECDSA, RSA und DSA sein, und Ihr Hashing-Algorithmus könnte MD5 statt SHA sein

Überprüfen des Fingerabdrucks auf dem Server

Loggen Sie sich über eine vertrauenswürdige Methode in Ihren Server ein

Führen Sie den Befehl ssh-keygen aus, um den Fingerabdruck Ihres Schlüssels auszulesen

SHA256
ssh-keygen -lf [Datei]]
MD5
ssh-keygen -E md5 -lf [Datei]
Datei
ED25519 /etc/ssh/ssh_host_ed25519_key.pub
ECDSA /etc/ssh/ssh_host_ecdsa_key.pub
RSA /etc/ssh/ssh_host_rsa_key.pub
DSA /etc/ssh/ssh_host_dsa_key.pub
Beispiel
 ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
256 SHA256:NTw36MQjDxsHlxC/Xso5yKMlKJu93uYknRx2LEaqk7I root@6311ad8b487e6f00018c5cd1 (ED25519)

Wenn die Ausgabe nicht mit dem Fingerabdruck übereinstimmt, den Sie zuvor notiert haben, stellen Sie keine Verbindung zum Server her!