SSH/Fingerprint

Aus Foxwiki

topic - Kurzbeschreibung

Beschreibung

Sicherheit erhöhen
  • Identität des Computers prüfen
Sie authentifizieren sich entweder durch Eingabe eines Passworts oder Schlüsselaustausch
  • Eine Schwachstelle ist ein 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 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

Rechnerschlüssel prü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.

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 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.

Displaying fingerprints in other formats

Möglicherweise stellen Sie fest, dass der Fingerabdruck in einem anderen Format erstellt wird, als Sie es haben. In diesem Abschnitt erfahren Sie, wie Sie beim Verbindung den Herstellen einer ssh- Client dazu bringen, sie in verschiedenen Formaten , und wie Sie auf dem Server anzuzeigen ssh-keygen verschiedene Formatreferenzen generieren lassen.

Sie müssen möglicherweise mischen und anpassen, je nachdem, was Sie vor sich haben und wo Sie Befehle ausführen können.

Forcing MD5 hash in hexadecimal

Dies ist das oben gezeigte Format. Sie können zwingen ssh , dies so anzuzeigen:

$ ssh -o FingerprintHash=md5 host.example.org

SHA256 in base64

Dieses neue Format sieht wie folgt aus:

Die Echtheit des Hosts 'mint.phcomp.co.uk (78.32.209.33)' kann nicht festgestellt werden.
Der RSA-Schlüsselfingerabdruck ist SHA256:jP0pfKJ9OAXt2F+LM7j3+BMalQ/2Koihl5eH/kli6A4.
Möchten Sie die Verbindung wirklich fortsetzen (ja/nein)?

Diese können Sie anfordern mit:

$ ssh -o FingerprintHash=sha256 host.example.org

Sie können ssh-keygen anfordern , um es anzuzeigen:

$ ssh-keygen -l -E sha256 -f $file

Dies wird in OpenSSH 6.8 und höher verwendet. Der FingerprintHash ist in alten Versionen nicht verfügbar.

ASCII Art Visual Host Key

Dies zeigt den Hostschlüssel in einem Kästchen an und ist hoffentlich leichter zu erkennen als eine Zahlenfolge. Es kann verwendet werden, um sowohl MD5- als auch SHA256-Schlüssel anzuzeigen. Es sieht aus wie das:

Die Echtheit des Hosts 'mint.phcomp.co.uk (78.32.209.33)' kann nicht festgestellt werden.

Der RSA-Schlüsselfingerabdruck ist SHA256:jP0pfKJ9OAXt2F+LM7j3+BMalQ/2Koihl5eH/kli6A4.
+---[RSA 2048]----+
| |
| |
| . . |
| +. . = |
| . S= o + |
| .oo+.. oo|
| E.=***.= + |
| .=*=BoXo+ |
| .o+=o=+*o. |
+----[SHA256]-----+
Möchten Sie die Verbindung wirklich fortsetzen (ja/nein)?

Sie können anfordern ssh , um es so anzuzeigen:

ssh -o VisualHostKey=yes host.example.org

Sie können MD5- oder SHA256-Schlüssel anfordern, z. B. :

$ ssh -o VisualHostKey=yes -o FingerprintHash=sha256 host.example.org

Auf dem Server wird ssh-keygen angezeigt, wenn die -v angegeben wird Option . Kombinieren Sie dies mit -E md5 oder -E sha256 für den Fingerabdruck-Hash-Algorithmus:

ssh-keygen -lv -E sha256 -f $file

Checking of a ssh server key via DNS

Sie können den Fingerabdruck des Serverschlüssels in DNS (Domain Name System) einfügen und von ssh erfahren, ob die beiden Fingerabdrücke übereinstimmen. Dies ist keine Garantie, aber es erschwert Mallorys Arbeit, da er sowohl DNS als auch ssh fälschen muss, was möglich ist, da nur wenige Domains implementieren DNSSEC .

Configuring DNS

Generieren Sie die SSHFP-Fingerabdruckinformationen für den DNS:

cd /etc/ssh
für Datei in *sa_key.pub
do ssh-keygen -r freshmint.phcomp.co.uk -f $file -g
getan
freshmint.phcomp.co.uk IN TYPE44 \# 22 02 01 e8fe15b374207a2e6ee99bbbadc87ecd068c17f8
freshmint.phcomp.co.uk IN TYPE44 \# 22 01 01 e5091496bda76d015e89db0bf925ffb1b9d8facb

Die obige Ausgabe sollte für Bind-Versionen vor 9.5.0a1 verwendet werden , danach wird der SSHFP- RR-Typ verstanden:

freshmint.phcomp.co.uk IN SSHFP 02 01 e8fe15b374207a2e6ee99bbbadc87ecd068c17f8
freshmint.phcomp.co.uk IN SSHFP 01 01 e5091496bda76d015e89db0bf925ffb1b9d8facbGeben Sie die obigen 2 RR (Ressourceneinträge) in das DNS

für den Computer ein. Der komplette Datensatz für die Maschine sieht so aus: freshmint IN A 78.32.209.33 IN AAAA 2001:4d48:ad51:2f00::2:2 IN MX 10 frische Minze IN SSHFP 1 1 b4b8f2f051a16f57f69590c7c06aeaad039a3882 IN SSHFP 2 1 ea35c2064a5fc2ec9f51da2e7c790966f9844e59

mint IN CNAME freshmintÜberprüfen Sie mit ob dieses DNS-Update korrekt ist host -a your.machine.name , . Sie sollten die SSHFP- Zeilen wie oben sehen, obwohl sie bei alten Versionen Host- möglicherweise nicht richtig angezeigt werden, sondern wie: freshmint.phcomp.co.uk. 259200 IN TYP44 \# 22 0101b4b8f2f051a16f57f69590c7c06aeaad039a3882
freshmint.phcomp.co.uk. 259200 IN TYP44 \# 22 0201ea35c2064a5fc2ec9f51da2e7c790966f9844e59

Using the DNS SSHFP RR

Konfigurieren Sie Ihren lokalen ssh-Client, tun Sie dies nur für die Bearbeitung von $HOME/.ssh/config oder systemweit /etc/ssh/ssh_config (auf Minix: /usr/pkg/etc/ssh/ssh_config ):VerifyHostKeyDNS ask

Sie können dies auch in der Befehlszeile beim Verbinden angeben. Beachten Sie, wie Ihnen mitgeteilt wird, wie der DNS-Fingerabdruck übereinstimmt:

ssh -o VerifyHostKeyDNS=fragen freshmint.phcomp.co.uk 
Die Authentizität des Hosts 'freshmint.phcomp.co.uk (2001:4d48:ad51:2f00::2:2)' 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.
Übereinstimmender Hostschlüssel-Fingerabdruck im DNS gefunden.
Sind Sie sicher, dass Sie die Verbindung fortsetzen möchten (ja/nein)? Wenn der Fingerabdruck im DNS nicht übereinstimmt, sehen Sie Folgendes – vielleicht haben Sie ähnliches schon einmal gesehen, aber dies ist bei einer ersten Verbindung: ssh -o VerifyHostKeyDNS=ask freshmint.phcomp.co.uk
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
@ WARNUNG: REMOTE HOST IDENTIFIKATION HAT SICH GEÄNDERT! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
ES IST MÖGLICH, DASS JEMAND ETWAS BÖSE TUN!
Jemand könnte Sie gerade belauschen (Man-in-the-Middle-Angriff)!
Es ist auch möglich, dass der RSA-Hostschlüssel gerade geändert wurde.
Der Fingerabdruck für den vom Remote-Host gesendeten RSA-Schlüssel lautet
6a:de:e0:af:56:f8:0c:04:11:5b:ef:4d:49:ad:09:23.
Bitte kontaktieren Sie Ihren Systemadministrator.
Aktualisieren Sie den SSHFP-RR im DNS mit dem neuen Hostschlüssel, um diese Nachricht zu entfernen.
Die Authentizität des Hosts 'freshmint.phcomp.co.uk (2001:4d48:ad51:2f00::2:2)' 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.
Kein übereinstimmender Hostschlüssel-Fingerabdruck im DNS gefunden.
Möchten Sie die Verbindung wirklich fortsetzen (ja/nein)?

Konfiguration

Dateien

Siehe auch

Sicherheit

Man-Pages

  1. ssh-Manpage
  2. ssh-keygen-Manpage
  3. ssh_config-Manpage

Links

Weblinks

  1. OpenSSH/Cookbook ( https://en.wikibooks.org/wiki/OpenSSH/Cookbook/Public_Key_Authentication#Downloading_keys )
  2. Passwortlose Anmeldung mit SSH ( https://www.phcomp.co.uk/Tutorials/Unix-And-Linux/ssh-passwordless-login.html )

Technical bits

Schlüsseltypen, dies ist die erste Zahl im SSHFP RR
  1. 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 )
  2. DSA — 2 — Digitaler Signaturalgorithmus ( http://en.wikipedia.org/wiki/Digital_Signature_Algorithm )
  3. ECDSA — 3 — Elliptic Curve Digital Signature Algorithm ( http://en.wikipedia.org/wiki/Elliptic_Curve_DSA )
Wo die Schlüsseltypen verwendet werden

Überprüfen des Fingerabdrucks auf dem Server

Um Ihren Fingerabdruck zu überprüfen, loggen Sie sich über eine vertrauenswürdige Methode in Ihren VPS-Server ein (zum Beispiel über die Konsole in Ihrem BitLaunch-Kontrollpanel) und führen Sie den Befehl ssh-keygen aus, um den Fingerabdruck Ihres Schlüssels auszulesen:

ED25519:

  • SHA256: ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
  • MD5: ssh-keygen -E md5 -lf /etc/ssh/ssh_host_ed25519_key.pub

ECDSA:

  • SHA256: ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub
  • MD5: ssh-keygen -E md5 -lf /etc/ssh/ssh_host_ecdsa_key.pub

RSA:

  • SHA256: ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub
  • MD5: ssh-keygen -E md5 /etc/ssh/ssh_host_rsa_key.pub

DSA:

  • SHA256: ssh-keygen -lf /etc/ssh/ssh_host_dsa_key.pub
  • MD5: ssh-keygen -E md5 /etc/ssh/ssh_host_dsa_key.pub


  1. SSH-Version 1 – verwendet nur RSA. Sie sollten SSH Version 1 nicht verwenden, sie gilt nicht mehr als sicher
  2. SSH-Version 2 – RSA & DSA
  3. DNS SSHFP RR — RSA, DSA & kürzlich (2012) ECDSA ( http://www.iana.org/assignments/dns-sshfp-rr-parameters/dns-sshfp-rr-parameters.xml )
  4. Die zweite Zahl im SSHFP RR ist der Fingerabdrucktyp:
  5. SHA-1 — 1 — sicherer Hash-Algorithmus 1 ein 160-Bit-Nachrichtenauszug ( http://en.wikipedia.org/wiki/Sha-1 )
  6. SHA-256 — 2 — sichere Hash-Algorithmus 2 Familie ein 256-Bit-Nachrichtenauszug ( http://en.wikipedia.org/wiki/Sha-256 )