dns sshfp record für alle Algorithmen gleichzeitig erstellen
Wie ich schon vor einigen Jahren geschrieben habe, kann man die SSH fingerprints im DNS hinterlegen, um SSH Verbindungen zu validieren.
# dig -t sshfp blog.chr.istoph.de
;; ANSWER SECTION:
blog.chr.istoph.de. 7199 IN SSHFP 1 1 D931B1124CC5DA23DB2131C62BA9D286081E3EA7
...
Dafür hinterlegt man die Secure Hash Algorithm (SHA) Summen im DNS:
ssh-keygen -r blog.chr -f /etc/ssh/ssh_host_rsa_key.pub
blog IN SSHFP 1 1 d931b1124cc5da23db2131c62ba9d286081e3ea7
blog IN SSHFP 1 2 0fe30bacf0833a9051a74cec431af450ceeca4171b3da5bf0550ada55adadbfa
Jetzt gibt es aber neue Algorithmen die in SSH Einzug erhalten haben.
1: RSA
2: DSA
3: ECDSA
4: ED25519
Da man mit ssh-keygen
immer nur einen Key haschen kann und die neue Kurve ED25519 noch nicht von Ubuntu 14.04. unterstützt wird siehe Beispiel:
ssh-keygen -r blog.chr -f /etc/ssh/ssh_host_ed25519_key.pub
export_dns_rr: unsupported algorithm and/or digest_type
So habe ich mir ein Skript geschrieben, das mir alle Fingerprints auf einmal erstellt.
#!/bin/bash
domain="$1"
if [ "$domain" = "" ]; then
echo $0 domain
exit 0
fi
function sshfp() {
a=$1 #algorithmus
f=$2 #file
echo $domain IN SSHFP $a 1 $(awk '{print $2}' $f|base64 -d|sha1sum|awk '{print $1}')
echo $domain IN SSHFP $a 2 $(awk '{print $2}' $f|base64 -d|sha256sum|awk '{print $1}')
}
for f in /etc/ssh/ssh_host_*_key.pub; do
case "$(echo $f|awk -F '_' '{print $3}')"
in
rsa)
sshfp 1 $f
;;
dsa)
sshfp 2 $f
;;
ecdsa)
sshfp 3 $f
;;
ed25519)
sshfp 4 $f
;;
esac
done | sort
Die Ausgabe sieht dann folgendermaßen aus:
# sshfp.sh blog.chr
blog.chr IN SSHFP 1 1 d931b1124cc5da23db2131c62ba9d286081e3ea7
blog.chr IN SSHFP 1 2 0fe30bacf0833a9051a74cec431af450ceeca4171b3da5bf0550ada55adadbfa
blog.chr IN SSHFP 2 1 e7814b2ea3e1aea80e24bbdaf41d1e6bed1b4680
blog.chr IN SSHFP 2 2 24e15ce9f304a9f35f8493ae7df8b2ec1539fbec7b7317a741014e8293d01fe8
blog.chr IN SSHFP 3 1 26f13c99ce479eb7bc30d296dd7e3e32a9757645
blog.chr IN SSHFP 3 2 b48d589a9c8c283b2cadddbb60cf33df9841ecce7a56d41df0f41bec15c39d99
blog.chr IN SSHFP 4 1 165bb0d362a5883641e25f3ace693edca633f65e
blog.chr IN SSHFP 4 2 297a5b47c60a1c63b899f250152d3a1e8a83540318aa57e835f06b4bd376c927