[1.0] [2.0] [3.0] [3.1] [4.0] [5.0]
4.0 Optimierung: Teil 1
Nachdem das Gerüst des DNS steht, kann man versuchen zuerst die Sicherheit des DNS Servers zu verbessern. Bei der Optimierung geht es darum das Regelwerk weitgehend umzusetzen.
4.0.1. Schritt: Protokolierung – Logdateien – Logging
Der logging-Block steuert die Protokollierung des Nameservers :
– Welche Art von Information mit geschrieben wird?
– Wohin und wie die Protokollierung erfolgt?
Das „Wohin“ heißt in der Syntax des DNS-Server „channel„. Ein Channel bestimmt ob die zu protokolliernde Information in eine Datei geschrieben wird oder an Syslog weitergegeben wird.
Der zweite Aspekt ist die category. In Ihr wird ein Filter definiert, welcher die Meldung in einem oder mehren channels verschickt werden.Zur Channel-Filterung gehört auch die Logstufe, die durch das Schlüsselwort severity angegeben wird.
Schlüsselwort | Erklärung |
severity( critical | error | warning | notice | info | debug [level] | dynaim ); |
wichtigste Priorität lautet: critical, dann folgt error usw. bis zu debug, das die niedrigste Priorität hat. debug 3 gibt an bis zu welchem Debuglevel BIND-Nachrichten mit geschrieben werden. |
file „Dateiname“ [ versions (Zahl, unlimited) ] [ size Dateigröße [(K|M|G)] ]; |
Name der Log-Datei Versions Nummer versions unlimited |
print-category gibt die Katergorie mit an
(yes|no)
print-severity gibt die Priorität mit an
(yes|no)
print-time gibt Datum und Uhrzeit mit aus
(yes|no)
catergory Mit dieser Anweisung weisen sie den Nachrichten einer Kategorie einen oder mehrere „channel“ zu.
4.0.1.1 Editiere die Datei „/etc/bind/named.conf“
Füge folgendes hinzu:
1 2 3 4 5 6 7 |
logging { channel default-log { file "/var/log/dns_query.log" ; print-time yes; severity debug; print-severity yes; }; category default { default-log; }; }; |
Start BIND neu: service bind9 restart
4.0.1.2 Dateigröße size , versions
1 2 3 4 5 6 7 |
logging { channel default-log { file "/var/log/dns_query.log" versions size 500M; print-time yes; severity debug; print-severity yes; }; category default { default-log; }; }; |
Durch die „versions“-Option kann die Anzahl der angelegten Log-Dateien bestimmt werden. Wird keine Zahl hinter „versions“ angegeben sondern „unlimited“ so werden die angelegten Dateien fortlaufend nummeriert. Nach jedem Neustart von BIND wird die Log-Datei archiviert.
Mit der „size“-Option wird die Maximale Größe der Log-Datei bestimmt.
Mit dem Befehl :tail –f /var/log/dns_query.log kann man sich die letzten Ereignisse eben mal schnell in der Log-Datei ansehen.
( size xK|M|G :
K : *1024 Kilobyte
M : *1024² Megabyte
G : *1024³ Gigabyte )
4.0.2. Schritt: ACL ACL-Listen Adresslisten
In diesem Abschnitt der Datei „/etc/bind/named.conf“ legen Sie
ACLs (Access Control Lists = Zugriffssteuerungslisten) fest, mit denen Sie den Zugriff erlauben oder einschränken können. Nach der Eingabe eines eindeutigen Namens geben Sie unter eine IP-Adresse (mit oder ohne Netzmaske) wie folgt an:
acl „internWhiteList“ { 192.168.0.1/24; };
Die Syntax ist:
acl <[„]name[„] >{ Adressübereinsimmungsliste ; } ;
Die Variable <name> kann, muß aber nicht in Anführungszeichen stehen. Es ist aber besser die Anführungszeichen zu verwenden um Kollisionen mit anderen reservierten Wörtern in BIND zu vermeiden.
Es gibt 4 vordefinierte Adreßübereinstimmungslisten:
none -> keine IP-Adresse, diese ACL ist für keinen Host wahr
any -> alle IP-Adressen, diese ACL greift für alle Hosts, beliebiges Netz 0.0.0.0/0.0
localhost -> alle IP-Adressen des lokalen Hosts, auf dem der Names-Server läuft. Es ist damit nicht die IP 127.0.0.1 bemeint!
localnets -> Alle Netzwerke, in denen der lokale Hosts eine Netzwerkschnittstelle besitzt.
Wenn der Server z.B: eine Schnittstelle eth0 mit IP-Adresse 192.168.0.99 und der Subnet-Maske 255.255.255.0 (or 192.168.0.0/24) hat, so haben alle IP-Adressen von 192.168.0.0 bis 192.168.0.255 einschließlich 127.0.0.1 (der loopback) Zugriff auf den DNS-Server.
Es ergibt sich also:
acl „internWhiteList“ { localnets; );
Erläuterungen:
Der Datei „/etc/bind/named.conf“ gibt es eine Reihe von Anordnungen, die eine Liste von Adressen bzw. Schlüsseln enthalten. Man spricht auch von „Adress Match List„, die in den „Access Control Lists“ ( ACLs) zur Anwendung kommen.
„Eins sei hier vorweg genommen. Ich beschäfte mich hier nur mit dem DNS-Server der im Intranet seine Verwendung findet. Maximal setzt ich einem Unternehmen einen zweiten DNS-Server als Backup ein, man spricht in diesem Fall auch von einem „Secondary“ DNS-Server. “
Diese Liste beinhaltet folgendes:
- eine IPv4 oder IPv6 Adresse
- ein IP-Präfix in der Notation Netz/Maskenlänge z.B.: 192.168.0.99/26
- Name eines Schlüssels, der mit einer key-Anweisungdefiniert wurde ohne Anführungszeichen
- Name einer Address Match List, die mit einer acl-Anweisung definiert wurde
- eine Address Match List selbst, die nochmals in geschweiften Klammern steht
d.h:
acl „internWhiteList“ {
192.168.0.99;
192.168.0.100;
192.168.0.101;
};
4.0.3. Schritt: Informationen in DNS Config-Dateien aufbereiten bzw. verteilen
Die Bind9 Version arbeitet im Normalfall mit folgender Verzeichnis- und Datei-Struktur (Raspberry, Ubuntu,Debian). Grundsätzlich ist man frei, wohin die Informationen bzw. Dateien gespeichert werde. Es hat sich jedoch ein bestimmtes meist sinnvolles Muster (wo,wie und was in den Dateien abgespeichert wird) eingebürgert.
So steht sämtliche Information zum DNS-Server (Bind9) im Verzeichnis:
/etc/bind
Auch die Zonendateien sind dort zu finden. Je nach Komplexität der DNS-Struktur, die man noch neu aufbauen will oder die in einem Unternehmen vor gegeben ist, steht es einem natürlich frei weitere Unterverzeichnisse einzuführen.
Wie die Dateien bzw. die Struktur abgearbeitet versuche ich später zu klären, jetzt aber erstmal hier die Grundstruktur.
Grundgerüst:
-
- named.conf – Die zentrale Konfigurations-Datei unter Bind9. Hier werden die Informationen zum Server und den Serverrollen (Master, Slave, primary, secondary usw.) sowie die entsprechende Zonen hinterlegt. Die named.conf ist eigentlich nur einer Art „Zentral-Steuerdatei“ eingestuft worden. Denn sieht man sich die abgelegte Information an, so sind in dieser Datei nur noch die Verweise auf andere Dateien per „include“-Anweisung hinterlegt.
- named.conf.local – In dieser Datei sind die Referenzen der lokalen Zonen des zu konfigurierenden Netzwerks hinterlegt.
- named.conf.options – In dieser Bind9 Version werden hier Informationen zu folgenden Themen (Optionen) hinterlegt:
– Firewall zwischen DNS-Server
– Forwarders DNS-Server von Internet-Providern:
z.B.: 8.8.8.8 von Google
194.25.2.129 von T-Online - named.conf.default oder named.conf.default-zones – In dieser Datei ist eine „include“-Referenz auf die Root-ServerListe: db.root eingebaut. Zusätzlich findet man noch die Zone „db.local“ (127.0.0.0/8) , sowie einige Standardzonen . Die „default“ ARPA-Zonen: db.0, db.127, db.255 .
- bind.key – Diese Datei darf NICHT vom Benutzer konfiguriert werden.
1234# These keys are current as of January 2011. If any key fails to# initialize correctly, it may have expired. In that event you should# replace this file with a current version. The latest version of# bind.keys can always be obtained from ISC at https://www.isc.org/bind-keys. - rndc.key – Die Datei rndc.key erstellt man nicht manuell, sondern durch den Aufruf rndc-confgen -a in der Konsole, während man sich jedoch im Basisverzeichnis von BIND befindet. Es wird die Datei rndc.key erstellt, welche man sich mittels cat rndc.key anzeigen lassen kann. Das secret kopiert man nun an die entsprechende Stelle in der rndc.conf.
- zones.rfc1918 – Dort sind die Zonenbereiche der „privaten Netzwerkbereiche“ definiert. Man braucht dort nichts zu editieren.
Private IP-Netzwerk-Bereiche:172.16.0.0 bis 172.31.255.255 172.16.0.0/12 172.16/12 220 = 1.048.576 Klasse B: 16 private Netze mit jeweils 65.536 Adressen;172.16.0.0/16 bis 172.31.0.0/16 192.168.0.0 bis 192.168.255.255 192.168.0.0/16 192.168/16 216 = 65.536 Klasse C: 256 private Netze mit jeweils 256 Adressen;192.168.0.0/24 bis 192.168.255.0/24