Benutzer-Werkzeuge

Webseiten-Werkzeuge


dns

Dies ist eine alte Version des Dokuments!


DNS

Bind 10 ist da:

Er ist (im Gegensatz zu seinen Vorgängern) modular und benötigt eine Phyton-Installation.

Sicherheit (DNS Records)

Null MX

Wenn man keine E-Mails mit seinem Server versenden möchte. Priorität auf 0 setzen und Wert (Mail Server) auf .

example.com. MX 0 .
*.example.com. MX 0 .

DKIM (DomainKeys Identified Mail)

https://en.wikipedia.org/wiki/DMARC

Wenn man keine E-Mails mit seinem Server versenden möchte und vermeiden will, dass jemand die Domain missbraucht.

*._domainkey.example.com. IN TXT "v=DKIM1; p="

SPF (Domain-based Message Authentication, Reporting and Conformance)

https://en.wikipedia.org/wiki/Sender_Policy_Framework

Wenn es einen MX und A Record für die Domain gibt, zulassen, ansonsten softfail.

example.com. IN TXT "v=spf1 +mx +a ~all"

Wenn man keine E-Mails mit seinem Server versenden möchte und vermeiden will, dass jemand die Domain missbraucht.

example.com. IN TXT "v=spf1 -all"

DMARC (Domain-based Message Authentication, Reporting and Conformance)

https://en.wikipedia.org/wiki/DMARC

Anfordern, dass alle E-Mails, die DKIM oder SPF nicht erfüllen in Spam zugestellt werden. Außderm alle Reports an diese E-Mail senden.

_dmarc.example.com. IN TXT "v=DMARC1; p=quarantine; sp=quarantine; pct=100; adkim=r; aspf=r; fo=1; rua=mailto:security@example.com; ruf=mailto:security@example.com"

Wenn man keine E-Mails mit seinem Server versenden möchte und vermeiden will, dass jemand die Domain missbraucht.

_dmarc.example.com. IN TXT "v=DMARC1; p=reject; sp=reject; pct=100; adkim=s; aspf=s; fo=1"

Caching only DNS

DHCP-Server und DNS-Server mit automatischem Update (DDNS)

cd /etc/bind/

cat `dnssec-keygen -a HMAC-MD5 -b 265 -n host dhcpkey`.key | cut -d " " -f 7
pBbXhGpya0ouQBfDHZhx1S7TWJnuaYo1ULFwUDG7HpExHQ==

Forwarding DNS

Abfragen

nslookup

einen Hostnamen in eine IP auflösen:

# nslookup www.heise.de

zur Auflösung eines Hostnamens einen bestimmten DNS-Server (localhost) befragen:

# nslookup www.heise.de localhost

dig

einen Hostnamen in eine IP auflösen:

# dig www.heise.de

zur Auflösung eines Hostnamens einen bestimmten DNS-Server (localhost) befragen:

# dig @localhost www.heise.de

Zone saugen

nslookup

# nslookup -q=axfr www.heise.de localhost

dig

# dig @localhost www.heise.de axfr

Konfiguration

chashing-only-DNS

(getestet in FreeBSD 4.7 mit BIND 8)

Ein chashing-only-DNS ist ein Name-Server, der die Domainnamen nur für sich speichert. Das verringert (z.B.: bei Webservern) die Netzlast.

in der Datei "/etc/rc.conf" aktivieren:

named_enable="YES"              # Run named, the DNS server (or NO).
named_program="/usr/sbin/named" # path to named, if you want a different one.
named_flags="-u bind -g bind"   # Flags for named
# vi /etc/namedb/named.conf:

options {
        directory "/etc/namedb";
        pid-file "/var/run/named/pid";
        version "[Secured]";
        query-source address * port 53;
        auth-nxdomain no;
        allow-query {
                127.0.0.1;
                };             
        listen-on {
                127/8;
                };
};

logging {
        category lame-servers {null; };
};



zone "." {
        type hint;
        file "named.root";
};

zone "0.0.127.IN-ADDR.ARPA" {
        type master;
        file "localhost.rev";
};

DNS-Server

Die IP-Adresse des DNS-Server's ist 192.168.1.1 und er löst alle Namen für das Netz 192.168.1.0/24 auf.

named.conf

# vi named.conf
options {
        directory "/etc";
        pid-file "named.pid";

        listen-on       { 127.0.0.1; 192.168.2.1; };

        forwarders {
              192.168.1.100;
        };
};

zone "domain.de" {
        type master;
        file "domain.de.db";
        notify no;
};

zone "1.168.192.in-addr.arpa" {
        type master;
        file "192.168.1.rev";
        notify no;
};

zone "extern" {
        type master;
        file "extern.db";
        notify no;
        check-names ignore;
};

forward look-up

# vi domain.de.db
$TTL            3600
@               IN      SOA     ns.domain.de. root.ns.domain.de. (
                        2010051100 ; serial
                        3600       ; 1h  refresh
                        900        ; 15M retry
                        604800     ; 7d  expire
                        3600 )     ; 1h  minimum ttl

                        IN      NS      ns.domain.de.
install                 IN      A       192.168.1.1
ns                      CNAME           install
server                  CNAME           install
datenbank               IN      A       192.168.1.10
test                    IN      A       192.168.1.11
web                     IN      A       192.168.1.12

reverse look-up

# vi 192.168.1.rev
$TTL            3600
@               IN      SOA     ns.domain.de. root.ns.domain.de. (
                        2010051100 ; serial
                        3600       ; 1h  refresh
                        900        ; 15M retry
                        604800     ; 7d  expire
                        3600 )     ; 1h  minimum ttl

              IN      NS      ns.domain.de.
10            IN      PTR     datenbank.domain.de.
11            IN      PTR     test.domain.de.
12            IN      PTR     web.domain.de.

Abkürzungen per DNS

# vi extern.db
$TTL            3600
@               IN      SOA     ns.extern. root.ns.extern. (
                        2010051100 ; serial
                        3600       ; 1h  refresh
                        900        ; 15M retry
                        604800     ; 7d  expire
                        3600 )     ; 1h  minimum ttl

              IN      NS      ns.extern.
zuhause       IN      PTR     92.93.94.95
arbeit        IN      PTR     96.97.98.99
homepage      IN      PTR     100.101.102.103
kumpel        IN      PTR     104.105.106.107

Client

/etc/resolv.conf

# vi /etc/resolv.conf
search domain.de extern
nameserver 192.168.1.1

Slave

Vorbereitungen auf dem Master

Damit der zukünftige DNS-Slave dazu berechtigt ist, einen kompletten Zonen-Transfer durchzuführen, muss dies zunächst noch auf dem Master der DNS Zone erlaubt werden:

Per "allow-transfer" erlaubt man definierten Systemen den Zonen-Transfer aller auf diesem DNS-Server konfigurierten Zonen. Soll dieses nur auf Basis einer Zone erfolgen, so muss dies explitzit bei den Einstellungen der jeweiligen Zone erfolgen. Normalerweise sind Slaves durch NS Resource Records in den Zonendateien aufgelistet. Mit der Option also-notify können weitere Slaves definiert werden, die bei Änderungen per Notify benachrichtigt werden. Da derartige Slaves nicht in den Zonendateien aufgeführt sind, werden sie auch als Stealth Server - also "verborgene Server" - bezeichnet. Falls eine zonenspezifische also-notify-Option vorhanden ist, so überschreibt diese die globale.

# vi /etc/bind/named.conf.options
options {
      directory "/var/cache/bind";

      // If there is a firewall between you and nameservers you want
      // to talk to, you may need to fix the firewall to allow multiple
      // ports to talk.  See http://www.kb.cert.org/vuls/id/800113

      // If your ISP provided one or more IP addresses for stable
      // nameservers, you probably want to use them as forwarders.
      // Uncomment the following block, and insert the addresses replacing
      // the all-0's placeholder.

      forwarders {
              10.10.2.10;
       };

      allow-query { any; };
      allow-transfer { 10.30.1.101; 10.30.1.102; 10.30.1.243; 10.30.1.244; };
      notify yes;
      also-notify { 10.30.1.101; 10.30.1.102; 10.30.1.243; 10.30.1.244; };


      auth-nxdomain no;    # conform to RFC1035
      listen-on-v6 { any; };
};

Bind

# aptitude install bind9
# scp root@dnsmaster:/etc/bind/named.conf /etc/bind/
# sed -i 's#master#slave#g' /etc/bind/named.conf.local
# vi /etc/bind/named.conf.local

alle Zeilen um einen Master-Eintrag ergänzen…

vorher:

zone "30.10.in-addr.arpa" { type slave; file "/etc/bind/domain.rev.db"; };

nachher:

zone "30.10.in-addr.arpa" { type slave; file "/etc/bind/domain.rev.db"; masters { 10.30.1.1;}; };

In dem Pfad "/etc/bind/" erlaubt AppAmor keinen Schreibzugriffe, statt dessen soll der Pfad "/var/lib/bind/" verwendet werden. Deshalb verlegen wir die Dateien in das erlaubte Verzeichnis und ändern natürlich auch die Pfade in der Datei "/etc/bind/named.conf.local" entsprechend…

vorher:

zone "30.10.in-addr.arpa" { type slave; file "/etc/bind/domain.rev.db"; masters { 10.30.1.1;}; };

nachher:

zone "30.10.in-addr.arpa" { type slave; file "/var/lib/bind/domain.rev.db"; masters { 10.30.1.1;}; };

hier müssen die DNS-Master als allow-notify konfiguriert werden:

# vi /etc/bind/named.conf.options
options {
      directory "/var/cache/bind";
      forwarders {
              10.30.1.1;
       };
      allow-notify { 10.30.1.81; 10.30.1.82; };
      auth-nxdomain no;    # conform to RFC1035
      listen-on-v6 { any; };
};

Jetzt muss der NameD nur noch neu gestartet werden. Und dann sollten die Dateien auch dort erscheinen:

# ls -l /var/lib/bind/

DHCP

Damit der "neue" zweite DNS auch per DHCP mit verteilt wird, ist noch eine kleine Änderung nötig:

# vi /etc/dhcpd.conf
...
option domain-name-servers 10.30.1.1,  10.30.1.2;
...

Und jetzt noch den DHCPD neu starten und alles wird gut… ;-)

SystemD (Ubuntu 18.04)

wenn in dieser Datei der lokale Rechner als DNS-Server drin steht:

> vi /etc/resolv.conf
nameserver 127.0.0.53

…dann übernimmt SystemD die Aufgabe, so kann man den "echten" NameServer sehen (DNS Servers:):

> systemd-resolve --status
/home/http/wiki/data/attic/dns.1634677472.txt · Zuletzt geändert: von david