DNSSEC und DANE Tutorial
Inhaltsverzeichnis
1 Lab-Setup
- IP-Adressen: 192.168.53.0/24
- VMs: 192.168.53.1XX (XX= 01-12)
- Authoritativer DNS-Server: 192.168.53.252
- DNS-Resolver (Cache): 192.168.53.251
2 Grundinformationen
- IP Adressen der Server: 192.168.53.10x
- Namen der DNS Server:
server0x.dnslab.org.
- Namen der DNS Zone:
signed0x.dnslab.org.
- Benutzername: tc
- Passwort: tc
- root-shell:
# sudo -s
- BIND Konfiguration: /etc/namedb/named.conf
- Verfügbare Editoren: nano, vi (aber nicht vim), ne (nano-emacs), elvis
3 Lab: eine DNS Umgebung erstellen
- logge Dich per SSH in Deinen Server ein
- finde die BIND 9 Konfiguration unter
/etc/namedb
- Ändere die Konfiguration ab, so das die Zone
signedXX.dnslab.org
erfolgreich geladen wird - Ändere die Zonendatei
signedXX.dnslab.org
ab, so das die Informationen den Gegebenheiten im Netzwerk entsprechen (IP Adressen) - Datei "signedXX.dnslab.org" im Verzeichnis
/etc/namedb
umbenennen - Referenz der Datei "signedXX.dnslab.org" in der Datei
/etc/namedb/named.conf
aendern - teste die BIND 9 Konfiguration:
shell> named-checkconf -z /etc/namedb/named.conf
- BIND 9 starten
shell> named -c /etc/namedb/named.conf
- Namensauflösung testen:
shell> dig @localhost signedXX.dnslab.org soa shell> dig @192.168.53.251 signedXX.dnslab.org soa
4 DNS Zone signieren
- DNSSEC ZSK (Zone signing Key) erstellen
shell> dnssec-keygen -K /etc/namedb/keys -a rsasha256 -b 2048 -n ZONE signedXX.dnslab.org
- DNSSEC KSK (Key signing Key) erstellen
shell> dnssec-keygen -K /etc/namedb/keys -a rsasha256 -b 2560 -f KSK -n ZONE signedXX.dnslab.org
- In der Datei
/etc/namedb/named.conf
in der Zonen-Konfiguration DNSSEC anschalten:
zone "signedXX.dnslab.org" { type master; file "signedXX.dnslab.org"; auto-dnssec maintain; inline-signing yes; };
- Zone signieren
shell> rndc -c /etc/namedb/rndc.conf reload shell> rndc -c /etc/namedb/rndc.conf sign signedXX.dnslab.org
- Testen, ob DNSSEC Signaturen erstellt wurden (wenn nicht, den Namen
der Schluessel im Verzeichnis
/etc/namedb/keys
pruefen, die Log-Datei/etc/namedb/logs/security.log
auf Fehlermeldungen pruefen)
shell> dig @localhost signedXX.dnslab.org soa +dnssec
5 Lab: DS Record in die Eltern-Zone bringen
- DNS Client Konfiguration auf dem Server einstellen
shell> vi /etc/resolv.conf nameserver 192.168.53.251
- DS-Record aus dem KSK erstellen
shell> dnssec-dsfromkey -2 /etc/namedb/keys/KsignedXX.dnslab.org.\+YYY.\+ZZZZZ.key \ > dsset-signedXX.dnslab.org
- sende den DS-Record (Datei dsset-signedXX.dnslab.org) per FTP zum
Server der Zone "dnslab.org", in das Verzeichnis
/KEYS
!
shell> ftp ftp.dnslab.org User:ftp Password:ftp > cd /KEYS > put dsset-signedXX.dnslab.org > quit
- warten, das der Trainer die DS-Records in die Eltern-Zone einspielt
- Testen (das AD Flag muss erscheinen)
shell> dig signedXX.dnslab.org soa +dnssec
6 TLS Webserver mit DANE/TLSA
- Verzeichnis fuer das TLS-Zertifikat erstellen
shell> mkdir /etc/tls
- SSL Zertifikat erstellen (Achtung:
Common Name (eg, YOUR name)
muss der Domain Name des Servers sein:www.signedXX.dnslab.org
)
shell> cd /etc/tls shell> openssl req -new -x509 -nodes -out server.crt -keyout server.key shell> chmod 600 server.key
- nginx Webserver Konfiguration erstellen
shell> mkdir /etc/nginx shell> cp /usr/local/nginx/conf/nginx.conf /etc/nginx/ shell> cp /usr/local/nginx/conf/mime.types /etc/nginx/
- TLS in der nginx Konfiguration
/etc/nginx/nginx.conf
einbauen
[...] server { listen 443; server_name www.signedXX.dnslab.org; ssl on; ssl_certificate /etc/tls/server.crt; ssl_certificate_key /etc/tls/server.key; [...]
- nginx Konfiguration testen
shell> /usr/local/nginx/sbin/nginx -c /etc/nginx/nginx.conf -t
- nginx starten
shell> /usr/local/nginx/sbin/nginx -c /etc/nginx/nginx.conf shell> ps -ef | grep nginx
- TLS mit einem Webbrowser testen https://www.signedXX.dnslab.org
- TLSA-Record erstellen und in die Zonendatei einbauen, SOA-Serial Nummer hochzaehlen
shell> ldns-dane create www.signedXX.dnslab.org 443
- BIND 9 neu laden
shell> rndc -c /etc/namedb/rndc.conf reload
- TLSA-Record abfragen
shell> dig TLSA _443._tcp.www.signedXX.dnslab.org +dnssec +m
- TLSA-Record gegen das Zertifikat testen
shell> ldns-dane verify www.signedXX.dnslab.org 443