DNSSec: Difference between revisions

From
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
rfcliste zu dnssec: http://www.dnssec.net/rfc
=== DNS - Domain Name System ===
* Umwandlung von Hostnamen in IP-Adressen
* hierarchisches dezentralisiertes System
* verschiedene Angriffsszenarien: z.B. DNS-Spoofing, Cache Poisoning


=== DNSSEC - DNS Security Extension ===
* IETF (Internet Engineering Task Force)-Standard
* Sicherstellung der Authentizität und Integrität von DNS-Abfragen
<br>
* 2005 erste Top Level Domain .se signiert
* später noch andere TLD (z.B. .cz, .bg, ...)
* 2010 root-Zone
* 2011 .de-Zone
<br>
* Verwendung von asymmetrischer Kryptographie
* Signieren der zu schützenden DNS-Einträge mit privatem Schlüssel
* Client kann mit zugehörigem öffentlichen Schlüssel diese Signatur entschlüsseln
* Privater und öffentlicher Schlüssel sind pro DNS-Zone einzigartig
* Vertrauenswürdigkeit der öffentlichen Schlüssel wird über Vertrauensketten (Chain of Trust) sichergestellt

=== Neue DNS-Records ===
* '''DNSKEY''' - öffentlicher Schlüssel einer Zone
* '''RRSIG''' - Signatur eines DNS-Eintrages
* '''NSEC''' - nächster Eintrag im Zonefile (Realisierung von negativen Antworten)
* '''DS''' - Signierung eines Validierungsschlüssel einer untergeordneten Zone (Chain of Trust)

=== Chain of Trust ===
* komplette DNSSEC-Infrastruktur von der angefragten Adresse über die TLD bis hin zum Root-Nameserver notwendig
* Aktuell ist diese Voraussetzung nicht gegeben
* Alternativ kann man eine Liste mit vertrauenswürdigen DNSKEY-Einträgen konfigurieren

=== DLV - Domain Lookaside Validation ===

=== BIND-Konfiguration ===
* DNSSEC-Unterstützung im Bind Nameserver einschalten:

options {
dnssec-enable yes;
dnssec-validation yes;
};

=== Anfragen ===
* Bei einer Anfrage muss das DNSSEC OK Flag (DO) gesetzt sein, um DNSSEC-Einträge zu erhalten
* Die Angabe des Parameters +dnssec weist dig an, zusätzliche DNSSEC-Einträge abzufragen
* Antwort mit dem AUTHENTICATED DATA Flag (AD), damit wird dem Client mitgeteilt, daß auf dem angefragten Resolver die Prüfung erfolgreich war


=== dig-Beispiele ===
Welche Optionen sind wichtig?
* Man sollte dig mitteilen, dass es die Einträge in der /etc/resolv.conf benutzen soll: +search
* Man kann den zu befragenden Nameserver angeben: @141.20.20.50
Beispiele:
* dig +search bund.de @141.20.20.50
* dig +dnssec bund.de
* dig +dnssec -t DNSKEY bund.de
* dig +dnssec a.xxx.schlittermann.de

=== Software ===
* DNSSEC Validator
** Firefox-Extension
** [http://www.dnssec-validator.cz/]
* dnssec-tools
** Sammlung von Tools zu DNSSec
** Besonders nützlich: validator
** validator ist leider nicht im Debianpaket enthalten, selbst compilieren


=== Quellen ===
* DNSSEC Sichere Namensauflösung im Internet
** Marcus Obst, Heiko Schlittermann
** Chemnitzer Linux-Tage 2010
** [http://www.schlittermann.de/doc/clt2010/]

* Beglaubigte Adressen - DNSSEC verheiratet Namensauflösung und PKI
** Eric Amberg
** Linux-Magazin 2008/05
** [http://www.linux-magazin.de/Heft-Abo/Ausgaben/2008/05/Beglaubigte-Adressen]

* Wikipedia-Eintrag zur Domain Name System Security Extensions
** [http://de.wikipedia.org/wiki/DNSSEC]




----
rfcliste zu dnssec: http://www.dnssec.net/rfc
rfcliste zu dns: http://www.bind9.net/rfc
rfcliste zu dns: http://www.bind9.net/rfc
----------------------------
----------------------------
Line 172: Line 88:
http://stats.research.icann.org/dns/tld_report/
http://stats.research.icann.org/dns/tld_report/
-----
-----
=== Struktur Vortrag ===
* Einführung DNS
** was ist das und wie funktioniert es?
** Wireshark Bild: DNS-Pakete
** Angriffsmöglichkeiten
* DNSSec
** Einführung
** Historie
** RFCs
** neue RRs
** Stand heute
*** root-Zone, TLDs
*** Software-Unterstützung: Resolver, Firefox-Plugin
** DLV
** Wireshark Bild: DNSSec-Pakete
* Unsere Konfiguration
** Netztopologie, Installation, Versionen
** Konfigurationsdateien mit DNSSec-Optionen: named.conf, ...
** Dig, Drill: Parameter, Ausgaben
** Einzelne Konfigstufen:
*** statische IPs, manuelle Signierung, ein DNS-Server
*** statische IPs, manuelle Signierung, zwei DNS-Server (1. Zone, 2. Validierung)
*** dynamische IPs (DHCP), automatische Signierung, Schlüsselupdates
*** zweistufige Hierarchie
----
=== ToDo ===
* Client Tools und Bibliotheken DNSSec Unterstützung?
Firefox Plugin: http://www.dnssec-validator.cz/setlang/?language=en
** Beispiel: OpenSSH patchen
* Schlüsseltausch, neuen Schlüssel einfügen, Schlüssel deaktivieren testen
* Domain bei DLV anmelden
screenshots sind gemacht
der key der dort hochgeladen werden muss ist der 257er: "The record you want to paste should be the entire record, which would start with your domain name and end with a rather long text string. For example: isc.org. 7200 IN DNSKEY 257 3 5 BEAAAAOhHQDBr...yBNsO70aEFTd"
* Beispiele für DNSSec Domains, DLV Domains
http://www.heise.de/netze/meldung/Bund-de-erprobt-DNSSEC-Signierung-992351.html
DNSSec: dig +dnssec -t DNSKEY bund.de
DLV: a.xxx.schlittermann.de
* zweistufige DNS Hierarchie aufbauen -> Chain of Trust
* Empfehlungen für KSK, ZSK (Algorithmus, Länge, Haltbarkeit, Schlüsseltausch, ...)
* alte Resolver ohne DNSSec: Probleme?
* wie Schlüssel zurückziehen (TTL, ...)?
* alles ordentlich dokumentieren
* Vortragsfolien vorbereiten
* Reverse DNSSec
* Zertifikate bei AutoSign wo speichern?
* Unbound
* Phreebird
* Beispiele RRs
* Beispiele Anfragen
* Wireshark Bilder
* Demo?

----


(urandom nur zum testen benutzen!)
(urandom nur zum testen benutzen!)

Revision as of 22:51, 28 September 2011

rfcliste zu dnssec: http://www.dnssec.net/rfc

rfcliste zu dns: http://www.bind9.net/rfc


DNSSEC:

zwei unterschiedliche ansaetze:

  • komplette chain-of-trust von root zu jeweiliger zone
  • "schatten-dns" ueber dlv.isc.org

benutzte tools: bind 9.7.3 dig dnssec-tools validator (debianpaket in stable veraltet, selbst compilieren)


beispiele:

- validierung klappt ueber dlv aber nicht ueber "normal"


drill:

trust key erstellen: dig +dnssec -t DNSKEY dlv.isc.org >> dlv.trusted.key alles rausloeschen ausser: "dlv.isc.org. IN DNSKEY 257 ....." (die zahl zwischen dlv.isc.org und IN muss auch weg) drill -DS dlv.isc.org -k dlv.trusted.key

drill stecker rausziehn reagiert anders als dig


a.xxx.schlittmann.de :lookaside example


pro zone 1 oder mehr keys - darf zur zeit nur RSASHA1 sein: bind 9.7 manual 4.8.1: It is recommended that zone keys use a cryptographic algorithm designated as ”mandatory to implement” by the IETF; currently the only one is RSASHA1. The following command will generate a 768-bit RSASHA1 key for the child.example zone: dnssec-keygen -a RSASHA1 -b 768 -n ZONE child.example.


openssl base64 -e -in dateimitgeheimnis >> dateimitgeheimnisbase64

dnssec-keygen -a HMAC-MD5 -b 128 -n HOST kudamm.chaos.local


http://dnsviz.net/d/heise.de/dnssec/


erste config wieder zurueck gespielt

dig +dnssec -t DNSKEY chaos.local |grep 257 > trusted_chaos

trusted chaos bearbeiten

dann drill -DS mitte.chaos.local -k trusted_chaos

CHASE SUCCESSFUL  :)


dhcpd laeuft, verteilt eine ip .2.101 ... marzahn kabel umgesteckt, per dhclient eht0 die ,2.101 holen lassen, leasetime 60 sek, ip bekommen geht, dnsupdate klappt noch nicht, key und acl muessen noch angepasst werden

eigene zone fuer .2.101: "dyn.chaos.local", reverse muss noch angepasst werden


updatedienst mit key versorgen rndc -s localhost -k /etc/bind/rndc.key reload

falls "forward map from ... FAILED: Has an address record but no DHCID, not mine." in dhcpd.conf hinzufuegen: update-conflict-detection false;


dnssec-keygen -P now -A now+10mi -I now+1h -D now+2h -b 512 -r /dev/urandom -K /etc/bind/chaos.keystrore/ chaos.local #urandom dev ohne randomness (geht schnell bringt aber nicht viel)

dann rndc loadkeys chaos.local (sonst passiert nix)


dig +dnssec -t DNSKEY chaos.local @localhost


neue ip (leaseverlaengerung und dnsaktualisierung) auf mahrzahn - neumarzahn: dhclient -i eth0 (in der dhcpclientconfig muss senthostname gesetzt sein (nur hostname, nicht fqdn)


http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/s2-bind-rndc.html http://stats.research.icann.org/dns/tld_report/


(urandom nur zum testen benutzen!)

  • /10 * * * * bind ( dnssec-keygen -P now -A now+2mi -I now+4mi -D now+6mi -b 512 -r /dev/urandom -K /etc/bind/chaos.keystore/ chaos.local & rndc loadkeys chaos.local & rndc sign chaos.local)
  • /1 * * * * root ( dig +dnssec -t DNSKEY chaos.local @localhost >> /tmp/`date +\%s` )
  • /1 * * * * root ( dig +dnssec mitte.chaos.local @localhost >> /tmp/`date +\%s` )