Configuration de bind9 (Maître)¶

Informations¶
- Auteur : Louis MEDO
- Date : 23/09/2026
- Domaine : Exploitation services
1. Sommaire¶
- 2. Contexte
- 3. Configuration globale du service
- 4. Déclaration de la zone DNS
- 5. Création et paramétrage du fichier de zone
- 6. Configuration de la journalisation
- 7. Configuration de la sécurité AppArmor
- 8. Vérification et validation
2. Contexte¶
Le serveur Bind9 agit comme serveur DNS faisant autorité pour l'infrastructure CUB. Cette procédure décrit la configuration en mode production de la zone dortmund.cub.sioplc.fr. Elle inclut la scission des fichiers de configuration pour une meilleure maintenabilité, la sécurisation du service (désactivation de la récursivité, masquage de version), la mise en place d'une journalisation dédiée et l'ajustement des règles AppArmor pour autoriser l'écriture des logs.
3. Configuration globale du service¶
3.1. Définition des options globales. Modification du fichier d'options pour sécuriser Bind9 et définir ses interfaces d'écoute.
options {
// Directory permet de définir où se situe le cache du serveur DNS
directory "/var/cache/bind";
// Définit le port et la ou les adresses IPv4 d’écoute du service Bind
listen-on port 53 { 127.0.0.1; 192.36.4.10; };
// Recursion permet d'autoriser ou d'interdire la récursivité sur un serveur DNS.
// Par défaut un serveur DNS faisant autorité ne doit pas être récursif.
recursion no;
// Empêche la diffusion de la version du service Bind utilisée (sécurité).
version none;
};
listen-on: Restreint l'écoute du service DNS aux adresses IP spécifiées.recursion no: Désactive la récursivité pour éviter les attaques d'amplification DNS.version none: Masque la version du daemon pour limiter la reconnaissance par d'éventuels attaquants.
4. Déclaration de la zone DNS¶
4.1. Ajout de la zone locale. Déclaration de la zone dortmund.cub.sioplc.fr dans le fichier dédié aux zones locales.
zone "dortmund.cub.sioplc.fr" {
type master;
allow-transfer { 192.36.4.11; };
file "/var/cache/bind/db.dortmund.cub.sioplc.fr";
};
type master: Définit ce serveur comme maître (faisant autorité) pour cette zone.allow-transfer: Autorise le transfert de zone uniquement vers l'adresse IP du serveur DNS esclave spécifié.file: Indique le chemin absolu vers le fichier contenant les enregistrements de la zone.
5. Création et paramétrage du fichier de zone¶
Gestion du numéro de série (Serial)
Le numéro de série ne doit jamais être choisi au hasard. Il doit systématiquement être incrémenté à chaque modification du fichier de zone (format recommandé : AAAAMMJJXX). Si le numéro de série du maître devient inférieur à celui de l'esclave, le transfert de zone sera rompu.
5.1. Création du fichier de zone. Édition du fichier contenant les enregistrements DNS (SOA, NS, A, CNAME).
$TTL 43200
dortmund.cub.sioplc.fr. IN SOA ns0.dortmund.cub.sioplc.fr. postmaster.dortmund.cub.sioplc.fr. (
2026092301 ; Serial
1D ; Refresh
1H ; Retry
1W ; Expire
3H ) ; Negative Cache TTL
; Serveurs de noms
dortmund.cub.sioplc.fr. IN NS ns0.dortmund.cub.sioplc.fr.
dortmund.cub.sioplc.fr. IN NS ns1.dortmund.cub.sioplc.fr.
; Enregistrements A
ns0 IN A 192.36.4.10
ns1 IN A 192.36.4.11
$TTL: Définit la durée de mise en cache par défaut pour les résolveurs.SOA: (Start of Authority) Définit les paramètres globaux de la zone et le contact administratif.NS: Déclare les serveurs de noms faisant autorité.A: Associe un nom d'hôte à une adresse IPv4.CNAME: Crée un alias pointant vers un autre nom d'hôte existant.
5.2. Application des droits. Attribution du fichier à l'utilisateur et au groupe bind.
chown: Modifie le propriétaire et le groupe d'un fichier.bind:bind: Spécifie l'utilisateurbindet le groupebind.
6. Configuration de la journalisation¶
6.1. Création du fichier de log. Initialisation du fichier texte destiné à recevoir les journaux DNS.
touch: Crée un fichier vide s'il n'existe pas.
6.2. Paramétrage du module de log. Création d'un fichier de configuration dédié à la journalisation.
logging {
channel bind_log {
file "/var/log/bind.log" versions 3 size 100m;
severity info;
print-category yes;
print-severity yes;
print-time yes;
};
category default { bind_log; };
};
file: Indique le chemin du fichier, le nombre de rotations (versions) et la taille maximale (size).severity: Définit le niveau de verbosité des logs capturés.
6.3. Inclusion de la configuration. Ajout du fichier de journalisation à la configuration principale.
// This is the primary configuration file for the BIND DNS server named.
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.root-hints";
// Ajout du fichier de parametrage de la journalisation du service BIND
include "/etc/bind/named.conf.log";
include: Charge dynamiquement un fichier de configuration externe dans le fichier principal.
7. Configuration de la sécurité AppArmor¶
Protection MAC
Sur Debian, AppArmor (Mandatory Access Control) surveille les accès des processus. Par défaut, il interdit à Bind9 d'écrire dans /var/log/. Une modification des permissions d'AppArmor est requise pour le bon fonctionnement des logs.
7.1. Modification des règles AppArmor. Autorisation de lecture et d'écriture pour le daemon Bind.
# On autorise le daemon Bind 9 à lire et ecrire dans le fichier /var/log/bind.log
/var/log/bind.log rw,
rw,: Autorise les droits de lecture (Read) et d'écriture (Write) sur le fichier spécifié.
7.2. Rechargement d'AppArmor. Prise en compte de la nouvelle politique de sécurité.
apparmor_parser -r: Recharge et remplace le profil spécifié sans avoir à redémarrer tout le service immédiatement.systemctl restart apparmor: Relance le service AppArmor pour garantir l'application globale.
8. Vérification et validation¶
8.1. Contrôle de la syntaxe. Vérification des fichiers de configuration pour éviter toute corruption au démarrage.
named-checkconf: Utilitaire natif de validation de la configuration de Bind.-z: Tente de charger l'ensemble des zones définies pour vérifier leur validité.
8.2. Redémarrage et vérification du statut. Application des paramètres et contrôle de l'état du daemon.
systemctl restart: Arrête proprement le service et le démarre à nouveau.systemctl status: Affiche l'état d'exécution actuel, confirmant si le service est "active (running)".