Sicherer DNS mit BIND und chroot-Umgebung
BIND ist ein von der Universität Berkeley (USA) entwickelter DNS-Server, der eine hohe Verbreitung in mittleren bis großen Netzen findet. Er ist als Open Source erhältlich und wurde auf fast jedes Betriebssystem portiert. Bis heute gilt BIND als „die Referenz“ unter den DNS-Servern und bildet den Grundstock des heutigen Internets.
Installation
Der unter Linux/Unix eingesetzte Nameserver wird BIND genannt
yum install bind bind-chroot bind-libs bind-utils
Autorisieren
Damit nur autorisierte Systeme den DNS-Server kontrollieren können, muss ein rndc-Schlüssel erstellen werden, welcher für die Kommunikation zwischen DHCP- und DNS-Server verwendet wird.
rndc-confgen -a
Zugriffsrechte der Datei ändern:
chmod 0644 /etc/rndc.key
Konfigurieren
Zuerst muss der Server zum BIND-Server werden:
vim /etc/resolv.conf nameserver 192.168.4.1 # IP Adresse durch die eigene Adresse ersetzen
Jetzt kann der Dienst konfiguriert werden.
vim /etc/named.conf
include "/etc/rndc.key"; controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndc-key"; }; }; options { directory "/var/named"; managed-keys-directory "/var/named/dynamic"; pid-file "/var/run/named/named.pid"; ## Hier dei eigene IP eintragen listen-on { 127.0.0.1; 192.168.4.79; }; Beschränkt auf Netzwerkbereiche allow-query { 127.0.0.1; 192.168.4.0/24; }; # Rekursives Abfragen ermöglichen recursion yes; allow-recursion { 127.0.0.1; 192.168.4.0/24; }; forwarders { 192.168.4.79; }; query-source address * port 53; version "REFUSED"; }; # Root-Zone zone "." IN { type hint; file "named.ca"; }; #LAN-Zone zone "home.lan" IN { type master; file "home.lan.zone"; allow-update { key "rndc-key"; }; notify yes; }; # Arpa reserve zone "4.168.192.in-addr.arpa" in { type master; file "192.168.4.zone"; allow-update { key "rndc-key"; }; notify yes; };
Für die Root-Zone müssen Sie nur die Vorlage nach /var/named/chroot/var/named/ kopieren.
cp /usr/share/doc/bind-9.8.2/sample/var/named/named.ca /var/named/chroot/var/named/
Vorlage für die Zone Home-LAN weatellen:
vi /var/named/chroot/var/named/home.lan.zone
mit diesem Inhalt:
$ORIGIN . $TTL 172800 ; 2 days home.lan IN SOA srv.meteosat.de. ( 2012101100 ; serial 10800 ; refresh (3 hours) 900 ; retry (15 minutes) 604800 ; expire (1 week) 86400 ; minimum (1 day) ) NS srv.meteosat.de. MX 10 srv.meteosat.de. $ORIGIN home.lan. ftp CNAME server mail CNAME server ns CNAME server ntp CNAME server router A 192.168.4.1 server A 192.168.4.79
Die Reserve-Zone erstellen
vi /var/named/chroot/var/named/192.168.4.zone # Achtung Name anpassen!
mit diesem Inhalt
$ORIGIN . $TTL 172800 ; 2 days 10.168.192.in-addr.arpa IN SOA srv.meteosat.de. ( 2012101100 ; serial 10800 ; refresh (3 hours) 900 ; retry (15 minutes) 604800 ; expire (1 week) 86400 ; minimum (1 day) ) NS server. $ORIGIN 10.168.192.in-addr.arpa. 1 PTR srv.meteosat.de. 2 PTR srv.meteosat.de.
Jetzt dei Zugriffsberechtigungen anpassen
chown named:named /var/named/chroot/var/named/home.lan.zone /var/named/chroot/var/named/192.168.4.zone
Zonendaten Update erlauben
vi /etc/sysconfig/named
diese Zeile hinzu fügen:
ENABLE_ZONE_WRITE=yes
CHROOT Umgebung anpassen
mkdir /var/named/chroot/var/named/dynamic touch /var/named/chroot/var/named/dynamic/managed-keys.bind chown -R named:named /var/named/chroot/var/named/dynamic/ chmod 0770 /var/named/chroot/var/named/dynamic/
An der Firewall den Port freigeben
Wir müssen noch den UDP-Port 53 und den TCP-Port 53 in der Firewall freigeben.
iptables -I INPUT -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT service iptables save
Start und Stop
service named start
oder
/etc/init.d/named start
Selbst bekannt machen
Dazu muss der eigene Server in der eigenen /etc/resolv.conf inklusive Suchdomäne eingetragen werden
search meteosat.de nameserver 192.168.4.79
Testen
nslookup
nslookup yourdomain.com
muss ergeben
Server: 192.168.0.1 Address: 192.168.0.1#53
Name: yourdomain.com Address: 192.168.0.1
dig
dig yourdomain.com
soll ergeben:
; DiG 9.2.4 yourdomain.com ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10576 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;yourdomain.com. IN A ;; ANSWER SECTION: yourdomain.com. 86400 IN A 192.168.0.1 ;; AUTHORITY SECTION: yourdomain.com. 86400 IN NS ns1.yourdomain.com. ;; ADDITIONAL SECTION: ns1.yourdomain.com. 86400 IN A 192.168.0.1 ;; Query time: 8 msec ;; SERVER: 192.168.0.1#53(192.168.0.1) ;; WHEN: Sat Aug 2 10:56:16 2008 ;; MSG SIZE rcvd: 85
DHCP anpassen
Damit der DHCP-Server den Nameserver über die vergebenen IP-Adressen informiert und die Rechnernamen übergibt, müssen Sie an der dhcpd.conf einige Änderungen vornehmen.
vi /etc/dhcp/dhcpd.conf
Zuerst fügen Sie den folgenden Abschnitt für den rndc-Schlüssel ein. Bei der Option secret geben Sie den Schlüssel aus der /etc/rndc.key an.
key rndc-key { algorithm hmac-md5; secret "ZoSPmwAle0DiJTOrBVfYvw=="; };Anschließend ändern Sie die Option ddns-update-style wie folgt ab.
ddns-update-style interim;
Zum Schluss fügen Sie noch die Lookup- und Reverse-Lookup-Zonen ein welche aktualisiert werden sollen.
zone home.lan. { primary 127.0.0.1; key rndc-key; } zone 4.168.192.in-addr.arpa. { primary 127.0.0.1; key rndc-key; }Nachdem Sie die dhcpd.conf abgespeichert haben, müssen Sie den DHCP-Server neu starten.
service dhcpd restart
Namensauflösung optimieren, ohne eigenen DNS
- auf der Seite www.denic.de nach dem eigenen Provider suchen
- unten auf der Ergebnisseite einen DNS Derver aussuchen und anpingen
- die so gefundene IP-Adresse ist der direkte DNS ihres Providers
- Diese IP-Adresse bei den DHCP-Servereinstellungen als DNS mitgeben
- Für die loale Namensauflösung auf jedem PC die Datei hosts anpassen (Siehe Netzwerkeinstellungen im Kapitel Installation)
- Für Windows: %SystemRoot%\system32\drivers\etc\hosts
- Für Linux: /etc/hosts