Geschrieben von Beat Rubischon (Link) am
Samstag, 22. Dezember 2007, 17:34
aus dem *host-keys* dept.
Für einen Kunden musste ich ein Problem mit OpenMPI lösen und öffnete dazu wieder einmal die Manpage von OpenSSH. Wahnsinn, was das Programm alles kann!
Eine Idee ist es, die Fingerprints der SSH-Host Keys im DNS abzulegen. RFC4255 beschreibt das Verfahren. Da mein DNS sowieso schon fast alles drinn hat, musste das natürlich auch noch rein ;-)
Erst erstellt man mit ssh-keygen die Fingerprints:
max:~# ssh-keygen -r max -f /etc/ssh/ssh_host_rsa_key.pub
max IN SSHFP 1 1 a0cc98e7ee4cb1c8e79cd4ccae5332d1c4c023d1
max:~# ssh-keygen -r max -f /etc/ssh/ssh_host_dsa_key.pub
max IN SSHFP 2 1 d3f6f27f234d76f8169e99a419deb67bd2ceb0e1
Diese Records kommen in das Zonenfile. Doch war mein BIND alles andere als zufrieden damit:
Dec 22 16:49:25 max named[22054]:
dns_master_load: /etc/bind/db.0x1b.ch:133: unknown RR type 'SSHFP'
Also die Fingerprints mit dem optionalen Parameter noch einmal bauen:
max:~# ssh-keygen -r max -f /etc/ssh/ssh_host_rsa_key.pub -g
max IN TYPE44 \# 22 01 01 a0cc98e7ee4cb1c8e79cd4ccae5332d1c4c023d1
max:~# ssh-keygen -r max -f /etc/ssh/ssh_host_dsa_key.pub -g
max IN TYPE44 \# 22 02 01 d3f6f27f234d76f8169e99a419deb67bd2ceb0e1
Diese finden nun wunderbar Platz im Zonenfile, der BIND ist happy.
Auf der Client Seite braucht es allerdings noch eine Option im .ssh/config bzw. /etc/ssh/ssh_conf, damit der Check aktiv wird:
Host *
StrictHostKeyChecking ask
VerifyHostKeyDNS ask
Danach findet die Anfrage tatsächlich statt - Key vorab löschen nicht vergessen:
beat@melone:~$ ssh max
The authenticity of host 'max.0x1b.ch (212.25.17.162)'
can't be established.
RSA key fingerprint is 52:1c:59:85:29:d6:75:43:a4:5f:9f:05:d7:f8:0f:0e.
Matching host key fingerprint found in DNS.
Are you sure you want to continue connecting (yes/no)? yes
Ein interessantes Konzept - auch wenn DNSSEC aktuell noch kein Thema ist.
Permalink
|