---
title: DNSSEC - make DNS more secure
subtitle: Vortrag LUGOR, 24.02.2020
author: Ulf Volmer
---

## DNS Overview

* global verteilte Datenbank
* Baumstruktur
* eingebaute Renundanz
* Eintrage werden gecached

------------------

![Image](DNS-structure.png "DNS structure")

------------------

## DNS Records

* primär: Auflösung Name in IP

  A und AAAA Record

* sekundär: Auflösung IP in Name

  PTR Record

* weiterhin: Dienstekonfiguration, Keys, etc.

  NS, MX, SRV, TXT Records


------------------


## Transport per UDP

schnell, unverschlüsselt

man in the middle

cache poisoning

------------------




## DNSSEC

* 2005, RFC 4033 - somit ähnliches Schicksal wie IPv6
* abwärtskompatibel
* auf Basis der Resolver, Clients bleiben außen vor
* bei Fehlern/Manipulationen keine Antwort
* priv/pub Key signiert Records, Pubkey wird in der übergeordneten Zone eingetragen

------------------

## neue Record Typen

* DNSKEY (public Key, üblicherweise zwei, KSK, ZSK)
* DS (Fingerprint des public Key, Parent Zone)
* RRSIG (Signatur eines Records)
* NSEC(3) (Abwesenheit eines Records)

------------------

## neuer Record RRSIG, pro Record

```
linux-ninja.de.         2443 IN A 78.47.159.18
linux-ninja.de.         2443 IN RRSIG A 7 2 38400 (
                                20200310220002 20200209220002 1877 linux-ninja.de.
                                5qmA7aIC77rax3BBsnvaINYcsTtYVbYzkA6aB0NdfY24
                                ykCWOZzCsl0X1GHtxZteeMYEibsTrfJ47QwAF9PG4Zy3
                                EEeaqGckeGA1NH7GLnkP78rt/XKeP9uWRTMadtpdP3d6
                                iqHUNWnya/ryTV/sR/4V0UwauLMQsGHlnTpYnwp6wRw5
                                GKs0/6YQo7Sw3wy9VEEL3h6YJOLyCsCqgPbOFatSvQlQ
                                8jFDlz6mWLH0f9kxN+RN7GUvynXsJ+WEwb6jeM5doxsZ
                                wkOgJhZhAh3GW59/HMXIwXUAkBur247OEivWlbtIWi2B
                                fwiJNulCFrs0olDS8vfCoQuYJEYxw/6VZA== )
```

------------------

![Image](DNSKEY.png "DNSSEC Keys")

------------------

## Signaturen

* expire, -> cronjob
* KSK: signiert den ZSK, wird upstream hinterlegt
* ZSK: signiert die Zone 

------------------

```
DOMAIN=linux-ninja.de
cd /etc/named
# zone signing key
dnssec-keygen -a NSEC3RSASHA1 -b 2048 -n ZONE $DOMAIN
# key signing key
dnssec-keygen -f KSK -a NSEC3RSASHA1 -b 4096 -n ZONE $DOMAIN
# DNSKEY records in das Zonfile includen
for key in K${DOMAIN}*.key
do
   echo "\$INCLUDE $key">> ${DOMAIN}.hosts
done
# zonefile signieren, salt ist random
dnssec-signzone -A -3 $(head -c 1000 /dev/random | sha1sum | \
cut -b 1-16) -N INCREMENT -o ${DOMAIN} -t ${DOMAIN}.hosts
# named.conf.local: $DOMAIN.hosts to $DOMAIN.hosts.signed
vim named.conf.local
systemctl reload named
```


------------------

## Verschlüsselung

* DoH (DNS over HTTPS)
* DoT (DNS over TLS)

beides schick, kein Ersatz, nur Ergänzung zu DNSSEC

------------------

## DANE

* ermöglicht das Ablegen von TLS Public Keys im DNS
* Vorgaben zur CA im DNS
* somit werden CAs weitgehend obsolete
* derzeit (leider) nur Relevanz bei SMTP

------------------

## ssh Hostkey Fingerprints im DNS

```
dig -t sshfp jh.linux-ninja.de
cat >> ~/.ssh/config <<EOF
Host jh.linux-ninja.de jh.linux-ninja.net
   VerifyHostKeyDNS yes
EOF
ssh -p 61022 jh.linux-ninja.de
```


SSHFP records werden mit ssh-keygen erzeugt.

------------------

## Zahlen

* ~ 50% aller Resolver in DE unterstützen DNSSEC
* ~ 1% aller DE- Domains sind DNSSEC validiert

das geht noch was!

------------------

## Nachteile

* keine Verschlüsselung, ggf. mit DoT kombinieren
* Resolver und Strecke zum Resolver muß vertrauenswürdig sein
* Für Laptops in fremden Netzen bietet sich ein lokaler Resolver (unbound) an

------------------

## hilfreiche dig Kommandos

```
dig linux-ninja.de
dig -t soa sub3.linux-ninja.de
dig linux-ninja.de +dnssec +multi
dig linux-ninja.de +sigchase
dig linux-ninja.de +sigchase +trace
dig dnssec-failed.org +cdflag @::1
```

------------------

## hilfreiche Online- Tools

* [https://dnsviz.net/](https://dnsviz.net/)
* [https://zonemaster.net](https://zonemaster.net)
* [http://dnssec-debugger.verisignlabs.com/](http://dnssec-debugger.verisignlabs.com/)


------------------

## Dankeschön für die Aufmerksamkeit


* Mail     u.volmer@u-v.de
* Matrix:  @uvolmer:matrix.u-v.de
* XMPP:    ulf@jabber.u-v.de


* [https://u-v.de/DNSSEC/](https://u-v.de/DNSSEC/)
