Apache2, Pure-FTPd, VSFTPd, LDAP, Samba, Active Directory

 Charge moyenne sur 1mn : 0.18 Charge moyenne sur 5mn : 0.58 Charge moyenne sur 15mn : 0.61


Comment faire pour configurer un serveur Web, FTP ; un annuaire, une base de données ; un serveur de mail, les solutions ?





Blocs utilisateurs du site : Infos du compte / droits utilisateurs / récapitulatif

Identifiez-vous

Authentifiez-vous avec votre compte ZW3B et profitez des services membres.

Identifiant :
Mot de passe :
  
  

Configuration BIND9 Masters et Slaves

  • Configuration BIND9 Masters et Slaves
Comment configurer le serveur DNS (Domain Names Services) de nom de domaines BIND9 (Berkeley InterNet Domain) / NAMED avec son/ses DNS secondaire(s) par Transaction SIGnature (TSIG)

Informations

Dates
  • Publication : Vendredi 03 avril 2020
  • Modification : Lundi 20 avril 2020

NdM : 2020/04/07 - Cette page est en cours de complément rédactionnel...

J'ai enfin réussis à configurer mon serveur DNS maître avec un DNS esclave. J'ai donc un deuxième serveur DNS public :)

L'un se trouve vers Paris (France)

  • DNS BIND version 9.10.3 - Ubuntu Trusty Tahr (14.04 LTS)
  • DNS FQDN : ns1.lab3w.fr
  • DNS IPv4 PUBLIQUE : 62.210.205.199
  • DNS IPv6 PUBLIQUE : 2001:bc8:25bb:ff52:1ab3:3b:1ac0:201
  • DNS IPv4 PRIVÉE : 10.194.40.1

Pour upgrader la version BIND 9.9.5 vers 9.10.3 sur Ubuntu Trusty : ajouter le dépot add-apt-repository ppa:lamont/ppa, mettre à jour la liste des dépots apt update et faite une upgrade apt upgrade.

L'autre se trouve vers Montréal (Canada)

  • DNS BIND version 9.10.3 - Debian Buster (10.3)
  • DNS FQDN : dns.lab3w.fr
  • DNS IPv4 PUBLIQUE : 158.69.126.137
  • DNS IPv6 PUBLIQUE : 2607:5300:60:9389:15:1:a:1000
  • DNS IPv4 PRIVÉE : 10.101.150.1

Ces 2 machines sont sur un réseau VPN par IPSec + XL2TP - docs sur le site (lien en bas de page).


Premièrement vous devez installer le démon BIND9 et le configurer.
Je vous transmet un lien Web pour configurer les fichiers de loggin et la documentation bind9 sur readthedocs.io

Par exemple depuis la distribution Linux Debian et/ou une distribution Linux Ubuntu.

Installation du serveur DNS BIND9 / NAMED (master / slaves)

Installer le démon BIND9 et quelques paquets supplémentaires.

apt install bind9 
apt install dnsutils net-tools opendnssec mtr traceroute iputils-ping whois

Créer un fichier /etc/bind/named.conf.log comme sur cette page pour avoir les fichiers de logs adéquat.

Nous avons donc le fichier des include /etc/bind/name.conf, le fichier des options /etc/bind/name.conf.options et le fichier des qui déclare nos zones DNS /etc/bind/name.conf.local que nous allons configurer.

Sur les 2 machines (NS1 : 10.194.40.1) et (DNS : 10.101.150.1)

  • Créer un répertoire /etc/bind/masters/ pour y placer nos Reverses IPv4-v6 de ce réseau et zones DNS gérées depuis cette machine .
  • Créer un répertoire /etc/bind/slaves/ pour y récupérer les Reverses IPv4-v6 des autres réseaux et des zones DNS gérées sur d'autres machines.
mkdir /etc/bind/masters/ /etc/bind/slaves/

Reverses IPv4 Locales Area Networks (LAN)

Nous allons créer les reverses IPv4 LAN (Locales Area Networks) sur les 2 machines NS1 et DNS, pour ensuite les transferer/updater, de la zone "master" vers la zone "slave", selon où elles se trouvent (les zones).

Cela permet :

  • Si je modifie le fichier Reverse IPv4 du réseau IPv4 sur la machine "NS1", le fichier sera transférée et updatée sur la machine "DNS" ;)
  • Si je modifie le fichier Reverse IPv4 du réseau IPv4 sur la machine "DNS", le fichier sera transférée et updatée sur la machine "NS1" ;)

En quelques sortes, pour que vous compreniez, si une zone DNS se trouve au Canada (de type "master") elle sera transférée sur la machine DNS de France (type "slave"). Si sur la machine de Paris une zone DNS de type "master" est modifiée, elle sera transféré à Montréal ;) Tout dépend qui (quel admin) gère quoi ^^

Reverses IPv4 DNS (réseau IPv4 LAN master)

Sur la machine (NS1) nous allons créer les reverses IPv4 LAN (Locales Area Networks) dans le fichier /etc/bind/masters/40.194.10.in-addr.arpa qui pourait ressembler à cela :

$ttl 86400 # (1 jour) - 604800 (7 jours)
@   IN      SOA     ns1.lab3w.lan. hostmaster.lab3w.lan. (
			2020040302      ; serial, yearmonthdayserial
			20              ; refresh, seconds / default:21600
			5               ; retry, seconds / default:3600
			420             ; expire, seconds / default:604800
			60 )            ; minimum, seconds / default:3600

@               IN      NS              dns.lab3w.lan.
@               IN      NS              ns1.lab3w.lan.

1               IN      PTR             ns1.lab3w.lan.
10              IN      PTR             ww1.lab3w.lan.

Reverses IPv4 DNS (réseau IPv4 LAN slave)

Sur la machine (DNS) nous allons créer les reverses IPv4 LAN (Locales Area Networks) dans le fichier /etc/bind/masters/150.101.10.in-addr.arpa qui pourait ressembler à cela :

$ttl 86400 # (1 jour) - 604800 (7 jours)
@   IN      SOA     dns.lab3w.lan. hostmaster.lab3w.lan. (
			2020040302      ; serial, yearmonthdayserial#
			20              ; refresh, seconds / default:21600
			5               ; retry, seconds / default:3600
			420             ; expire, seconds / default:604800
			60 )            ; minimum, seconds / default:3600

@               IN      NS              dns.lab3w.lan.
@               IN      NS              ns1.lab3w.lan.

1               IN      PTR             dns.lab3w.lan.
10              IN      PTR             ww2.lab3w.lan.

NdMoi-même :

  • Utiliser la commande named-checkconf pour vérifier la configuration des fichiers.
  • Utiliser la commande named-checkzone pour vérifier la configuration des fichiers zone avant de relancer le serveur.
named-checkzone 40.194.10.in-addr.arpa arpa/40.194.10.in-addr.arpa
zone 40.194.10.in-addr.arpa/IN: loaded serial 2020040302
OK

Jusque là nous avons configuré 2 fichiers de zones arpa (pour les adresses IPv4). Nous pouvons configurer les zones DNS MASTER et SLAVES. IL faut avant tout configurer les options globales du serveur DNS, des zones, des requêtes.

Configuration du fichier /etc/bind/name.conf

Ce fichier permet par exemple de configurer les fichiers à inclure.

Le fichier /etc/bind/name.conf pourait ressembler à cela :

// Gerer les fichiers de logs
include "/etc/bind/named.conf.log";

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";

// Les clefs du server
include "/etc/bind/bind.keys";
include "/etc/bind/rndc.key";

Le fichier /etc/bind/rndc.key permet de sécurisé les transaction entre serveur maître et esclaves.

Par défaut le fichier ressemble à cela et a les droits lire et écrire pour l'utilisateur -rw-r----- et appartient à l'utilisateur bind et goupe bind :

key "rndc-key" {
        algorithm hmac-md5;
        secret "EWpZdK4VZZEZYtgWXFFKwU=";
};

La sécurité TSIG permet de réduire les conséquences de l'IP spoofing entre les DNS primaires et secondaires.

La technologie de clé secrète partagée de TSIG permet à de multiples hôtes de partager la même clé secrète. Ce type de clé est plus vulnérable que les clés publique et privée que DNSSEC utilise, et donc TSIG n'est pas aussi sûr que DNSSECurisé.

On peut utiliser TSIG pour authentifier des transactions de messages DNS comme des requêtes et réponses, des mises à jour dynamiques, et des transferts de zones. On peut, par exemple, utiliser TSIG entre les serveurs DNS et les serveurs DNS des ISP ou des partenaires pour sécuriser ces communications. Si votre serveur BIND utilise une zone DDNS (Dynamic DNS), vous pouvez utiliser TSIG pour authentifier les mises à jour dynamiques provenant des clients, des serveurs DHCP, et des autres serveurs supportant TSIG. Ce type d'authentification des mises à jour dynamiques est plus sûr que l'authentification par adresse IP. On peut également utiliser TSIG pour authentifier les transferts de zones du serveur DNS primaire vers les serveurs DNS secondaires.

Nsupdate, supporte également TSIG à l'aide d'une option de clé secrète. Supposons que l'on veuille utiliser TSIG entre deux hôtes, host1 et host2. Il faut commencer par générer une clé secrète pour les hôtes. Pour cela, on dispose de la commande dnssec-keygen.

dnssec-keygen -a HMAC-MD5 -b 512 -n HOST "ns-dns"
w²Kns-dns.+157+00811 

L'option -a de cette commande définit l'algorithme de signature numérique que la clé générée utilisera. RFC 2845 spécifie HMAC-MD5 comme l'algorithme obligatoire pour l'interopérabilité TSIG, et BIND n'accepte que HMAC-MD5 pour TSIG. La longueur de clé maximale pour HMACMD5 est de 512 bits.

On recupére la clef encodée HMAC-MD5 512bits version base64 dans le fichier Kns-dns.+157+00811.private que l'on assigne à la la valeur "secret" de notre fichier /etc/bind/rndc.key. On fait de même pour les machines slaves.

#key "rndc-key" {
#        algorithm hmac-md5;
#        secret "EWpZdK4VZZEZYtgWXFFKwU=";
#};
key "ns-dns" {
        algorithm hmac-md5;
        secret "0YS2dJFTy8LOoKJTJw7eaOTvaXO7V4xMAdjN1QA0HvN0qW2BOQHEE8BSbqBYZjiCgEl3v7jtBMLwSk3hPrKnYQ==";
};

Configuration du fichier /etc/bind/name.conf.options

On trouve dans ce fichier plusieurs options sur lequelles vous pouvez vous renseigner ici.

  • l'option directory "/var/cache/bind"; permet de configuer le répertoire des fichiers de cache du serveur de noms de domaine BIND9 / NAMED.

  • l'option forwarders { IPv4; IPv6; }; permet de configurer les DNS que vous ne gérer pas pour résoudre les autres sites / noms de domaines.

  • l'option dnssec-enable yes; permet d'activer les DNSSecurisé.
  • l'option dnssec-validation yes|auto; permet d'assurer la conformité du serveur.
  • l'option dnssec-lookaside auto; permet de configurer le serveur DNS de validation (par exemple : . trust-anchor dlv.isc.org.

  • l'option auth-nxdomain no; conform à la Requests For Comments RFC 1035

  • l'option listen-on { none; | any; | IPv4; }; permet de configuer les adresses IPv4 d'écoute du serveur.
  • l'option listen-on-v6 { none; | any; | IPv6; }; permet de configuer les adresses IPv6 d'écoute du serveur.

  • l'option allow-query { none; | any; | IPv4; | IPv6; | keywordsACL; }; permet de configuer les adresses IP qui peuvent intéroger le serveur DNS et résoudre les requêtes.

    Il y a des keywords ACL prédéfinis (any, none, localhost et localnets); nous pouvons en créer d'autres.

    On peut créer l'ACL internals comme cela :
    # ACL réseaux internes
    acl internals {
    	10.194.40.0/24;
    	10.101.150.0/24;
    };
    
  • l'option allow-transfer { none; | IPv4; | IPv6; | keywordsACL; }; permet de configurer les adresses IP pour transférer aux serveurs DNS secondaires les zones mises à jour (nous les configurons manuellement dans les zones masters).
  • l'option allow-notify { IPv4; | IPv6; | keywordsACL; }; permettre de notifier les adresses IP à prévenir immédiatement des serveurs DNS secondaires si une mise à jour de zone est effectuée (nous les configurons manuellement dans les zones masters).

  • l'option also-notify { IPv4; | IPv6; | keywordsACL; }; notifier également les adresses IP à prévenir immédiatement des serveurs DNS secondaires si une mise à jour de zone est effectuée (nous les configurons manuellement dans les zones masters).

  • l'option recursion yes; permet d'autoriser les requêtes recusives (des sous-zones me semble-t'il ^^).
  • l'option allow-recursion { none; | IPv4; | IPv6; | keywordsACL; }; permet de configurer les adresses IP qui sont autoriser pour les requêtes recusives (des sous-zones me semble-t'il ^^).

  • l'option query-source address * port 953; permet de configurer un seul port d'échange entre les serveurs (peu sécurisé).

  • D'autres options comme :
    • l'option controls { inet 127.0.0.1 allow { localhost; } ; };

    • l'option dump-file "data/cache_dump.db";
    • l'option statistics-file "data/named_stats.txt";
    • l'option memstatistics-file "data/named_mem_stats.txt";

    • l'option additional-from-auth yes ; // par default
    • l'option additional-from-cache yes ; // par default

    • l'option view { }; active depuis la version BIND 9.2.X, permet de déclarer les mêmes zones selon d'où le client arrive (par exemple depuis le réseau internet ou depuis le réseau local).

Le fichier /etc/bind/name.conf.options pourait ressembler à cela :

 # Fichier de configuration server DNS
options {
        directory "/var/cache/bind";

        forwarders {
                2001:4860:4860::8888;
                8.8.8.8;
                2001:4860:4860::8844;
                8.4.8.4;
        };

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside . trust-anchor dlv.isc.org.;

        auth-nxdomain no;    # conform to RFC1035

        // Ecouter sur ces adresses
        listen-on-v6 {
                ::1;
                2001:bc8:25bb:ff52:1ab3:3b:1ac0:201;
        };
        listen-on {
                127.0.0.1;
                10.194.40.201;
                62.210.205.199;
        };

        // Ne pas transférer les informations de zones aux DNS secondaires
        allow-transfer { none; }; # configuration directement dans les zones

        allow-notify { 10.101.150.1; }; # permettre de notifier les ips des serveurs
        // Contient les DNS secondaires non officiels, cela permet de les prévenir immédiatement si une mise à jour d'une zone est effectuée
        also-notify { 10.106.42.1; }; # notifier également les ips des serveurs
        
        allow-query { any; };
        
        recursion yes;
        
        allow-recursion {
        	127.0.0.0/8;
        	10.194.40.0/24;
        	10.101.150.0/24;
        };
        
        // Port d'échange entre les serveurs DNS
//      query-source address * port 953;

        dump-file               "data/cache_dump.db";
        statistics-file         "data/named_stats.txt";
        memstatistics-file      "data/named_mem_stats.txt";

        additional-from-auth yes ; // par default
        additional-from-cache yes ; // par default
};

Configuration du fichier /etc/bind/name.conf.local

Nous allons maintemant configurer le fichier du serveur DNS principal où l'on déclare nos zones DNS. Celui appelle les fichiers de zones DNS.

//-----------------------------------------------------------------
// REVERSE LOCAL 
// le fichier du réseau 10.194.40.0/24 sera transféré/updaté sur le(s) serveur(s) distant(s).
//-----------------------------

    zone "40.194.10.in-addr.arpa" {
        type master;
        file "/etc/bind/masters/40.194.10.in-addr.arpa";

        allow-transfer { key "ns-dns"; }; # la clef pour les update et transfert entre serveurs que l'on vient de créer
        allow-update { key "ns-dns"; }; # la clef pour les update et transfert entre serveurs que l'on vient de créer

//      notify master-only;
        notify yes;
    };

//-----------------------------------------------------------------
// REVERSE DISTANT 
// le fichier du réseau 10.101.150.0/24 sera transféré/updaté sur cette machine.
//-----------------------------

    zone "150.101.10.in-addr.arpa" {
        type slave;
        file "/etc/slaves/arpa/150.101.10.in-addr.arpa";
        masterfile-format text;

        masters { 10.101.150.1; };

//      allow-notify { 10.101.150.1; };
        
        notify master-only;
//      notify yes;
    };

//-----------------------------------------------------------------

Voilà nous avons configurer notre zone master et notre zone du serveur distant. Faire la même chose avec vos fichiers de zones DNS (comme d'habitude).

Inverser la configuration sur les serveurs DNS slaves.

Modifier le fichier /etc/bind/rndc.key pour les transactions entre serveurs DNS

Il faut modifier le fichier /etc/bind/rndc.key pour ajouter les adresses IPs des serveurs qui pourront s'intéroger. Faire la même chose sur les autres serveurs DNS en changant l'adresse IP.

server 10.101.150.1 {
#	transfer-format many-answers;
	keys { "ns-dns"; };
};

Faire vos Reverses IPv6

Il suffit de prendre l'adresse IPv6, par exemple : 2001:bc8:25bb:ff52:1ab3:3b:1ac0:201 et de demander l'arpa avec la commande host (et ne pas oublier le . après ip6.arpa) :

host 2001:bc8:25bb:ff52:1ab3:3b:1ac0:201
1.0.2.0.0.c.a.1.b.3.0.0.3.b.a.1.2.5.f.f.b.b.5.2.8.c.b.0.1.0.0.2.ip6.arpa domain name pointer ns2.lab3w.fr.

NdMoi-même : Pour faire un transfert, une update manuelle de zone on peut utiliser la commande dig -t AXFR 0.101.10.in-addr.arpa @10.101.150.1 pour récupérer la zone 150.101.10.in-addr.arpa sur la machine 10.101.150.1.

rndc reload permet de transférer hors intervalles réguliers suivant les valeurs refresh, retry et expire spécifiées dans l'enregistrement SOA de la zone depuis le serveur maître (la zone master).
rndc retransfer domain.tld permet de transférer depuis l'esclace un zone master modifiée.



Bon adressage de noms ^^ moi c'est Olivier Romain Jaillet-ramey ;p alias ORJ du LAB3W (Micro-entreprise depuis 2003) - Consultant LAMP : Développeur OPérating Systems, W3C.Master confirmé, +10 ans d'eXPériences, spécialiste des technologies IHM et des architectures systèmes et réseaux double-piles IPs.

Cordialement,
Romain


<< Howto VPN serveur : IPSec + XL2TP

Comment-faire un réseau IPv6 - Firewall ICMPv6 >>


Sources de documentations du serveur de noms de domaine BIND9 / NAMED

Informations sur les reqêtes DIG pour interroger votre serveur de noms de domaine BIND9 / NAMED

Sécuriser votre serveur de noms de domaine BIND9 / NAMED





Autheur de la page

LAB3W.ORJ

LAB3W.ORJ

  • Prénom : Olivier Romain Luc
  • Nom : Jaillet-ramey
  • Arrivé le mardi 19 octobre 1976 (1976/10/19 00:00)
    44 ans d'activité !

Firefox Nighlty

Nos amis de Framasoft s'intéressent à Mozilla et leur ont posé des questions à propos de Nightly : Firefox Night-club, entrée libre !






Valid XHTML 1.0 Strict CSS Valide !

ipv6 ready