Skip to main content

DNS-Auftrag

Aufgabenstellung

Einrichtung des Labors:

  • Ein Debian Linux-Server wird konfiguriert, um als DNS-Server zu dienen, wobei BIND (Berkeley Internet Name Domain) als Softwarelösung zum Einsatz kommt.

Konfiguration des DNS-Servers:

  • Installation von BIND: Der BIND-DNS-Server wird auf dem Debian Linux-System installiert.
  • Einrichtung der Zonen-Dateien: Konfiguration und Einrichtung der primären DNS-Zone für eine Domäne. Dabei wird besonderer Wert auf die Erstellung und Konfiguration der Zonendatei gelegt, einschließlich aller relevanten DNS-Einträge und des SOA (Start of Authority) Records.
  • Konfiguration eines sekundären DNS-Servers: Einrichtung eines sekundären (Slave) DNS-Servers für Redundanz und zur Demonstration der automatisierten Zonensynchronisation.

Analyse und erweiterte Konfiguration:

  • Analyse der DNS-Anfragen: Verwendung von Wireshark zur Aufzeichnung und Analyse der DNS-Anfragen. Dies umfasst das Verständnis der rekursiven Anfragen und der Antwortpakete.
  • Erforschung verschiedener DNS-Record-Typen: Untersuchung und Erläuterung unterschiedlicher Arten von DNS-Einträgen (wie A, AAAA, MX, CNAME, TXT) und deren Anwendung.
  • Dynamische DNS-Updates: Experimentieren mit dynamischen Updates von DNS-Einträgen. Nutzung von tsig-keygen zur Generierung sicherer Schlüssel für die Authentifizierung von Update-Anfragen.
  • Integration in bestehende Netzwerkumgebungen: Einbeziehung des konfigurierten DNS-Servers in ein bestehendes Netzwerk, eventuell unter Nutzung von exotischen Betriebssystemen, um deren Kompatibilität und Funktionalität in Bezug auf DNS-Anfragen zu testen.
  • Erforschung von DNS unter IPv6: Untersuchung der Besonderheiten und Konfigurationen von DNS in IPv6-Netzwerken, einschließlich Reverse-DNS.

image.png

DNS-Auftrag.excalidraw

Theorie

DNS Einträge

A (Address Record)

  • Verwendung: Verknüpft einen Domainnamen mit der IP-Adresse eines Servers.
  • Beispiel: example.com A 192.0.2.1
  • Seit: Das A-Record ist einer der ursprünglichen DNS-Einträge, eingeführt mit dem Start des DNS-Systems 1983.

AAAA (IPv6 Address Record)

  • Verwendung: Ähnlich wie das A-Record, aber für IPv6-Adressen.
  • Beispiel: example.com AAAA 2001:0db8::1
  • Seit: Eingeführt Anfang der 1990er Jahre als Teil der Einführung von IPv6.

PTR (Pointer Record)

  • Verwendung: Wird für Reverse DNS (rDNS) Lookups verwendet, um eine IP-Adresse in den zugehörigen Hostnamen zu übersetzen.
  • Beispiel: 1.2.0.192.in-addr.arpa PTR example.com
  • Seit: Seit den Anfängen von DNS, 1983.

TXT (Text Record)

  • Verwendung: Ermöglicht es einem Administrator, beliebigen Text in einem DNS-Eintrag zu speichern.
  • Beispiel: example.com TXT "v=spf1 include:_spf.google.com ~all"
  • Seit: Eingeführt in den 1990er Jahren.

MX (Mail Exchange Record)

  • Verwendung: Definiert die Mailserver, die für den Empfang von E-Mails für eine Domain zuständig sind.
  • Beispiel: example.com MX 10 mail.example.com
  • Seit: Seit den Anfängen von DNS, 1983.

SRV (Service Record)

  • Verwendung: Spezifiziert den Standort der Server für bestimmte Dienste.
  • Beispiel: _sip._tcp.example.com SRV 10 5 5060 sipserver.example.com
  • Seit: Eingeführt in den späten 1990ern.

 

SPF (Sender Policy Framework)

  • Verwendung: Hilft dabei, E-Mail-Spoofing zu verhindern, indem festgelegt wird, welche Mailserver E-Mails für eine Domain senden dürfen.
  • Beispiel: example.com TXT "v=spf1 ip4:192.0.2.0/24 -all"
  • Seit: Eingeführt 2004, aber 2014 offiziell als veraltet erklärt und durch DMARC ersetzt.

NAPTR (Naming Authority Pointer)

  • Verwendung: Wird verwendet in Verbindung mit SIP und ENUM zum Routing von Telefonanrufen über das Internet.
  • Beispiel: 2.0.2.4.1.2.9.e164.arpa NAPTR 100 10 "u" "E2U+sip" "!^.*$!sip:number@example.com!" .
  • Seit: Eingeführt in den späten 1990er Jahren.

CAA (Certificate Authority Authorization)

  • Verwendung: Gibt an, welche Zertifizierungsstellen Zertifikate für eine Domain ausstellen dürfen.
  • Beispiel: example.com CAA 0 issue "letsencrypt.org"
  • Seit: Eingeführt 2013.

NS (Name Server Record)

  • Verwendung: Gibt die Nameserver an, die für eine bestimmte Domain zuständig sind.
  • Beispiel: example.com NS ns1.example.com
  • Seit: Seit den Anfängen von DNS, 1983.

DS (Delegation Signer)

  • Verwendung: Wird im DNSSEC-Protokoll verwendet, um die Authentizität der Nameserver-Informationen einer Domain zu bestätigen.
  • Beispiel: example.com DS 12345 5 1 49FD46E6C4B45C55D4AC69DB588D2B9411AEDB4F
  • Seit: Eingeführt mit DNSSEC in den 2000er Jahren.

Aufbau der Umgebung

Konfiguration des DNS Servers (Master)

Schritt 1: Installation von BIND

Paketdatenbank aktualisieren:
sudo apt-get update
BIND Installieren:
sudo apt-get install bind9 bind9utils bind9-doc dnsutils

Schritt 2: Konfiguration von BIND

Edit the named.conf.options file:
sudo nano /etc/bind/named.conf.options
acl LAN {
192.168.1.0/26;
};
options {
        directory "/var/cache/bind"; // default directory
        allow-query { localhost; LAN; }; // allow queries from localhost and 192.168.1.0-192.168.1.255
        forwarders { 1.1.1.1; }; // use CloudFlare 1.1.1.1 DNS as a forwarder
        recursion yes;  // allow recursive queries
};
named-checkconf /etc/bind/named.conf.options

image.png

Edit the named.conf.local file
sudo nano /etc/bind/named.conf.local
zone "test.local" {
    type master;
    file "/etc/bind/zones/db.test.local"; # Pfad zur Zonendatei
    allow-transfer { 192.168.1.5; }; # IP des sekundären DNS-Servers
};
zone "1.168.192.in-addr.arpa" IN {
     type master;
     file "/etc/bind/zones/db.test.local.rev"; # Pfad zur Zonendatei
     allow-transfer { 192.168.1.5; }; # IP des sekundären DNS-Servers
}
named-checkconf /etc/bind/named.conf.local

image.png

Zone Folder erstellen:
mkdir /etc/bind/zones
Forward Zone File erstellen:
nano /etc/bind/zones/db.test.local
$TTL    604800
@       IN      SOA     ns1.test.local. admin.test.local. (
                           3         ; Serial
                      604800         ; Refresh
                       86400         ; Retry
                     2419200         ; Expire
                      604800 )       ; Negative Cache TTL
;
@       IN      NS      ns1.test.local.
@       IN      NS      ns2.test.local.
ns1     IN      A       192.168.1.4
ns2     IN      A       192.168.1.5
router  IN      A       192.168.1.1
named-checkzone test.local /etc/bind/zones/db.test.local

image.png

Reverse Zone File erstellen:
nano /etc/bind/zones/db.test.local.rev
$TTL    604800
; SOA record with MNAME and RNAME updated
@       IN      SOA     cherry.example. root.cherry.example. (
                              2         ; Serial Note: increment after each change
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
; Name server record
@       IN      NS      ns1.test.local.
@       IN      NS      ns2.test.local.
; A record for name server
ns1     IN      A       192.168.1.4
ns2     IN      A       192.168.1.5
; PTR record for name server
4       IN      PTR     ns1.test.local.
5       IN      PTR     ns2.test.local.
; PTR record for clients
1       IN      PTR     router.test.local.
named-checkzone test.local /etc/bind/zones/db.test.local.rev

image.png

Bind Neustarten
systemctl restart bind9

Testen des DNS Servers

Forward Zone
nslookup ns1.test.local 192.168.1.4
nslookup ns2.test.local 192.168.1.4
nslookup router.test.local 192.168.1.4

image.png

Reverse Zone
nslookup 192.168.1.1 192.168.1.4
nslookup 192.168.1.4 192.168.1.4
nslookup 192.168.1.5 192.168.1.4

image.png

Konfiguration des DNS Servers (Slave)

Schritt 1: Installation von BIND

Paketdatenbank aktualisieren:
sudo apt-get update
BIND Installieren:
sudo apt-get install bind9 bind9utils bind9-doc dnsutils

Schritt 2: Konfiguration von BIND

Edit the named.conf.options file:
sudo nano /etc/bind/named.conf.options
acl LAN {
192.168.1.0/26;
};
options {
        directory "/var/cache/bind"; // default directory
        allow-query { localhost; LAN; }; // allow queries from localhost and 192.168.1.0-192.168.1.255
        forwarders { 1.1.1.1; }; // use CloudFlare 1.1.1.1 DNS as a forwarder
        recursion yes;  // allow recursive queries
};
named-checkconf /etc/bind/named.conf.options

image.png

Edit the named.conf.local file
sudo nano /etc/bind/named.conf.local
zone "test.local" {
    type slave;
    file "secondary/db.test.local"; # Pfad für die sekundäre Zonendatei
    masters { 192.168.1.4; }; # IP des primären DNS-Servers
};
zone "1.168.192.in-addr.arpa" IN {
     type slave;
     file "secondary/db.test.local.rev";
     masters { 192.168.1.4; };
};
named-checkconf /etc/bind/named.conf.local

image.png

Bind Neustarten
systemctl restart bind9

Testen des DNS Servers

Forward Zone
nslookup ns1.test.local 192.168.1.5
nslookup ns2.test.local 192.168.1.5
nslookup router.test.local 192.168.1.5

image.png

Reverse Zone
nslookup 192.168.1.1 192.168.1.5
nslookup 192.168.1.4 192.168.1.5
nslookup 192.168.1.5 192.168.1.5

image.png

Erweiterte Konfiguration und Analyse

Einbinden in vorhandenes Netzwerk

vogelsrv42002 - DHCP Konfiguration ändern
sudo nano /etc/dhcp/dhcpd.conf
# minimal sample /etc/dhcp/dhcpd.conf
default-lease-time 600;
max-lease-time 7200;

subnet 192.168.1.0 netmask 255.255.255.192 {
 range 192.168.1.10 192.168.1.50;
 option routers 192.168.1.1;
 option domain-name-servers 192.168.1.4, 192.168.1.5;
}
systemctl restart isc-dhcp-server
Testen der neuen Konfiguration
nslookup /release
nslookup /all

image.png

Wireshark Analyse der DNS abfragen

Forward abfragen

image.png

image.png

image.png

 

image.png

image.png

image.png

image.png

Reverse abfragen

image.png

image.png

image.png

image.png

Cloud DNS (AWS)

In AWS besitze Ich bereits eine DNS Zone Namens mregli.cloud. Die Zone wird gemanaged in einem Service Namens Route 53 (DNS-Service). Das UI sieht wie folgt aus:

image.png

In AWS kann man die folgenden DNS Einträge erstellen:

image.png

Der Grund wieso man den AWS DNS benutzen soll ist da man die DNS Server im Hintergrund nicht selber Managen muss und da die DNS Server eine 100% Verfügbarkeit versprechen da die DNS Funktion niemals ausfallen darf.