Linux - Netzwerk und Serveradminstration DNS DNSEC: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 208: | Zeile 208: | ||
OK | OK | ||
| − | = | + | ==Verzeichnis wechseln== |
| − | + | *cd /var/cache/bind/ | |
| − | |||
| − | |||
| − | |||
| − | * | ||
=DNSSEC Schlüssel erzeugen= | =DNSSEC Schlüssel erzeugen= | ||
| − | + | ||
;Forward Zone | ;Forward Zone | ||
| − | *dnssec-keygen -a RSASHA256 -b 2048 -n ZONE | + | *dnssec-keygen -a RSASHA256 -b 2048 -n ZONE it213.int |
| − | *dnssec-keygen -a RSASHA256 -b 4096 -f KSK -n ZONE | + | *dnssec-keygen -a RSASHA256 -b 4096 -f KSK -n ZONE it213.int |
=DNSKEY einbinden= | =DNSKEY einbinden= | ||
| + | |||
;Forward | ;Forward | ||
| − | *for k in | + | *for k in Kit213.int.+*.key ; do echo "\$INCLUDE $k" >> /var/cache/bind/it213.int; done |
=Zonen signieren= | =Zonen signieren= | ||
| − | *dnssec-signzone -A -N INCREMENT -o | + | |
| + | *dnssec-signzone -A -N INCREMENT -o it213.int -t /var/cache/bind/it213.int | ||
| + | |||
;Erzeugt | ;Erzeugt | ||
<pre> | <pre> | ||
| − | /var/cache/bind/ | + | /var/cache/bind/it213.int.signed |
</pre> | </pre> | ||
| + | |||
*systemctl restart named | *systemctl restart named | ||
=DS Record für Fake Root erzeugen= | =DS Record für Fake Root erzeugen= | ||
| + | |||
;DS aus signierter Zone erzeugen | ;DS aus signierter Zone erzeugen | ||
| − | *dnssec-dsfromkey -f /var/cache/bind/ | + | *dnssec-dsfromkey -f /var/cache/bind/it213.int.signed it213.int |
| + | |||
;DS Eintrag an Fake Root weitergeben | ;DS Eintrag an Fake Root weitergeben | ||
;Im Fake Root in Zone int einfügen | ;Im Fake Root in Zone int einfügen | ||
| + | |||
;Beispiel: | ;Beispiel: | ||
| − | ; | + | ;it213 IN NS ns.it213.int. |
| − | ;ns. | + | ;ns.it213.int. IN A 10.88.213.21 |
| − | ; | + | ;it213.int. IN DS 12345 8 2 ABCDEF123456.... |
| + | |||
;Danach Fake Root neu signieren | ;Danach Fake Root neu signieren | ||
*cd /var/cache/bind | *cd /var/cache/bind | ||
*dnssec-signzone -A -N INCREMENT -o int int | *dnssec-signzone -A -N INCREMENT -o int int | ||
*rndc reload | *rndc reload | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
=Handling und Logging= | =Handling und Logging= | ||
*systemctl restart bind9 | *systemctl restart bind9 | ||
*journalctl -fu bind9 | *journalctl -fu bind9 | ||
| − | *journalctl -u bind9 -g | + | *journalctl -u bind9 -g it213.int |
=Validierungstest= | =Validierungstest= | ||
| + | |||
;Forward Validierung | ;Forward Validierung | ||
| − | *dig www. | + | *dig www.it213.int +dnssec |
| + | |||
;Antwort muss AD-Flag enthalten | ;Antwort muss AD-Flag enthalten | ||
Version vom 24. April 2026, 14:12 Uhr
Vorab Theorie
Pseudo Top-Level-Domain
Pseudo-Top-Level Domäne
- Um die Domänen der anderen Labore aufzulösen ist ein Forwarder nötig
- Dieser zeigt auf den entsprechenden DNS-Server der Domäne, sodass die Zonen nur einmal definiert werden müssen
Vorbereitungen
- VirtualBox Server-Vorlage klonen
- Der Host soll im DMZ-Netzwerk liegen
- statische IP-Adresse nach dem Netzwerkplan setzen (/etc/network/interfaces)
- SSH-Schlüssel des Kit Hosts für User kit hinterlegen
Netzkonfiguration DNS-Server (DMZ)
| Parameter | Wert | Erläuterung |
|---|---|---|
| Netzwerk (NIC) | DMZ | Interface-Zuweisung in VirtualBox |
| IP | 10.88.2XX.21 | Statische IP |
| CIDR | 24 | Classless Inter-Domain Routing Präfixlänge |
| GW | 10.88.2XX.1 | GATEWAY |
| NS | 192.168.HS.88 | Resolver |
| FQDN | ns.it2XX.int | Fully Qualified Domain Name |
| SHORT | ns | Short Name |
| DOM | it2XX.int | Domain Name |
- Anpassen des Templates
DNS Umsetzung
Installation
- apt install bind9
Stop
- systemctl stop named
Start
- systemctl start named
Restart
- systemctl restart named
Status
- systemctl status named
Hauptkonfiguration
Standardmäßig ist die Konfiguration von bind9 auf mehrere Dateien aufgeteilt:
/etc/bind/named.conf
#Diese Datei inkludiert einfach nur die anderen 3 Dateien
Allgemeine Option zum Nameserver
include "/etc/bind/named.conf.options";
Hier kommen die eignen Zonen rein
include "/etc/bind/named.conf.local";
Hier werden die Root Nameserver konfigurtiert
include "/etc/bind/named.conf.root-hints";
Trust Anker einfügen
- cd /etc/bind/
- wget http://192.168.X.88/trust-anchors.conf
- echo 'include "/etc/bind/trust-anchors.conf";' >> named.conf
/etc/bind/named.conf.options
Berechtigungen und Einschränkungen
options {
directory "/var/cache/bind";
forwarders { <DNSGW>; };
empty-zones-enable no;
allow-query { 0.0.0.0/0; };
allow-recursion { 10.88.2XX.0/24; 172.26.2XX.0/24; 10.2XX.1.0/24; 127.0.0.1; };
allow-transfer {127.0.0.1; };
dnssec-validation yes;
listen-on-v6 { none; };
listen-on { any; };
};
Erklärungen
- directory "/var/cache/bind";
- Das ist das Basisverzeichnis der Zonen-Datein
- forwarders { <DNSGW>; };
- Wir richten alle Anfragen die wir nicht selbst beantworten können and er Forwarder
- empty-zones-enable no;
- Deaktiviert die eingebauten leeren Zonen für private IP-Bereiche (RFC 1918), damit PTR-Anfragen an den Forwarder weitergeleitet werden anstatt lokal mit NXDOMAIN beantwortet zu werden.
- allow-query { 0.0.0.0/0; };
- Diese Rechner dürfen den Nameserver nach dem von ihm verwalteten Zonen befragen.
- allow-recursion { 10.88.2XX.0/24; 172.26.2XX.0/24; 10.2XX.1.0/24; 127.0.0.1; };
- Diese Rechner dürfen den Nameserver nach Einträgen befragen die er nicht selbst beantworten kann.
- allow-transfer {127.0.0.1; };
- Diese Rechner dürfen einen axfr Abfrage durchführen.
- listen-on-v6 { none; };
- Wir schalten IPv6 ab
- listen-on { any; };
- Wir lauschen an allen Schnittstellen
- dnssec-validation yes;
- DNSSEC Validierung ist aktiviert
Restart
- systemctl restart named
Konfigurations
/etc/bind/named.conf.root-hints
// prime the server with knowledge of the root servers
zone "." {
type hint;
file "/usr/share/dns/root.hints";
};
/etc/bind/named.conf.local
//Standardmässig leer
//Hier werden die sogenanten Zonen angelegt.
zone "it2xx.int" {
type master;
file "it2xx.int.signed";
};
zone "2xx.88.10.in-addr.arpa" {
type master;
file "2xx.88.10.in-addr.arpa";
};
Erklärungen
- zone "it2xx.int" {
- Die beschreibt den authoritiven Bereich den ihr verwaltet
- type master;
- Wir befinden uns auf primären Nameserver
- file "it2xx.int.signed";
- In dieser Datei werden die signierten Zonendaten konfiguriert. Der Pfad ist relativ zur directory Direktive.
- };
- Abschluss des authoritiven Bereich.
Konfigurationsverzeichnis
/var/cache/bind
Forward Zonen Datei ohne Secundary DNS
- Die Zonendatei enthält die Informationen zu den Adressen, und sieht folgendermaßen aus:
- vi /var/cache/bind/it2xx.int
$TTL 1 ; 1 Sekunde
@ IN SOA ns.it2XX.int. technik.it2XX.int. (
2025062501 ; serial
14400 ; refresh (4 hours)
3600 ; retry (1 hour)
3600000 ; expire (5 weeks 6 days 16 hours)
300 ; minimum (5 min)
)
NS ns.it2xx.int.
MX 10 mail.it2xx.int.
fw IN A 10.88.2XX.1
ns IN A 10.88.2XX.21
sftp IN A 10.88.2XX.15
proxy IN A 10.88.2XX.4
mail IN A 10.88.2XX.3
www IN A 10.88.2XX.11
revproxy IN A 10.88.2XX.41
checkmk IN A 10.88.2XX.5
ntp IN A 10.88.2XX.17
nextcloud IN A 10.88.2XX.8
docker IN A 10.88.2XX.9
dhcp IN A 172.26.2XX.2
smb IN A 10.2XX.1.2
ldap IN A 10.2XX.1.3
Check
- named-checkzone it213.int /var/cache/bind/it213.int
zone it213.int/IN: loaded serial 2011090204 OK
Reverse Zonen Datei
- vi /var/cache/bind/2XX.88.10.in-addr.arpa
$TTL 1
@ IN SOA ns.it2XX.int. technik.it2XX.int. (
2025062501 ; serial
14400 ; refresh (4 hours)
3600 ; retry (1 hour)
3600000 ; expire (5 weeks 6 days 16 hours)
300 ; minimum (5 min)
)
IN NS ns.it2XX.int.
1 IN PTR fw.it2XX.int.
21 IN PTR ns.it2XX.int.
3 IN PTR mail.it2XX.int.
4 IN PTR proxy.it2XX.int.
17 IN PTR ntp.it2XX.int.
11 IN PTR www.it2XX.int.
15 IN PTR sftp.it2XX.int.
41 IN PTR revproxy.it2XX.int.
5 IN PTR checkmk.it2XX.int.
8 IN PTR docker.it2XX.int.
9 IN PTR nexcloud.it2XX.int.
Check
- named-checkzone 213.88.10.in-addr.arpa /var/cache/bind/213.88.10.in-addr.arpa
zone 213.88.10.in-addr.arpa/IN: loaded serial 2011090204 OK
Verzeichnis wechseln
- cd /var/cache/bind/
DNSSEC Schlüssel erzeugen
- Forward Zone
- dnssec-keygen -a RSASHA256 -b 2048 -n ZONE it213.int
- dnssec-keygen -a RSASHA256 -b 4096 -f KSK -n ZONE it213.int
DNSKEY einbinden
- Forward
- for k in Kit213.int.+*.key ; do echo "\$INCLUDE $k" >> /var/cache/bind/it213.int; done
Zonen signieren
- dnssec-signzone -A -N INCREMENT -o it213.int -t /var/cache/bind/it213.int
- Erzeugt
/var/cache/bind/it213.int.signed
- systemctl restart named
DS Record für Fake Root erzeugen
- DS aus signierter Zone erzeugen
- dnssec-dsfromkey -f /var/cache/bind/it213.int.signed it213.int
- DS Eintrag an Fake Root weitergeben
- Im Fake Root in Zone int einfügen
- Beispiel
- it213 IN NS ns.it213.int.
- ns.it213.int. IN A 10.88.213.21
- it213.int. IN DS 12345 8 2 ABCDEF123456....
- Danach Fake Root neu signieren
- cd /var/cache/bind
- dnssec-signzone -A -N INCREMENT -o int int
- rndc reload
Handling und Logging
- systemctl restart bind9
- journalctl -fu bind9
- journalctl -u bind9 -g it213.int
Validierungstest
- Forward Validierung
- dig www.it213.int +dnssec
- Antwort muss AD-Flag enthalten
Status
- systemctl status named
Logs
- Aktualisierte Log von named
- journalctl -fu named
- Die letzten 20 Log Zeilen vom named
- journalctl -n 20 -u named
- Aktualisierte Log von named plus grepen nach it213
- journalctl -fu named -g it213
Sind die Ports geöffnet
- ss -lntpu | grep named
