BIND

Der Berkeley Internet Name Domain Server (BIND) ist der verbreitetste DNS. Mitte der 80er Jahre erschienen, gilt BIND seit 2007 als DNS-Referenzsoftware. Version 9 erschien im Jahr 2000, seit 2013 ist BIND 10 verfügbar. In RHEL 7 kommt BIND 9.9 zum Einsatz, in RHEL 8 Bind 9.11.

Ein Caching Only Nameserver ist ein nicht-autoritativer Nameserver, der keine eigene Zone (wie beispielsweise example.com) verwaltet. Er muss daher alle eintreffenden DNS-Anfragen über andere Nameserver (Forwarder) auflösen, und speichert das Ergebnis zwecks Caching im lokalen RAM ab. Jeder Cache-Eintrag besitzt ein eigenes Verfallsdatum (TTL, Time To Live), nach dessen Ablauf der Eintrag aus dem Cache gelöscht wird. Die TTL wird dabei durch einen autoritativen Nameserver für diesen Eintrag festgelegt.

Begriffe:

  • ARPA: Address and Routing Parameter Area

  • SOA: Start of Authority

Installation

Auf RHEL: Das Paket heisst „bind“, der Service heisst „named“.

yum -y install bind
systemctl enable --now named.service

Wird der named-Server das erste mal gestartet und bleibt mit der Meldung Generating /etc/rndc.key hängen, falls man per SSH eingeloggt ist: Direkt auf die (VM-)Konsole wechseln und dort den ersten Start ausführen. Der Grund liegt in der Erstellung eines starken, kryptographischen Schlüssels für den DNS, für die Zufallsinformationen aus Tastatur- und Maus-Streams bezogen werden - die beim Zugang per SSH fehlen können.

Beispiel-Konfiguration

Konfiguration:

  • Lokaler DNS, standalone

  • verwaltet die Forward-Zone example.com

  • verwaltet die Reverse-Zone 192.0.2.x

  • bietet nur IPv4

  • leitet Anfragen ausserhalb seiner Zonen an Cloudflare DNS-Server weiter

  • versteckt seine Versionsnummer in DNS-Anfragen

Auf RHEL:

/etc/sysconfig/named
OPTIONS=-4
/etc/named.conf
acl "trusted" {
    localhost;
    localnets;
    192.0.2.0/24;
};

options {
    allow-query-cache { trusted; };
    allow-recursion { trusted; };
    allow-transfer { none; };
    bindkeys-file "/etc/named.iscdlv.key";
    directory "/var/named";
    disable-empty-zone yes;
    dnssec-enable no;
    dnssec-validation no;
    dump-file "/var/named/data/cache_dump.db";
    filter-aaaa-on-v4 yes;
    forward only;
    forwarders {
        1.1.1.1;
        1.0.0.1;
    };
    listen-on port 53 { any; };
    listen-on-v6 { none; };
    managed-keys-directory "/var/named/dynamic";
    memstatistics-file "/var/named/data/named_mem_stats.txt";
    pid-file "/run/named/named.pid";
    recursion yes;
    session-keyfile "/run/named/session.key";
    statistics-file "/var/named/data/named_stats.txt";
    version "Linuxfabrik";
};

logging {
    channel default_debug {
        file "data/named.run";
        severity dynamic;
    };
};

zone "." IN {
    type hint;
    file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

zone "linuxfabrik.it" IN {
    type master;
    file "forward.zone";
    // do normal iterative resolution (do not forward)
    forwarders { };
    allow-query { trusted; };
    allow-transfer { trusted; };
    allow-update { none; };
};

zone "2.0.192.in-addr.arpa" IN {
    type master;
    file "reverse.zone";
    // do normal iterative resolution (do not forward)
    forwarders { };
    allow-query { trusted; };
    allow-transfer { trusted; };
    allow-update { none; };
};

Hardening

Wer die Versionssnummer des BIND verstecken möchte, verwendet:

/etc/named.conf
options {
    version "my-namesrv :-)";
    filter-aaaa-on-v4 yes;
    ....

Wer im Vulnerability-Scanner „Nessus“ das Finding „DNS Server Cache Snooping Remote Information Disclosure“ erhält, muss sich überlegen, ob das Finding nur möglich war, weil der Nessus-Client genau im erlaubten Netzsegment steckt.

Built on 2022-06-03