Good to Know Database

SSH-Fingerabdrücke mit Hilfe des Domain Name System (DNS) verteilen


Wenn Sie mit dem folgenden Befehl eine Verbindung zu einem SSH-Server aufbauen, müssen Sie beim ersten Verbindungsaufbau den Fingerabdruck des RSA-Schlüssels des Servers bestätigen. Dieser Schlüssel wird anschließend in der Datei ~/.ssh/known_hosts gespeichert.

[georg@centos5 ~]$ ssh root@server.home.lan
The authenticity of host 'server.home.lan (192.168.10.1)' can't be established.
RSA key fingerprint is f5:4e:20:32:13:d9:78:5a:42:1e:10:74:a2:ad:3b:98.
Are you sure you want to continue connecting (yes/no)?

Um den RSA-Fingerprint des Servers auszugeben, führen Sie folgenden Befehl auf dem Server aus.

[root@server ~]# ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key
2048 f5:4e:20:32:13:d9:78:5a:42:1e:10:74:a2:ad:3b:98 /etc/ssh/ssh_host_rsa_key.pub

Wenn beide RSA-Fingerprints übereinstimmen, können Sie die Überprüfung bestätigen und mit der SSH-Anmeldung fortfahren. Sollten Sie zu einem späteren Zeitpunkt erneut zur Überprüfung des RSA-Fingerprints aufgefordert werden, wurde entweder der SSH-Server neu eingerichtet oder Sie verbinden sich auf einen anderen (möglicherweise bösartigen) Server.

Das Problem bei diesem Verfahren ist, dass der Administrator des Servers Ihnen diesen Schlüssel auf irgendeinem Weg zur Verfügung stellen muss damit Sie den Schlüssel vor der Bestätigung überprüfen können. Als Lösung für dieses Problem bietet das Domain Name System (DNS) den Resource Record (RR) SSHFP (SSH-Fingerprint) an. Wenn Sie den SSH-Fingerprint zu Ihrer Zonendatei hinzufügen, kann ein SSH-Client mit der Option VerifyHostKeyDNS ask den Fingerabdruck automatisch abfragen und überprüfen.

Um dieses Verfahren nutzen zu können, erstellen Sie mit den folgenden Befehlen auf dem SSH-Server den RSA- und DSA-Resource Record für die Zonendatei.

[root@server ~]# ssh-keygen -f /etc/ssh/ssh_host_rsa_key -r server.home.lan
server.home.lan IN SSHFP 1 1 f3a097dc4e42d261e2cfac1db3f16e1676dc6cc9
[root@server ~]# ssh-keygen -f /etc/ssh/ssh_host_dsa_key -r server.home.lan
server.home.lan IN SSHFP 2 1 a6d4f39554daa6a02463fb172a3c142429a7bb32

Anschließend fügen Sie die Informationen in Ihre Zonendatei ein. Das folgende Listing zeigt eine Zonendatei mit den beiden SSHFP Resource Records.

$ORIGIN .
$TTL 172800     ; 2 days
home.lan                IN SOA  server.home.lan. root.server.home.lan. (
                                2009020100 ; serial
                                10800      ; refresh (3 hours)
                                900        ; retry (15 minutes)
                                604800     ; expire (1 week)
                                86400      ; minimum (1 day)
                                )
                        NS      server.home.lan.
                        MX      10 server.home.lan.
$ORIGIN home.lan.
ftp                     CNAME   server
mail                    CNAME   server
news                    CNAME   server
server                  A       192.168.10.1
                        SSHFP   1 1 (
                                F3A097DC4E42D261E2CFAC1DB3F16E1676DC6CC9 )
                        SSHFP   2 1 (
                                A6D4F39554DAA6A02463FB172A3C142429A7BB32 )
ns                      CNAME   server

Wenn Sie die Zonendatei angepasst und neu geladen haben, können Sie mit dem folgenden Befehl überprüfen ob die Resource Records im Domain Name System verfügbar sind.

[root@server ~]# dig -t SSHFP server.home.lan

; <<>> DiG 9.3.4-P1 <<>> -t SSHFP server.home.lan
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1462
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;server.home.lan. IN SSHFP

;; ANSWER SECTION:
server.home.lan. 172800 IN SSHFP 2 1 A6D4F39554DAA6A02463FB172A3C142429A7BB32
server.home.lan. 172800 IN SSHFP 1 1 F3A097DC4E42D261E2CFAC1DB3F16E1676DC6CC9

;; AUTHORITY SECTION:
home.lan. 172800 IN NS server.home.lan.

;; ADDITIONAL SECTION:
server.home.lan. 172800 IN A 192.168.10.1

;; Query time: 1 msec
;; SERVER: 192.168.10.1#53(192.168.10.1)
;; WHEN: Sun Feb  1 20:55:02 2009
;; MSG SIZE  rcvd: 130

Damit der SSH-Client die Informationen aus dem Domain Name System abfrägt und zur Überprüfung verwendet, müssen Sie die Option VerifyHostKeyDNS beim Verbindungsaufbau angeben und auf ask setzen.

[georg@centos5 ~]$ ssh -o "VerifyHostKeyDNS ask" root@server.home.lan
The authenticity of host 'server.home.lan (192.168.10.1)' can't be established.
RSA key fingerprint is f5:4e:20:32:13:d9:78:5a:42:1e:10:74:a2:ad:3b:98.
Matching host key fingerprint found in DNS.
Are you sure you want to continue connecting (yes/no)?

Wollen Sie die Option VerifyHostKeyDNS dauerhaft aktivieren, fügen Sie die folgende Zeile in die Datei /etc/ssh/ssh_config ein.

VerifyHostKeyDNS ask


Dieser Eintrag wurde am 01.02.2009 erstellt und zuletzt am 18.05.2009 bearbeitet.

Direkter Link zu dieser Seite: http://www.gtkdb.de/index_7_497.html

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer