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
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

7 Kontakt: Carsten Strotmann <cas@strotmann.de>

Autor: Carsten Strotmann

Created: 2014-10-28 Tue 17:54

Emacs 24.4.1 (Org mode 8.2.10)

Validate