Archive for the ‘ bind ’ Category

bind journalprint aus bind 9.7

journalprint bzw. named-journalprint kann die binären Journaldateien von bind im Ascii Format ausgeben. Da journalprint bei bind 9.5 nicht enthalten ist, habe ich es mir von einem bind9.7 System kopiert. Die Notwendigen Dateien sind:

  • /usr/sbin/named-journalprint
  • /usr/lib/libdns.so.64.1.0
  • /usr/lib/libisc.so.60.1.4

sowie zwei Links

  • ln -s /usr/lib/libdns.so.64.1.0 /usr/lib/libdns.so.64
  • ln -s /usr/lib/libisc.so.60.1.4 /usr/lib/libisc.so.60

Gepackt gibt es das ganze dann hier (amd64).

DNS Glue Records abfragen

Versucht ein Client eine Domain per DNS aufzulösen, kontaktiert er zuerst seinen eingetragenen DNS Server. Kann ihm dieser nicht weiterhelfen, leitet dieser DNS Server den Client an den DNS Server für die Domain weiter. Hierbei kann es jedoch zu einem “Henne – Hei” Problem kommen, wenn der Nameserver der domain ein A Record der selbigen ist. Beispiel:

  • die Domain aufgerufene Domain wäre www.domain.tld
  • der DNS Server der Domain heißt ns.domain.tld

Der Nameserver kann nicht aufgelöst werden, solange der Domainname domain.tld nicht aufgelöst ist, was wiederrum nur der ns.domain.tld kann. Wir haben eine saubere Schleife produziert.

Für dieses Problem gibt es Glue Records. Diese werden in der übergeordneten Zone eingetragen und verweisen für die entsprechende Domain – hier domain.tld direkt auf die IP des Nameservers, somit kann ein Client über die übergeordnete Domain den DNS Server finden.

Glue Records lassen sich nach dem gleichen Prinzip auch abfragen.

  • DNS Server der übergeordneten Domain abfragen:
dig ns de

 ; <<>> DiG 9.5.1-P3 <<>> ns de
 ;; global options:  printcmd
 ;; Got answer:
 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51788
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 0

 ;; QUESTION SECTION:
 ;de.                            IN      NS

 ;; ANSWER SECTION:
 de.                     86400   IN      NS      a.nic.de.
 de.                     86400   IN      NS      l.de.net.
 de.                     86400   IN      NS      z.nic.de.
 de.                     86400   IN      NS      c.de.net.
 de.                     86400   IN      NS      f.nic.de.
 de.                     86400   IN      NS      s.de.net.

 ;; Query time: 14 msec
 ;; SERVER: 80.237.128.144#53(80.237.128.144)
 ;; WHEN: Wed May 26 10:06:50 2010
 ;; MSG SIZE  rcvd: 126
  1. den Übergeordneten Nameserver nach den Nameservern der eigentlichen Domain befragen:
 dig NS 2nibbles4u.de @a.nic.de.

; <<>> DiG 9.5.1-P3 <<>> NS 2nibbles4u.de @a.nic.de.
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37577
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 2, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;2nibbles4u.de.                 IN      NS

;; AUTHORITY SECTION:
2nibbles4u.de.          86400   IN      NS      ns2.hans.hosteurope.de.
2nibbles4u.de.          86400   IN      NS      ns.2nibbles4u.de.

;; ADDITIONAL SECTION:
ns.2nibbles4u.de.       86400   IN      A       83.169.42.112   <-- Glue Record

;; Query time: 19 msec
;; SERVER: 194.0.0.53#53(194.0.0.53)
;; WHEN: Wed May 26 10:07:13 2010
;; MSG SIZE  rcvd: 98

bind version abfragen/verstecken

Die Version eines bind DNS Servers lässt mittels dig sowie nslookup abfragen.

dig @127.0.0.01 version.bind txt chaos
[...]
version.bind.           0       CH      TXT     "9.5.1-P3"
[...]
nslookup -type=txt -class=chaos version.bind 127.0.0.1
Server:         127.0.0.1
Address:        127.0.0.1#53
version.bind    text = "9.5.1-P3"

Wer dies nicht möchte, kann die Versionsbezeichnung jedoch auch verstecken, dazu muss im Abschnitt options lediglich der version auf etwas anderes gesetzt werden.

options {
 version "not currently available";

Das Ergebniss sieht danach wiefolgt aus.

dig @127.0.0.01 version.bind txt chaos
[...]
version.bind.           0       CH      TXT     "not currently available"

Bind: Linux DNS in Windows DNS migrieren

Ich stand gerade vor der Aufgabe die DNS Zone eines Linux Servers auf einen Windows 2003 Server um zu ziehen. Um ehrlich zu sein, hatte ich mir dasn ganze schwieriger vorgestellt, als es letztendlich war.

  1. Neue Primäre nicht AD integrierte DNS Zone auf dem Windows 2003 Server erstellen
  2. Zonen-Datei von nach %SystemRoot%\system32\DNS\ kopieren.
  3. Header der Linux DNS Zonendatei gegen den Header der Windows DNS Zonen Datei austauschen
    und Windows Zonen Datei durch die Linux Zonen Datei ersetzten.
  4. alle Leerzeilen die nicht auskommentiert sind (Kommentarzeichen ist “;”) entfernen.
  5. DNS Dienst neustarten und in den Eventlog schauen

Sollten nach dem Neustart des DNS Dienstes im Eventlog Fehler auftauchen die wie folgt aussehen, sind dies wahrscheinlich vergessene nicht auskommentierte Leerzeilen.

Linux Header eines DNS zonen files

$TTL 1D

@ 1D  IN  SOA    servername.domain.tld. servername.domain.tld(
 2010030805               ; Serial-No
 1D         ; refresh
 30m         ; retry
 2W         ; expire
 2D)        ; minimum

 IN          NS     servername.domain.tld.
 ;

Windows 2003 Header eines DNS zonen files

;
;  Database file mh.vmtubes.de.dns for mh.vmtubes.de zone.
;      Zone version:  1
;

@             IN  SOA servername.domain.tld.  servername.domain.tld. (
 1            ; serial number
 900          ; refresh
 600          ; retry
 86400        ; expire
 3600       ) ; default TTL

;
;  Zone NS records
;

@                       NS    server.domain.tld.

;
;  Zone records
;

Linux/Windows: DNS-Poisoning

Am 22.07.2008 wurden für die von Dan Kaminsky am 08.07.2008 entdeckte DNS-Sicherheitslücke die ersten Exploits veröffentlich.
Die DNS-Sicherheitslücke ermöglicht es dem DNS-Cache falsche Einträge unter zu schieben.

[...] Mit Bailiwick Checking akzeptiert ein Caching Nameserver in einer Antwort eines anderen Servers keine ungefragt mitgelieferten Additional Resource Records mehr, wenn sie nicht aus der angefragten Domain stammen (out-of-bailiwick). Somit verhindert der Server, dass ihm bei Anfragen für www.example.com ein Eintrag für www.noexample.com untergeschoben wird.

In Kombination mit der DNS-Geburtstagsattacke gelingt es einem Angreifer aber dennoch, den Cache erfolgreich zu manipulieren. Dazu bringt er den Server seines Opfers etwa mit Links in Mails an Anwender dazu, bestimmte Adresse abzufragen, etwa aaa.example.com, aab.example.com, aac.example.com und so weiter. Für jede dieser Anfragen benutzt der Nameserver des Opfers eine eigene Transaktions-ID. Je mehr Transaktions-IDs verbraucht sind, desto großer ist die Chance für den Angreifer, mit einer gefälschten Antwort und einer erratenen ID eine richtige ID zu treffen. Zwar ist die Wahrscheinlichkeit, einen Treffer für www.example.com zu landen, immer noch recht gering, trägt der Angreifer aber in jede Antwort den Additional Resource Record (RR) für www.example.com mit der IP des von ihm kontrollierten Servers ein, so kann er den Cache trotzdem manipulieren – denn der RR ist “in-bailiwick”. [...]

Quelle: http://www.heise.de/security/Details-zum-DNS-Sicherheitsproblem-veroeffentlicht–/news/meldung/113133

Diese Sicherheitslücke betrifft Linux-Systeme
(http://www.net-security.org/advisory.php?id=9044)

sowie Microsoft Systeme
(http://www.microsoft.com/germany/technet/sicherheit/bulletins/MS08-037.mspx)

Unter http://doxpara.com/ ist ein DNS-Checker verfügbar, mit dessen Hilfe man angeblich die Verwundbarkeit des eigenen Systems testen kann.

Seit letzte Woche Mittwoch (23.07.2008) ist auch ein vermehrter Empfang von Spam-eMails mit ZIP-Dateien im Anhang festgestellt. Ob dies jedoch mit der Sicherheitslücke zusammenhängt ist unklar.

Weitere Links: