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.orgerfolgreich geladen wird - Ändere die Zonendatei
signedXX.dnslab.orgab, so das die Informationen den Gegebenheiten im Netzwerk entsprechen (IP Adressen) - Datei "signedXX.dnslab.org" im Verzeichnis
/etc/namedbumbenennen - Referenz der Datei "signedXX.dnslab.org" in der Datei
/etc/namedb/named.confaendern - 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.confin 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/keyspruefen, die Log-Datei/etc/namedb/logs/security.logauf 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.confeinbauen
[...]
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