Configuration d'un serveur Bind

Installation de Bind

En root, lancer la commande suivante :

apt install bind9

Configuration de Bind

Les fichiers de configuration se trouvent dans /etc/bind. Il y a un fichier de configuration principal : named.conf qui fait ensuite appel aux fichier named.conf.options et named.conf.local.

Dans le fichier named.conf.options nous allons définir les options du serveur (qui vont donc s’appliquer à tous les domaines qu’il gère) :

options {
	directory «/var/cache/bind»;

	dnssec-validation auto;

	minimal-responses yes;
	allow-transfer { ip_du_serveur_dns_sercondaire; };
	allow-update { ip_du_serveur_dns_sercondaire; };
	recursion yes;
	allow-recursion { 127.0.0.1;ip_publique_du_serveur_primaire; };
	notify yes;
	allow-query-cache { any; };
	allow-query { any; };

	zone-statistics yes;
	statistics-file "/var/log/bind/stat.log";

	auth-nxdomain no;    # conform to RFC1035
	listen-on-v6 { ::1; };
	listen-on { ip_publique_du_serveur_primaire; };
}

Dans le fichier named.conf.local, on définit les noms de domaine (zone) gérés par le serveur :

zone "domaine.tld" {
		type master;
		file "/etc/bind/zones/domaine.tld";
};

On laisse la charge du reverse DNS aux prestataires qui hébergent les différents serveurs. Pour chaque zone, il faut créer un fichier de définition. Ce fichier doit se trouver à l’adresse défini à la ligne « file » du fichier named.conf.local.

$TTL 7200

@       IN      SOA    domaine.tld. admin.domaine.tld. (
										2015052001 	; Serial
										7200       		; Refresh
										1800       		; Retry
										1209600    	; Expire - 1 week
										86400 )    	; Minimum

@		IN		NS		FQDN_du_serveur_primaire (ex : ns1.domaine.tld.)
@               IN              NS	        FQDN_du_serveur_secondaire (ex : ns2.domaine.tld.)

ns1		IN		A		adresse_ip_serveur_primaire
ns2		IN		A		adresse_ip_serveur_secondaire

@ 	        IN 	        A		ip_du_serveur_ou_pointe le domaine_(sans sous-domaine)

; Liste des sous-domaines
www            	IN		A		adresse_ip_du_serveur_web
ftp		IN		A		adresse_ip_du_serveur_ftp

@		IN		MX	10	mail.djeeks.com.
mail		IN		A		ip_du_serveur_mail

Sur la ligne SOA, admin.domaine.tld. représente l’adresse mail de l’administrateur (le premier . Remplace l’@).

Attention : chaque nom saisi en toute lettre se termine par un point sinon, bind rajoute domaine.tld à la fin !

Si on souhaite séparer les logs de Bind, il est possible d’ajouter ces lignes dans le fichier de définition des options de Bind (fichier /etc/bind/named.conf.options) :

logging {
	 channel misc {
		file "/var/log/bind/misc.log";
		print-time yes;
	 };

	  channel update {
		file "/var/log/bind/update.log";
		print-time yes;
	 };

	 channel queries {
		file "/var/log/bind/queries.log";
		print-time yes;
	 };

	 category default {
		misc;
	 };

	 category config {
		misc;
	 };

	 category update {
		update;
	 };

	 category queries {
		queries;
	 };
};

Une fois les fichiers de configuration paramétrés, on lance une vérification via les commandes :

named-checkconf -z /etc/bind/named.conf
named-checkzone domaine.tld /etc/bind/db.domaine.tld

Ces commandes utilisent le paquet bind9utils. Si tout est ok, on peut relancer le serveur :

systemctl restart bind9

Enfin, on peut faire une dernière vérification à l’aide de l’outil zonemaster de l’Afnic (anciennement zonecheck).

Sécurisation DNS :

Il est possible de fonctionner avec une infrastructure comprenant plusieurs serveurs maîtres (pas de serveur esclave) : cette configuration requiert une mise à jour « à la main » pour tous les serveurs, mais élimine totalement le risque encouru lors des échanges de fichiers de zone entre maitre et esclave. (A mettre en place s’il y a peu de changement dans les fichiers de zone).