Links:
Wiki Bind DNS Server
Wikipedia DNS Resource Record Liste
DNS TestPages:
MXToolBox - Mailserver Einstellungen im DNS testen mit Blacklist Check
internet.nl - WebDienst zum Prüfen eines DNS Resolver auf DNSSEC Validierung
UNI Duisburg-Essen - WebDienst zum Prüfen eines DNS Resolver auf DNSSEC Validierung
Befehle | Beschreibung |
---|---|
named-checkconf -z | Bind named.conf Konfiguration prüfen |
named-checkconf -p | named.conf ausgeben |
rndc reconfig | geänderte Konfiguration des Servers einlesen |
rndc status | Status des DNS-Servers |
rndc zonestatus domain.tld | Zonendatei und Status der angegebenen Domain ausgeben |
Datei | Beschreibung |
/etc/host.conf | (Alle) auf älteren Systemen muss der Eintrag "order hosts,bind" (Reihenfolge der Verzeichnisdienste) in der Datei stehn, damit der Rechner den DNS-Server benutzt. |
/etc/bind/named.conf | (Debian) Standard Konfiguration der Zonen |
/etc/bind/named.conf.local | (Debian) Standard Konfiguration der Zonen |
/etc/bind/named.conf.zone | (Debian) Konfigurationsdatei für die eigenen Zonen |
/etc/bind/named.conf.options | (Debian) Konfiguration für die Optionen von BIND |
/etc/nsswitch.conf | (Alle) wenn ein localer DNS läuft, die Zeile "hosts: files" in "hosts: files dns" ändern |
/etc/resolv.conf | (Alle) DNS Server des Systems |
/etc/bind/db.root | (Debian) Liste der DNS ROOT Server |
Installations des Packet:
apt-get install bind dnsutils
zum Testen des DNS kann man die Tools nslookup, dig, host oder andere verwenden.
killall -HUP named oder /etc/inid.d/bind restart
Konfiguration der Domain und der reverse-Lookup Zone testen
named-checkzone domain.tld db.domain.tld named-checkzone 1.168.192.in-addr.arpa db.192.168.1
type hint; | (Hinweis) Root Server |
type master; | Primary DNS-Server, Orginal Datensätze des Namensservers |
type slave; | Secondary DNS-Server, kopiert die Daten des primary Servers |
#Beispiel named.conf.options options { directory "/etc/bind"; auth-nxdomain no; #conform to RFC1035 //Weiterleitung des DNS-Servers aktivieren forward only; #nur den angegebenen DNS abfragen forwarders { 217.237.149.225; }; //Zonentransfer zum DNS-SlaveServer allow-transfer { 1.1.1.1 ; 1.2.2.2 ; }; DNSsec-enable yes; #DNSsec aktivieren //IPv6 deaktivieren listen-on-v6 { none; }; // Open Recursive Resolver (DNS Weiterleitung) einschraenken allow-recursion { 10.0.0.0/8; 192.168.0.0/16; 127.0.0.0/8; ::1; }; }; //Zugriff des DNS-Slave aktivieren acl "slaves" { 1.1.1.1 ; 1.2.2.2 ; };
directory - Standard Zonendatei Verzeichnis
forwarders - Weiterleitung der Anfrage, wenn der DNS Server diese nicht beantworten kann. Ohne "forwarders"
Eintrag ist der Server "stand alone" und befragt die ROOT Nameserver. Die ROOT Nameserver sind in der Datei /etc/bind/db.root gespeichert.
forward only; - Anfragen nur von Provider DNS (hier T-Online) beantworten lassen ( ROOT Server werden nicht befragt).
forward first; - Anfragen werden erst von Provider DNS (hier T-Online) beantworten, wenn der nicht erreichbar ist, werden die ROOT Server befragt.
Zonen-Datei anlegen mit TYPE SLAVE
im Gegensatz zum Master wird bei FILE kein Path angegeben, Standard ist das der Cache der Zone unter /var/cache/bind/ gespeichert wird (Parameter directory).
#db.domain.tld zone "domain.tld" { type slave; file "db.domain.tld"; masters { IP-des-MasterDNS; }; };
#named.conf.options ... directory "/var/cache/bind"; ...
In einem anderen Verzeichnis hat bind keine Schreibrechte um die Dateien abzulegen.
Fehlermeldung in den Logs, wenn im Verzeichnis keine Schreibrechte bestehn.
dumping master file: <Path>/tmp-JTLUARobop: open: permission denied
IPv6 aktiv/deaktiv any / none
#named.conf.options options { ... listen-on-v6 { any; }; ... };
Zugriff auf den Server einschränken, nur Rechner im lokalen Netzwerk können zugreifen
allow-query { localhost; localnets; };
Zonen-Transfer regeln, mit none den Transfer verbieten, im Normalfall nur Secondary Server erlauben.
allow-transfer { none; };
Zugriff eines Sekundären DNS Server erlauben.
acl "slaves" { IP-ADR des Slaves; };
ACL für DHCP-Client Einträge
acl "dhcp-clients" { 192.168.2/24; };
# /etc/bind/named.conf options { ... }; logging { channel default_log { file "/var/log/named/named.log" versions 5 size 50M; print-time yes; print-severity yes; print-category yes; }; category default { default_log; }; category general { default_log; }; category lame-servers { null; }; category edns-disabled { null; }; // category security { null; }; }; ...
Eine Domain für den Zugriff der localen Benutzer sperren.
zone "werbung.de" { type master; file "dummy"; };
Eintrag für die Domain domain.tld, vom Type Primary DNS Server, der die Zonendatei /etc/bind/db.domain.tld benutzt.
#Beispiel named.conf.zone zone "domain.tld" { type master; file "/etc/bind/db.domain.tld"; allow-update {"dhcp-clients";}; };
Eintrag für ein secundary Nameserver (slave), für die Domain domain.tld und der dazugehörige Masterserver hat die IP 195.166.8.89.
Der DNS-Server versucht dann die Daten für die Zone domain.tld vom
Master-Nameserver 195.166.8.89 zu holen und eine Kopie dieser Daten im File db.domain.tld.slave abzulegen.
zone "domain.tld" { type slave; file "/etc/bind/db.domain.tld.slave"; masters {195.166.8.89;}; };
Wenn hinter einem Eintrag ein "." gesetzt wird z.B."ns1.local.de." verhindert man, das bind den Zonenname anhängt, wenn kein Punkt gesetzt ist ergänzt, hängt named den Zonennamen automatisch an.
#Beispiel db.domain.tld $TTL 86400 @ IN SOA ns1.domain.tld. master.domain.tld. ( 2003040600 ; Serial 28800 ; Refresh (8 Stunden) 7200 ; Retry (2 Stunden) 604800 ; Expire (1 Woche) 86400 ; Negative Cache TTL ) IN NS ns1.domain.tld. ; 1. Nameserver IN NS ns2.domain.tld. ; 2. Nameserver IN MX 10 mx1.domain.tld. ; primär Mail Exchanger IN MX 20 mx2.domain.tld. ; secundär Mail Exchanger domain.tld. IN A 1.2.3.4 www IN CNAME domain.tld. ns1 IN A 2.3.4.5 ns2 IN A 3.2.4.5 mx1 IN A 3.2.4.5 mx2 IN A 4.5.4.5
Befehl | Bedeutung |
---|---|
SOA | jede Master Zone muss diesen Eintrag enthalten |
ns1.domain.tld. | vollständier Name des Master-Nameserver |
master.domain.tld. | Mailadresse des verantwortlichen Admins (@ muss durch ein "." ersetzt werden) |
( | Beginn der Einstellungen für den Secondary Nameserver |
2003040600 | Seriennummer der Zone (Format vierstellige Jahreszahl Monat Tag und zweistellig laufende Nummer) |
28800 | wie oft muss der secondary Server den Master Server kontaktieren, um neue Version der Zone zu kopieren. |
7200 | Wartezeit, wenn die Verbindung zum Master Server fehlschlägt |
604800 | wie lange die Kopie des Secondary Servers gültig ist |
86400 | Negative Cache TTL |
) | Ende der Einstellungen für den Secondary Nameserver |
statt in Sekunden, kann die Zeit auch in Stunden, Tagen oder Wochen angegeben werden, indem man der Zahl ein "h", "d" oder "w" anhängt.
Anhand der Seriennummer erkennt der Secondary Server das sich die Zone geändert hat.
IN NS ns1.domain.tld. | Eintrag für den zuständigen Namensserver der Zone, ein NS-Record darf nicht auf ein CNAME-Record verweisen, ihm muss immer eine IP-Adr zugeordnet werden |
IN MX 10 mx1.domain.tld. | Eintrag für Mailserver der Domain, der Server ist auf Priorität 10 gestellt |
IN MX 100 mx2.provider.tld. | Mailserver mit Priorität 100 |
# Definieren der Ressourcen ns1 IN A 192.168.1.1 rechner1 IN A 192.168.1.1 rechner2 IN A 192.168.1.100 mail IN A 192.168.1.1 www IN CNAME rechner1 subdomain IN MX 10 mail.domain.tld.
A - IP Addresse für eine Ressource
CNAME - Aliasname Hier kann man von einem Namen, auf einen anderen verweisen. Wenn sich die IP addresse von rechner1 ändert, ist damit auch die IP Addresse von www.domain.de geändert.
NS - eine Subdomain an eine anderen DNS deligieren
MX - Mail Exchanger Mailempfang für die Ressource
PTR - Reverse-Lookup Record
"subdomain IN MX 10 mx1.domain.tld."
Emails die an xxx@subdomain.domain.de geschickt werden, sollen auch auf mail.domain.tld landen.
(der mit der kleinsten Nummer hat die höchste Priorität)
#Beispiel named.conf.zone zone "1.168.192.in-addr.arpa" { type master; file "/etc/bind/db.192.168.1"; allow-update { none; }; };
#Beispiel db.192.168.1 $ORIGIN 1.168.192.in-addr.arpa. $TTL 86400 @ IN SOA ns1.domain.tld. master.domain.tld. ( 2003040600 ; Serial 28800 ; Refresh (8 Stunden) 7200 ; Retry (2 Stunden) 604800 ; Expire (1 Woche) 86400 ; Negative Cache TTL ) ; 1.168.192.in-addr.arpa. IN NS ns1.domain.tld. ; ; Definieren der Ressourcen 1 IN PTR rechner1. 100 IN PTR rechner2.
#Beispiel named.conf.zone // IPv6 Reverse Lookup Zone (nibble) zone "0.0.0.0.0.0.0.0.0.C.E.F.ip6.arpa" { type master; file "/etc/bind/db.fec0.0.0.arpa"; allow-update { none; }; }; zone "0.0.0.0.0.0.0.0.0.C.E.F.ip6.int" { type master; file "/etc/bind/db.fec0.0.0.int"; allow-update { none; }; }; // IPv6 Reverse Lookup Zone (Bitstring) zone "\[xfec000000000/48].ip6.arpa" { type master; file "/etc/bind/db.fec0.0.0.arpa.bs"; allow-update { none; }; };
#Beispiel db.fec0.0.0.arpa $ORIGIN 0.0.0.0.0.0.0.0.0.C.E.F.ip6.arpa. ; ;fec0:0:0:2::1/64 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.0 IN PTR pc1.domain.de. ;fec0:0:0:2::2/64 2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.0 IN PTR pc2.domain.de. ;fec0:0:0:1::1/64 - anderes Subnet 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.0 IN PTR pc3.domain.de.
Beispiel db.fec0.0.0.int ist ähnlich der db.fec0.0.0.arpa ausser $ORIGIN 0.0.0.0.0.0.0.0.0.C.E.F.ip6.int.
#Beispiel db.fec0.0.0.arpa.bs $TTL 86400 $ORIGIN \[xfec000000000/48].ip6.arpa. @ IN SOA ns1.local.de. master.local.de. ( 2003040600 ; Serial 28800 ; Refresh (8 Stunden) 7200 ; Retry (2 Stunden) 604800 ; Expire (1 Woche) 86400 ; Negative Cache TTL ) @ IN NS ns1.local.de. ; Definieren der Ressourcen ;fec0:0:0:2::1/64 \[x00020000000000000001] IN PTR pc1.domain.de. ;fec0:0:0:2::2/64 \[x00020000000000000002] IN PTR pc2.domain.de. ;fec0:0:0:1::1/64 - anderes Subnetz \[x00010000000000000001] IN PTR pc3.domain.de.
#Beispiel IPv6 Zone ; IPv6 Host erste Variante pc1 IN AAAA fec0:0:0:2::1 pc2 IN AAAA fec0:0:0:2::2 ; IPv6 Host zweite Variante ;pc1 IN A6 fec0:0:0:2:0:0:0:1 ;pc2 IN A6 0 fec0:0:0:2:0:0:0:2 ;mynet IN A6 fec0:0:0:2:: ;pc3 IN A6 ::0:0:0:3 64 mynet
# host -t AAAA pc1.domain.de pc1.domain.de has AAAA address fec0:0:0:2::1
# host -t A6 pc1.domain.de pc1.domain.de has A6 address 0 fec0:0:0:2::1
# host -n fec0:0:0:2::1 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.0.0.0.0.0.0.0.0.0.0.c.e.f.ip6.int domain name pointer pc1.domain.de.
# host fec0:0:0:2::1 \[xFEC00000000000020000000000000001/128].ip6.arpa domain name pointer pc1.domain.de.
DNS TestPages:
MXToolBox - Mailserver Einstellungen im DNS testen mit Blacklist Check
/etc/bind/bind.keys
- DNSSEC öffentlicher Schlüssel Root KSK Keys
/var/cache/bind/managed-keys.bind
- DNSSEC Key File
/var/cache/bind/managed-keys.bind.jnl
- DNSSEC Key Journal
Beispiel für eine Zonendatei db.domain.tld
# db.domain.tld $TTL 86400 @ IN SOA ns1.domain.tld. master.domain.tld. ( 2003040600 ; Serial 28800 ; Refresh (8 Stunden) 7200 ; Retry (2 Stunden) 604800 ; Expire (1 Woche) 86400 ; Negative Cache TTL ) IN NS ns1.domain.tld. ; 1. Nameserver IN NS ns2.domain.tld. ; 2. Nameserver IN MX 10 mx1.domain.tld. ; primär Mail Exchanger IN MX 20 mx2.domain.tld. ; secundär Mail Exchanger domain.tld. IN A 1.2.3.4 www IN CNAME domain.tld. ns1 IN A 2.3.4.5 ns2 IN A 3.2.4.5 mx1 IN A 3.2.4.5 mx2 IN A 4.5.4.5
- Keys für die Zone erstellen
cd /etc/bind dnssec-keygen -a RSASHA1 -b1024 -r /dev/urandom -e -n ZONE domain.tld dnssec-keygen -a RSASHA1 -b1024 -r /dev/urandom -e -n ZONE -f KSK domain.tld
es wurden je zwei Dateien Kdomain.tld+005+xxxxx.key und Kdomain.tld+005+xxxxx.private erstellt.
- Die Schlüssel müssen nun in die Zonendatei angefügt werden.
cat Kdomain.tld*.key >> db.domain.tld
- jetzt muss die Zone mit dem Schlüssel signiert werden
dnssec-signzone -s now+0 -e now+2419200 -o domain.tld -k Kdomain.tld.+005+51189 \ db.domain.tld Kdomain.tld.+005+62267 oder dnssec-signzone -g -o domain.tld -a -t db.domain.tld Kdomain.tld.+005*
danach wird im Verzeichnis eine Zonendatei mit der Endung .signed erstellt.
- jetzt in der named.conf die signierte Zonendatei laden.
# named.conf.zone ... zone "domain.tld" { type master; file "/etc/bind/db.domain.tld.signed"; }; ...
- in den Optionen von BIND muss nun noch DNSsec aktiviert werden
# named.conf.options ... dnssec-enable yes; #DNSsec aktivieren dnssec-validation auto; #Root-KSK automatisch laden ...
- BIND Konfiguration testen und Konfiguration neu laden
named-checkconf -z rndc reconfig
dig domain.tld any dig @dns-server domain.tld DS
ein Beispiel wie es aussehen sollte.
dig DNSsec.se any dig @a.ns.se DNSsec.se DS
RRSIG Record anzeigen
dig NS ns1.nic.fr +dnssec
dig DNSKEY . +dnssec > ./root.key
Paket ldnsutils
drill -D -S -k ./root.key www.dnssec.se ldns-dane verify www.bund.de 443
- prüfen, ob der DNS-Server das AD-Flag (Authenticated Data) ausgibt
dig @localhost domain.tld +dnssec | grep flags ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ; EDNS: version: 0, flags: do; udp: 4096
Wiki SPF - Sender Policy Framework
Sender Policy Framework FAQ
SPF Wizard
Beim SPF wird vom Empfänger Mailserver eine Abfrage beim DNS der Domain gemacht, welcher Mailserver für die Domain Mails versenden darf.
X-MS-Exchange-Organization-SenderIdResult
MailHeader mit SPF Eintrag der Domain des Senders
Received-SPF: None (server.domain.zz: user@domain.tld does not designate permitted sender hosts)
MailHeader mit SPF Eintrag der Domain des Senders
Received-SPF: Pass (server.domain.zz: domain of user@domain.tld designates xxx.xxx.xxx.xxx as permitted sender) receiver=server.domain.zz; client-ip=xxx.xxx.xxx.xxx; helo=mail.domain.tld;
- SPF TXT Eintrag in der ZonenDatei (Bind)
#Beispiel db.domain.tld # mit Domain Angabe ... domain.tld. IN TXT "v=spf1 mx -all" domain.tld. IN SPF "v=spf1 mx -all" ...
#Beispiel db.domain.tld # ohne Angabe einer Domain ... @ IN TXT "v=spf1 mx -all" @ IN SPF "v=spf1 mx -all" ...
im Beispiel wird die IP-Adresse des MX-Record als gültiger Mailserver spezifiziert, man kann auch einen A-Record oder die IP-Adresse / eine IP-Range angeben. z.B. ip4:213.165.64.0/23
domain.tld. IN TXT "v=spf1 mx a:mail2.example.com ip4:111.222.333.444 ip4:213.165.64.0/23 -all"
Parameter | Beschreibung |
---|---|
-all | alle Mails die nicht vom aufgeführten Servern kommen werden abgelehnt |
+all | alle Server sind erlaubt, auch nicht aufgeführte |
~all | erlaubt allen Servern den Versand, aber bei nicht aufgeführten Servern werden die Mails als Spam/Phishing markiert |
?all | Einstellungen werden ignoriert, Empfänger kann wählen, was geschehen soll |
- Testen der Einstellungen
dig SPF domain.tld @ns1.domain.tld dig -t TXT domain.tld
"found SPF/TXT record but no SPF/SPF record found"
lt. RFC 4408 sollen für die Kompatibilität beide Einträge in der Zonen Datei hinterlegt sein, der TXT und der SPF Eintrag. (3.1.1. DNS Resource Record Types)
Wiki DMARC - Domain-based Message Authentication, Reporting and Conformance
DKIM und SPF muss eingerichtet sein, dann kann DMARC genutzt werden.
- DKIM TXT Eintrag in der ZonenDatei (Bind)
_dmarc.domain.tld. IN TXT "v=DMARC1; p=none; pct=100; rua=mailto:mailauth-reports@domain.tld;"
Parameter | Beschreibung |
---|---|
v=DMARC1 | Protokollversion (derzeitiger Standard DMARC1) |
p=none | eMails der Hauptdomäne werden nicht weiter behandelt |
p=quarantine | eMails der Hauptdomäne werden in Quarantäne gestellt |
p=reject | eMails der Hauptdomäne werden abgelehnt |
pct=100 | Prozentsatz der eMails, die entsprechend von "p" gefiltert werden sollen |
rua=mailto:... | eMail Adresse, die ein mal Täglich den Report erhält |
aspf |
- Testen der Einstellungen
dig -t TXT _dmarc.domain.tld nslookup -q=TXT _dmarc.gmail.com
Wiki DKIM - DomainKeys Identified Mail
- SOA Eintrag in der ZonenDatei (Bind)
#Beispiel db.domain.tld ; Zonefile (Forward Mapping) $TTL 86400 @ IN SOA ns1.domain.tld. hostmaster.domain.tld. ( 2017070803 ; Serial 3600 ; Refresh [1h] 1800 ; Retry [30m] 1209600 ; Expire [14d] 1800 ) ; Negative Cache TTL [30m]
Der Wert für Expire sollt lt. RFC 1912 zwei bis vier Wochen betragen.
- Testen der Einstellungen
dig SOA domain.tld +multiline
In der DNS Zonendatei den CAA (Certification Authority Authorization) festlegen. RFC6844 Damit werden eine oder mehrere CAs autorisiert, für eine Domain ein Zertifikat auszustellen.
Beispiel:
example.com. CAA 0 issue "letsencrypt.org" example.com. CAA 0 issuewild "comodoca.com" example.com. CAA 0 iodef "https://iodef.example.com/" example.com. CAA 0 iodef "mailto:domain@example.com"
issue - darf Zertitikate auf beliebige Hostnamen der Domain ausstellen
issuewild - darf Wildcard-Zertifikate etwa auf *.example.com beglaubigen, der Eintrag issuewild ";"
deaktiviert Wildcard-Zertifikate.
iodef (Optional) - URL zur Benachrichtigung des Domain-Eigentümers, falls eine nicht aufgefühte CAA einen Zertifikatsantrag erhält.
RFC5070 - iodef Format
RFC6546 - Transport of Real-time Inter-network Defense (RID) Messages over HTTP/TLS
Der Webdienst von SSLMate erstellt Vorlagen zum einfügen in die Zonendatei.
; ab Bind 9.9.6 domain.tld. IN CAA 0 issue "letsencrypt.org" domain.tld. IN CAA 0 issue "comodo.com" domain.tld. IN CAA 0 issuewild ";"
RFC3597 - Syntax Legacy Zone File für Bind vor Version 9.9.6 und Windows Server 2016
; bis Bind 9.9.6 Legacy Zone File domain.tld. IN TYPE257 \# 22 000569737375656C657473656E63727970742E6F7267 domain.tld. IN TYPE257 \# 17 00056973737565636F6D6F646F2E636F6D domain.tld. IN TYPE257 \# 12 0009697373756577696C643B
- Eintrag testen
host -t CAA domain.tld dig domain.tld type257 dig domain.tld CAA
mkdir -p /var/named/jail
groupadd -g 53 named
useradd -u 53 -g named -c "chroot Bind user" -d /var/named/jail -m named
cd ~named
mkdir -p var/{run,named} {dev,etc} mkdir -p var/{run,cache/bind} {etc/bind,dev} #unter Debian
cp -Rav /var/named/data var/named/ cp -Rav /etc/bind etc/ #unter Debian cp -av /dev/{null,random} dev/ cp -av /etc/{localtime,named.conf,rndc.key} etc/ #unter Debian nicht notwendigfür einen Slave Server ein Verz. mit schreibrechten erstellen
mkdir var/named/slave chown named.named var/named/slave
chown root.root . chmod 0755 . chown root.root . chown named.named var/named/data chown named.named etc/bind/ #unter Debian chmod 0700 var/named/data chmod 0700 etc/bind/ #unter Debian chown named.named var/run
syslogd -m 0 -a /var/named/jail/dev/log
/usr/sbin/named -u named -t /var/named/jail -c /etc/bind/named.conf
ps axcu | grep named tail -n 20 /var/log/daemon.log
- Konfiguration
# /etc/unbound/unbound.conf server: interface: 0.0.0.0 interface: ::0 access-control: 127.0.0.1/8 allow access-control: ::1/128 allow access-control: 192.168.0.0/16 allow access-control: 2001:db8::/64 allow verbosity: 1
service unbound restart
- DNS auf unerlaubten Zonentransfer testen. Datei als axfr.sh speichern, start mit axfr.sh domain.tld
#!/bin/bash # Syntax: axfr.sh domain.tld # You need to have dnsutils installed DOMAIN=$1 if [ -z "$1" ]; then echo -e \\n \\t "\e[51;31m"Syntax: axfr.sh domain.tld"\e[0m" \\n; exit 1 fi dig NS $DOMAIN +short | sed -e "s/\.$//g" | \ while read nameserver; do echo "Testing $DOMAIN @ $nameserver"; dig AXFR $DOMAIN "@$nameserver"; done
bei dem Test wird der Zonentransfer nach unbekannt geprüft, das kann auftreten, wenn der Zugriff auf den Master DNS Servers nicht eingeschränkt wurde, dabei wird der Zonentransfer auf den angegebenen Server eingeschränkt.
# named.conf.options options { ...
allow-transfer { 192.168.1.1; };
- DNS-Server auf Weiterleitung testen
nmap -sU -p 53 -sV -P0 --script "dns-recursion" x.x.x.x
- DNS Resolver prüfen, oder er DNSSEC Anfragen validiert.
dig fail05.dnssec.works ; <<>> DiG 9.10.3-P4-Ubuntu <<>> fail05.dnssec.works ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 29342 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;fail05.dnssec.works. IN A ;; Query time: 117 msec ;; SERVER: 127.0.1.1#53(127.0.1.1) ;; WHEN: Sat Jul 29 20:37:16 CEST 2017 ;; MSG SIZE rcvd: 37
Als Status wird SERVFAIL geliefert, der DNS-Resolver der abgefragt wird, validiert die DNSSEC Anfragen richtig.
Beim Status NOERROR, währe diese Abfrge nicht richtig validiert, da auf dem Server DNSSEC nicht korrekt eingerichtet ist, die Anfrage muss also immer einen Fehler liefern.
- im Beispiel ist die DNSSEC Validierung in der Abfrage deaktiviert, Parameter +cd - checking disabled, keine DNSSEC Validierung durchführen
dig fail05.dnssec.works +cd ; <<>> DiG 9.10.3-P4-Ubuntu <<>> fail05.dnssec.works +cd ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14407 ;; flags: qr rd ra cd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1280 ;; QUESTION SECTION: ;fail05.dnssec.works. IN A ;; ANSWER SECTION: fail05.dnssec.works. 3595 IN A 5.45.109.212 ;; Query time: 15 msec ;; SERVER: 127.0.1.1#53(127.0.1.1) ;; WHEN: Sat Jul 29 20:52:26 CEST 2017 ;; MSG SIZE rcvd: 64
- DNSSEC Test der RootZone, die Anfrage muss auch nach dem 11.Oktober 2017 so ausgegeben werden, sonst hat der Resolver noch nicht den aktuellen DNSSEC Schlüssel der RootZone.
dig . soa +multiline @8.8.4.4 ; <<>> DiG 9.10.3-P4-Ubuntu <<>> . soa +multiline @8.8.4.4 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57 ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;. IN SOA ;; ANSWER SECTION: . 21986 IN SOA a.root-servers.net. nstld.verisign-grs.com. ( 2017072801 ; serial 1800 ; refresh (30 minutes) 900 ; retry (15 minutes) 604800 ; expire (1 week) 86400 ; minimum (1 day) ) ;; Query time: 23 msec ;; SERVER: 8.8.4.4#53(8.8.4.4) ;; WHEN: Sat Jul 29 20:56:09 CEST 2017 ;; MSG SIZE rcvd: 103
ist die Antwort positiv, werden vier Flags ausgegeben. flags: qr rd ra ad - das letzte ad steht für authenticated data, die DNS Antwort wurde positiv validiert. Fehlt das Flag, werden die Daten nicht geprüft.
Flags: (nach RFC1035)
QR = specifies whether this message is a query (0), or a response (1)
RD = Recursion Desired (set in a query and copied into the response if recursion is supported)
RA = Recursion Available (if set, denotes recursive query support is available)
AA = Authoritative Answer
TC = Truncation
AD = Authenticated Data (for DNSSEC only; indicates that the data was authenticated)
CD = Checking Disabled (DNSSEC only; disables checking at the receiving server)
Response code:
0 = NOERR, no error
1 = FORMERR, format error (unable to understand the query)
2 = SERVFAIL, name server problem
3 = NXDOMAIN, domain name does not exist
4 = NOTIMPL, not implemented
5 = REFUSED (e.g., refused zone transfer requests)
Parameter | Beschreibung |
---|---|
-t | query type Abfrage z.B. AAAA oder A6, A, SRV, ANY, CNAME, MX, NS, PTR, SOA, TXT, u.a. |
-v | Verbose |
-a | entspricht -v -t ANY |
-4 | nur IPv4 Query Ausgabe |
-6 | nur IPv6 Query Ausgabe |
- TXT REcord der Domain ausgeben
host -t TXT domain.tld