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.
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
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
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
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
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
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
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
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
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
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
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
Wireshark Analyse der DNS abfragen
Forward abfragen
Reverse abfragen
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:
In AWS kann man die folgenden DNS Einträge erstellen:
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.
Dynamische DNS-Updates (Local)
mkdir /secrets
tsig-keygen ddns >> /secrets/ddns
key "ddns" {
algorithm hmac-sha256;
secret "TYkYPXTJXYVc9gM3cDvSbuwSaZ73bLf6LVfeKmDCB78=";
};
...
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
allow-update { key "ddns"; };
};
...
Da AppArmor für den Prozess named
im Erzwingungsmodus ist, müssen wir das Profil anpassen, um die erforderlichen Berechtigungen für die DNS-Updates zuzulassen. Gehen Sie wie folgt vor:
AppArmor-Profil für BIND lokalisieren: Das AppArmor-Profil für BIND befindet sich normalerweise unter /etc/apparmor.d/usr.sbin.named
. Öffnen Sie diese Datei zur Bearbeitung:
sudo nano /etc/apparmor.d/usr.sbin.named
systemctl restart bind9
copy /secret/ddns to another server
nsupdate -k /secrets/ddns
> server ns1.example.com
> update add home.test.local 200 A 1.2.3.4
> send
Test
nslookup home.test.local