Mit ‘bind’ Tagged einträge

TLSA record generrieren

Samstag, Dezember 6th, 2014

Zum einfach erstellen von DANE DNS Einträge habe ich mir ein Script geschrieben das, dass Zertifikat vom Server (z.b Webserver) abruft und den dazu passenden TLSA record erstellt.

#!/bin/bash
#(c) 2014  Christoph Hueffelmann (blog.chr.istoph.de)
domain=$1 
port=$2
crt=$3

if [ "$port" = "" ]; then
	echo "$0 domain.tld port [path/domain.tld.crt]"
	exit 1
fi
if [ ! -x "/usr/bin/openssl" ]; then
	echo "apt-get install openssl"
	exit 1
fi

if [ "$crt" = "" ]; then
	crt=$(mktemp)
	trap "rm -f $crt" 0 1 2 5 15
	echo QUIT | openssl s_client -servername $domain -connect $domain:$port 2>/dev/null | 
                    sed -ne '/BEGIN CERT/,/END CERT/p' > $crt
fi

#cat $crt
if [ -s $crt ]; then
	echo "_$port._tcp.$domain. IN TLSA 3 0 1 $(cat $crt | openssl x509 -outform DER | 
                                                   openssl sha256 | awk '{print $2}')"
else
	exit 1
fi

exit 0

Alles was man angeben muss ist die Domain und der Port oder optional auch den Pfad zur .crt Datei:
# ./tlsa.sh blog.chr.istoph.de 443
_443._tcp.blog.chr.istoph.de. IN TLSA 3 0 1 253ac080ec87c1a049cc5992e311d3afe39e7554b45ad754438dd7fcaeb22727

Fals man nur den SHA braucht kann man auf folgneden einzeiler verwenden:

echo QUIT | openssl s_client -connect blog.chr.istoph.de:443 | 
sed -ne '/BEGIN CERT/,/END CERT/p' | openssl x509 -outform DER | 
openssl sha256

Anmerken möchte ich natürlich das dies natürlich nicht der weg sein sollte TLSA records für Produktivbetrieb zu erstellen.

[UPDATE 28.01.15]
Das openSSL Kommando ist nun auch mittels der Option -servername SNI fähig.

version.bind

Freitag, Oktober 19th, 2012

Hier habe ich mal ein Script geschrieben wie man die Bind Version von allen Nameserver einer Domain herausfindet.

#!/bin/bash
for ns in $(host -t ns $1 | awk '{print $4}'); do 
	echo -n "$ns: "
	dig @$ns -c CH -t txt version.bind | grep "^version.bind." | grep TXT | awk '{print $5}'
done

Ausgabe:
#version-bind.sh istoph.de
ns01.caix.de.: "9.9.1-P3"
ns03.caix.de.: "9.9.2rc1"

Um das zu verhindern kann man in der /etc/bind/named.conf.options im Options teil die Variabele version sätzen.
options
{
version "unknown";
...

Danach liefert bind nur noch den String in der Versions-Variable aus:
#version-bind.sh istoph.de
ns01.caix.de.: "unknown"
ns03.caix.de.: "unknown"