Retourner au contenu. Retourner à la navigation

 

Module 3

by civ @ 13/09/2006

Chapitre 01 - DNS et Bind

Mis en place d'un service DNS avec Bind

1. Rappel sur le protocol DNS

1.1 Le système de nom de domaine

Le système de nom de domaine (DNS) est utilisé pour faire correspondre des noms de domaine et des adresses IP afin de pouvoir localiser des hôtes sur des réseaux distants par le biais de nom ; plus facilement mémorisables qu'une adresse IP.

Ce processus s'articule autour d'une relation client / serveur ou le client, nommé «resolver» effectue une requête auprès d'un serveur de nom.

Lorsque l'utilisateur entre une adresse, http://www.labo-linux.com par exemple, votre navigateur envoie une requête au Serveur de Domaine de votre fournisseur d'accès, qui essaie de déterminer l'adresse IP correspondante.

Si votre fournisseur n'est pas l'autorité pour cette zone (pour ce domaine), il transmet la requête au domaine autorité, jusqu'à ce qu'elle arrive au domaine indiqué (figure 1)

Figure 1: Résolution du nom www.labo-linux.com

Chaque serveur de domaine dispose de toutes les informations relatives à la zone qu'il contrôle ainsi que des informations de base sur les autres zones.

Quand une requête est envoyée en dehors de la zone d'autorité, le serveur sait au minimum où chercher. Cela signifie que la requête peut avoir à transiter par plusieurs serveurs de domaine avant d'atteindre la destination finale.

1.2 Notion de nom de domaine pleinement qualifié

Le FQDN, ou Fully Qualified Domain Name d'un hôte est son nom d'hôte accompagné du nom de son domaine d'appartenance.

Exemple: www.labo-linux.com est le nom complet de l'hôte www appartenant au domaine labo-linux.com.

1.3 Les différents types de serveurs de noms

Lorsqu'un hôte client demande des informations au serveur de noms, il se connecte généralement sur le port 53. Le serveur de noms tente alors de résoudre le FQDN d'après les informations qu'il contient sur l'hôte demandé ou des données mise en cache suite à une requête antérieure.

Si le serveur de noms ne possède pas encore la réponse dans sa bibliothèque de solutions, il se tourne vers d'autres serveurs de noms, appelés serveurs de noms root (ou serveurs de noms racines), afin de déterminer les serveurs de noms faisant autorité pour le FQDN en question. Grâce à ces informations, il effectuera ensuite une requête auprès des serveurs de noms faisant autorité pour déterminer l'adresse IP de l'hôte en question.

À l'exception du nom de domaine, chaque section s'appelle une zone et définit un espace de nom particulier. Un FQDN doit contenir au moins un sous-domaine mais peut en inclure beaucoup plus, selon l'organisation de l'espace de nom choisie.

Les zones sont définies sur des serveurs de noms qui font autorité par l'intermédiaire de fichiers de zone qui sont stockés sur des serveurs de noms primaires (aussi appelés serveurs de noms maîtres).

Les serveurs de noms primaires secondaires (ou serveurs de noms esclaves) quant à eux reçoivent leurs fichiers de zone des serveurs de noms primaires.

Tout serveur de noms peut être simultanément maître ou esclave pour différentes zones et peut aussi être considéré comme faisant autorité pour de multiples zones. Tout cela dépend de la configuration du serveur de noms.

On distingue 4 types de serveur de noms :


TypeDescription
MasterConserve les enregistrements originaux et fait autorité pour un espace de noms.
SlaveReçoit ses informations des serveurs maîtres
Caching-onlyNe fait pas autorité, ce type de serveur sert juste de cache afin d'accélérer le temps de réponse.
ForwardingFait suivre des requêtes à une liste spécifique de serveur de noms

2. Installation et configuration de Bind

BIND fournit un service de resolution de nom grace au service /usr/sbin/named. Il utilise comme fichier de configuration :

  • /etc/named.conf : le fichier de configuration du service named
  • /var/named/ : le repertoire de travail de named ou sont stokées les fichers de zone, de cache, etc...

2.1 Installation de Bind 9

2.1.1 Téléchargement

Note:

Cette documentation a été réalisée en utilisant BIND 9.2.0 sous FreeBSD.

Tout d'abord, il faut télécharger les sources du programme voulu (ftp://ftp.isc.org/isc/bind9/9.2.0/bind-9.2.0.tar.gz).

Nous l'avons mis par exemple dans le répertoire "/tmp". Il reste maintenant à l'extraire, en utilisant la commande :

tar -zxvf bind-9.2.0.tar.gz	    

2.1.2 Compilation et installation

La compilation passe par trois étapes distinctes :

  • La configuration des paramètres de compilation.
  • La compilation en elle-même.
  • L'installation des binaires, documentations et fichiers de configuration par défaut.

Pour la configuration des paramètres de compilation, il faut entrer dans le répertoire racine des sources de BIND (ici "/tmp/bind-9.2.0"), et exécuter la commande "./configure".

La commande "./configure" peut contenir un ou plusieurs paramètres tels que :

  • "--with-openssl" : Pour le support du DNSSEC, qui est un canal OpenSSL (version 0.9.5a minimum) permettant de faire transiter le trafic de réplication de zones entre serveurs DNS primaire et secondaire(s).
  • "--enable-threads" : Ajoute le support pour le multithreading, pour pouvoir tirer partie des systèmes multi-processeurs.
  • "--with-kame" : Support de IPv6, s'il n'est pas pris en charge par défaut par le système installé.

Il existe beaucoup d'autres paramètres, dont nous ne parlerons pas, mais dont on peut avoir le listing et la description avec la commande "./configure --help".

La compilation en elle-même s'effectue en utilisant la commande :

make	    

Il ne reste plus qu'à installer les binaires compilés, ainsi que les documentations dans les répertoires appropriés avec la commande :

make install	    

Une fois ces étapes accomplies, Bind est à présent installé et prêt à être configuré.

2.2 Configuration de Bind

Maintenant que Bind est installé, nous allons maintenant voir les différentes étapes de configurations du service.

2.2.1 Le fichier /etc/named.conf

Ce fichier est composé d'une suite de définitions (ou statements) utilisant des options insérées entre accolages qui vont nous permettre de définir les caractéristiques de notre serveur.

<déclaration> ["<déclaration-1-nom>"] [<déclaration-1-classe>] {
<option-1>;
...
<option-N>;
};

2.2.2 Les différents types de déclaration

Les listes de contrôle d'accès

Ce type de déclaration permet de définir des groupes d'hôtes. Le but est de définir ces groupes pour ensuite dans d'autres déclarations pouvoir les désigner par le biais du nom de la liste. La syntaxe est la suivante :

acl <nom_de_la_liste> {
<élément-correspondant>;
[<élément-correspondant>; ...]
};

Il est possible d'utiliser des mots clés tels que :

  • any : toutes les addresses IP
  • localhost : toutes les IP utilisées par le serveur
  • localnets : tous les réseaux directement connectés au serveur
  • none : aucune IP

Afin d'illustrer cela, voici un exemple ou nous configurons 2 listes :

acl bad_network {
172.16.0.0/16
192.168.0.0/24;
};

acl my_network {
192.168.1.0/24;
};

options {
blackhole { bad_network; };
allow-query { my_network; };
allow-recursion { my_network; };
}

Les inclusions

L'un des problèmes de sécurité du service named est que le fichier /etc/named.conf est accessible en lecture par tous les utilisateurs.

Les inclusions sont utilisées afin de pouvoir stocker des informations « critiques » dans des fichiers séparés et à accès restreint puis de pouvoir les utiliser depuis named.conf. La syntaxe est la suivante :

include  "<nom-fichier>"	    

Les options

Ce type de déclaration fournit les options générales de configuration du serveur et établit les valeurs par défaut pour les autres déclarations

options { 
<option>;
[<option>; ...]
};

optionsutilisation
allow-queryDéfinit les hôtes autorisés à faire des requêtes sur le serveur
allow-recursionDéfinit les hôtes autorisés à des faire des demandes récursives
blackholeDéfinit les hôtes qui ne sont pas autorisés
directoryDéfinit le répertoire de travail (/var/named par défaut)
forwardContrôle le comportement de retransmission d'une directive forwarders. Les options suivantes sont acceptées :
  • first : les serveurs de noms spécifiés dans la directive forwarders sont interrogés avant que named ne tente de résoudre le nom lui-même.
  • only : named ne doit pas tenter d'effectuer lui-même une résolution dans le cas où des demandes vers les serveurs spécifiés dans la directive forwarders échoueraient.
forwardersDéfinit les IPs des serveurs où doivent être forwardés les requêtes
listen-onSpécifie l'interface réseau à utiliser (toutes par défaut)
notifyDéfinit si le service envoie une notification aux serveurs esclaves lors d'une mise à jour :
  • yes : notification
  • bo : pas de notification
  • explicit : notification envers les serveur esclaves spécifiés dans une liste also-notify à l'intérireur d'une déclaration de zone
pid-fileDéfinit l'emplacement du fichier de PID crée par named
statistics-fileDéfinit l'emplacement du fichier de statistiques (par défaut /var/named/stats)

Voici un exemple d'option :

acl "labo-linux" { 127.0.0.1; 192.168.1.0/24; };

options {
directory "/etc/namedb";
forwarders {
193.252.19.3; # Les DNS de notre
193.252.19.4; # providers
};

allow-query {"labo-cisco";};

listen-on { 192.168.1.1; };

pid-file "named.pid";
};

Les déclarations de zone

Ce type de déclaration permet de définir les caractéristiques d'une zone :

  • L'emplacement de ses fichiers de configurations
  • Les options spécifiques à la zone

La syntaxe à utiliser est la suivante :

zone <zone-nom> <zone-classe> {
<zone-options>;
[<zone-options>; ...]
};

De nombreuses options peuvent être spécifiées pour ce type de déclaration :


OptionsUtilisation
allow-queryQuels client sont autorisés à obtenir des informations pour cette zone
allow-transferQuels serveurs esclaves sont autorisés a demander un transfert des informations de cette zone
allow-updateQuels hôtes sont autorisés à mettre à jour dynamiquement les informations de cette zone
fileNom du fichier de configuration de la zone dans le répertoire de travail
mastersListe des IPs faisant autorité ou demander des informations sur la zone
notifyDéfinit si le service envoie une notification aux serveurs esclaves lors d'une mise à jour :
  • Yes : notification
  • No : pas de notification
  • Explicit : notification envers les serveur esclaves spécifiés dans une liste also-notify à l'intérireur d'une déclaration de zone
typeDéfinit le type de zone :
  • forward : retransmet toutes les requêtes d'informations à propos de cette zone vers d'autres serveurs de noms
  • hint : un type spécial de zone utilisé pour diriger des transactions vers les serveurs de noms racines qui résolvent des requêtes lorsqu'une zone n'est pas connue autrement. Aucune configuration au-delà de la valeur par défaut n'est nécessaire avec une zone hint.
  • master : désigne le serveur de noms faisant autorité pour cette zone. Une zone devrait être configurée comme de type master (maître) si les fichiers de configuration de la zone se trouvent sur le système.
  • slave : désigne le serveur de noms comme serveur esclave pour cette zone. Cette option spécifie également l'adresse IP du serveur de noms maître pour cette zone.
zone-statisticsConfigure named pour qu'il conserve des statistiques concernant cette zone

Illustrons cela avec deux exemples, le premier dans le cas d'un serveur maître et le second pour un serveur esclave

# Cas du serveur maître : 
zone "." {
type hint;
file "named.root";
};

zone "labo-linux.com" IN{
type master;
file "labo-linux.com.zone";
allow-update { none; };
};

# Cas du serveur esclave :
zone "labo-linux.com" {
type slave;
file « labo-linux.com.zone » ;
masters { 192.168.0.1; };
};

Nous avons ici définit notre serveur en tant que maître pour la zone labo-linux.com et avons indiqué à named de refuser la mise à jour à partir de n'importe quel hôte. Nous avons également indiqué que le fichier comportant le détail de la zone serait labo-linux.com dans /var/named.

Une fois la configuration du fichier /etc/named.conf, il nous faut à présent créer et définir les fichiers de zone.

2.3 Les fichiers de zone

Un fichier de zone est un fichier contenant des informations sur une zone particulière et stocké dans le répertoire de travail de named

2.3.1 Configuration d'un fichier de zone

Le nom du fichier doit correspondre au nom définit dans l'option file de la déclaration insérée dans named.conf.

Ce type de fichier peut contenir 2 types d'informations :

  • Des directives : Ce sont des instructions pour l'exécution de certaines taches ou de paramètres spéciaux
  • Des enregistrements de ressources : des définitions des paramètres de la zone et assignation des identités aux hôtes.
Note:

Concernant le syntaxe, il est important que chaque information soit sur sa propre ligne, les commentaires doivent se situer en fin de linge après les caractères « ; »

Les directives de fichiers de zone

Pour insérer une directive ; de préférence au début du fichier ; il convient d'utiliser le symbole $ suivi du nom de la directive. Les directives les plus courantes sont :

DirectiveUtilisation
$INCLUDEUtilisé pour inclure un autre fichier de zone à l'intérieur
$ORIGINAttache le nom de domaine à tout enregistrement non qualifié (ne finissant pas par un « . »)
$TTLDurée en seconde pendant laquelle pendant laquelle les enregistrements seront valides

2.3.2 Les enregistrements de ressources d'un fichier de zone

De nombreux types d'enregistrements sont disponibles, voici les plus courants :

Les enregistrements de type «A»

Cet enregistrement est utilisé pour associé un nom à une IP. Si l'hôte n'est pas spécifié, l'adresse sera utilisé par défaut pour le domaine.

Syntaxe :
<hôte> IN A <adresse IP>

Exemple :

      IN     A       192.168.10.1
dc1 IN A 192.168.10.2

Les enregistrements de type «CNAME»

L'enregistrement CNAME est un alias redirigeant vers un autre nom d'hôte

Syntaxe :
<alias> IN CNAME <nom>

Exemple :

dc1		IN    A       192.168.10.2
serveur IN CNAME dc1

Les enregistrements de type «MX»

Le but de ces enregistrements est de rediriger le courier à destination de ce domaine vers un ou plusieurs serveurs de courriers par défaut.

Note:

Dans le cas de plusieurs serveurs de messagerie, le champ préférence permet d'attribuer une priorité.

Syntaxe :
IN MX <préférence> <nom-serveur>

Exemple :

IN	  MX     10     mail.labo-linux.com.
IN MX 20 mail2.labo-linux.com.
Note:

Le '.' A la fin du nom est important car il indique que le nom spécifié est complet.

Les enregistrements de type «NS»

Cet enregistrement annonce les serveurs de noms faisant autorité pour une zone.

Syntaxe :
IN NS Serveur

Exemple :

IN     NS     main-dns.labo-linux.com.
IN NS backup-dns.labo-linux.com.

Les enregistrements de type SOA

Utilisé pour indiquer les informations importantes au sujet de cet espace de nom, cet enregistrement est le premier à insérer après les directives.

La syntaxe est la suivante :

@     IN     SOA	    <serveur-noms-primaire>     <email> (
<numéro-série>
<temps-actualisation>
<temps-nouvel essai>
<temps-expiration>
<TTL-minimum> )

Expliquons à présent les différents champs présent ici :

  • Le symbole @ place la directive $ORIGIN (ou le nom de zone, si la directive $ORIGIN n'est pas installée) en tant qu'espace de nom défini par le présent enregistrement de ressources SOA.
  • <serveurs-noms-primaire> : le serveur faisant autorité
  • <email> : l'adresse de la personne à contacter à propos de cet espace de noms
  • <numéro-série> : incrémenté à chaque changement du le fichier de zone afin que named sache qu'il doit recharger cette zone. Cela est utilisée par le serveur esclave pour déterminer s'il est en train d'utiliser des données de zone périmées et doit donc les rafraîchir.
  • <temps-actualisation> : indique à tout serveur esclave combien de temps il doit attendre avant de demander au serveur de noms maître si des changements ont été effectués dans la zone.
  • <temps-nouvel essai> : précise au serveur de noms esclave l'intervalle pendant lequel il doit attendre avant d'émettre une autre requête de rafraîchissement, au cas où le serveur de noms maître ne répondrait pas.
  • <temps-expiration> : temps maximum depuis une abscence de réponse du serveur maître avant que le serveur esclave ne cesse de répondre en tant qu'autorité pour les requêtes au sujet de cet espace de nom.
  • <TTL-minimum> : demande que d'autres serveurs de noms placent en cache les informations pour cette zone pendant au moins cette durée (en secondes).

Toutes les durées sont exprimées en secondes, cependant les mots clés tels que M, H, D et W (semaine) fonctionnent.

Voici à présent un exemple d'application :

@            IN           SOA       dns.labo-linux.com.         hostmaster.labo-linux.com. (
02050500 ; numéro de série
3H ; rafraichir après 3 heures
1800 ; retenter après 30 minutes
604800 ; expire après 1 semain
3D ) ; TTL minimum de 3 jours

IN NS dns.labo-linux.com.
IN MX 10 mail.labo-linux.com.

dns IN A 192.168.1.1
www IN CNAME dns.labo-linux.com.
ftp IN A 192.168.1.2
mail IN A 192.168.1.3
pop IN CNAME mail.labo-linux.com.
smtp IN CNAME mail.labo-linux.com.
imap IN CNAME mail.labo-linux.com.
imprimante IN A 192.168.1.4
tftp IN A 192.168.1.5
routeuradsl IN A 192.168.1.254

A présent que notre fichier de zone est prêt, il nous faut à présent nous occuper du fichier de zone inverse.

2.4 Les fichiers de zone inverse


2.4.1 Principe de domaine inversé

Le processus de résoution inversé permet la recherche d'un nom à partir d'une IP. Le domaine "in-addr.arpa" a été créé pour cela. On l'appelle domaine inverse et la résolution des adresses IP en noms de domaine se nomme table inverse (translation inverse). Le nom de domaine inverse est créé en inversant les nombres de l'adresse IP, et ajoutant in-addr.arpa à la fin.

Exemple : l'adresse IP de www.labo-linux.com est 212.180.91.66. Son nom de domaine inversé est donc 66.91.128.212.in-addr.arpa

Afin de comprendre le fonctionnement et la nécessité de ce nom inversé, prenons un exemple concret :

Votre serveur FTP accepte des requêtes de divers clients. Cependant vous ne souhaitez n'accepter que des requêtes provenant de domaines bien spécifiques, par exemple labo-linux.com.

Lorsqu'un client se connecte chez vous, votre serveur peut vous dire quelle est l'adresse IP du client, puisque cette dernière se trouve dans tous les paquets qui traversent le réseau. L'adresse IP que le système fournit au serveur FTP est 212.180.91.66. Pour retrouver le nom de cette machine, il nous faut trouver 66.91.180.212.in-addr.arpa.

Le serveur de noms va donc d'abord trouver les serveurs puis les serveurs arpa., puis in-addr.arpa, et poursuivre la recherche inverse par 212, puis 180 et finalement trouver le serveur pour la zone 91.128.212. à in-addr.arpa a labo-linux.com

Figure 3 : Principe de résolution inversé

C'est ce dernier qui lui dira que pour 66.91.180.212.in-addr.arpa nous avons un champ ``PTR www.labo-linux.com'', ce qui veut dire que le nom qui va avec 212.180.91.66 est www.labo-linux.com.

Notre serveur n'acceptant que certain domaines dont labo-linux.com, la connexion sera donc autorisée.

S'il n'existait pas de résolution inverse de 212.180.91.66 au travers de la zone in-addr.arpa, le serveur aurait été tout à fait incapable de trouver le nom et donc de filtrer en fonction du nom de domaine.

De nombreux serveurs n'acceptent pas les connexions venant de machines dont ils ne peuvent retrouver le nom. C'est pourquoi la résolution de noms inverse pour les machines est obligatoire.

2.4.2 Configuration d'un fichier de résolution de noms inversé

Le but de ce fichier va être de fournir une résolution inversée, donc un nom FQDN à partir d'une adresse IP. Ce fichier est similaire au fichier de noms précédents si ce n'est que les enregistrements sont de types PTR :

Exemple :

$ORIGIN 1.168.192.in-addr.arpa
$TTL 86400
@ IN SOA dns.labo-linux.com. hostmaster.labo-linux.com. (
02050500 ; numéro de série
3H ; rafraichir après 3 heures
1800 ; retenter après 30 minutes
604800 ; expire après 1 semain
3D ) ; TTL minimum de 3 jours

IN NS dns.labo-linux.com.
IN MX 10 mail.labo-linux.com.
20 IN PTR ws1.labo-linux.com.
21 IN PTR ws2.labo-linux.com.
22 IN PTR ws3.labo-linux.com.
23 IN PTR laptop1.labo-linux.com.
24 IN PTR database.labo-linux.com.
25 IN PTR gateway.labo-linux.com.

Ce fichier serait mis en service avec la déclaration suivante dans named.conf :

zone "1.0.10.in-addr.arpa" IN {
type master;
file "labo-linux.com.rr.zone";
allow-update { none; };
};

3. L'administration du démon named


3.1 Démarrage et arrêt du service

Pour démarrer le serveur DNS, il suffit d'utiliser la commande "/usr/local/sbin/named". Les paramètres disponibles sont :

  • -c {config_file} : Permet de spécifier l'emplacement et le nom du fichier de configuration principale.
  • -v : Affiche la version de BIND.
  • -u {user_name} : Force BIND à démarrer sous un compte particulier, car BIND démarre par défaut en utilisant le compte root.
  • -t {directory} : Option utilisé lorsque l'on démarre BIND dans une SandBox (cf. chapitre correspondant).

Il existe 2 utilitaires permettant de vérifier les fichiers de configuration de BIND :

  • named-checkconf : Vérifie le fichier de configuration principale et affiche les erreurs de syntaxe trouvées.
  • named-checkzone : Idem mais pour les fichiers de zone.

3.2 Configuration de rndc

BIND contient un utilitaire appelé rndc qui permet d'utiliser des lignes de commande pour administrer le démon named à partir de l'hôte local ou d'un hôte distant.

Afin de prévenir d'accès non autorisés au démon, BIND utilise une méthode de clé secrète partagée pour accorder des privilèges aux hôtes. Dans une telle situation, une clé identique doit être présente aussi bien dans /etc/named.conf que dans le fichier de configuration de rndc, à savoir /etc/rndc.conf

3.2.1 Configuration de /etc/named.conf

Pour que rndc puisse se connecter à un service named, une déclaration controls doit être présente dans le fichier /etc/named.conf du serveur BIND.

La déclaration controls montrée dans l'exemple qui suit, permet à rndc de se connecter à partir d'un hôte local.

controls {
inet 127.0.0.1 allow { localhost; } keys { <nom-clé>; };
};

Cette déclaration indique à named de se mettre à l'écoute du port TCP 953 par défaut de l'adresse inversée et d'autoriser les commandes rndc provenant de l'hôte local, si la clé adéquate est présentée. Le <nom-clé> fait référence à la déclaration key, qui se trouve aussi dans le fichier /etc/named.conf. L'exemple suivant illustre une déclaration key.

key "<nom-clé>" {
algorithm hmac-md5;
secret "<valeur-clé>";
};

Dans ce cas, la <valeur-clé> est une clé HMAC-MD5. Afin de créer des clés HMAC-MD5, utilisez la commande suivante :

dnssec-keygen -a hmac-md5 -b <longueur-bits> -n HOST <nom-fichier-clé>	    

Une clé d'au moins 256 bits de long est un bon choix. La bonne clé qui doit être placée dans la zone <valeur-clé> se trouve dans <nom-fichier-clé>.

Note:

Il est conseillé de mettre la déclaration de clé dans un fichier séparé uniquement accessible par root et de l'appeler via un include : include "/etc/rndc.key";


3.2.2 Configuration de /etc/rndc.conf

La déclaration key représente la déclaration la plus importante contenue dans /etc/rndc.conf.

key "<nom-clé>" {
algorithm hmac-md5;
secret "<valeur-clé>";
};

Les éléments <nom-clé> et <valeur-clé> doivent être absolument identiques à leurs paramètres contenus dans /etc/named.conf.

Pour faire correspondre les clés spécifiées dans le fichier /etc/named.conf du serveur cible, ajoutez les lignes suivantes au fichier /etc/rndc.conf.

options {
default-server localhost;
default-key "<nom-clé>";
};

3.3 La ligne de commande de rndc

Une commande rndc se présente sous le format suivant :

rndc <options> <commande> <options-commande>	 

Lors de l'exécution de rndc sur un hôte local configuré de façon appropriée, les commandes suivantes sont disponibles :

CommandeEffet
haltArrêt du service named
querylogLogging de toutes les requêtes
refreshRafraichissement de la base de données
reloadRecharge les fichiers de zone mais conserve toutes les réponses précédemment placées en cache.
statsEvacue les statistiques courante de named vers le fichier /var/named/named.stats
stopArrête le serveur de manière nette, en enregistrant préalablement toute mise à jour dynamique et donnée Incremental Zone Transfers (IXFR).
-c <fichier-configuration>Permet de selectionner le fichier de configuration a utiliser
-p <numéro-port>Permet de spécifier le numéro de port à utiliser
-s <serveur>Permet d'envoyer les instructions à un serveur spécifique
-y <nom-clé>Spécifie une clé autre que l'option default-key dans le fichier /etc/rndc.conf.
Note:

Si vos changements n'affectent qu'une zone particulière, rechargez seulement une zone en ajoutant le nom de la zone après la commande reload.


4. Sécurisation du serveur

Le but de la Sand Box, en cas d'attaque pirate, est de limiter l'accès à seulement une infime partie du système de fichiers.

Pour cela, nous allons démarrer le daemon de BIND dans un environnement chrooté. L'effet obtenu sera de faire croire à BIND que son repertoire sera sa propre racine de système de fichiers.

Nous allons voir comment sécuriser le DNS via la mise en place d'une SandBox. Pour cela, il va falloir procéder à quelques modifications :

  • Créer un utilisateur non-privilégié pour faire fonctionner BIND.
  • Changer le propriétaire des fichiers de BIND.
  • Créer un fichier PID dans notre environnement chrooté.
  • Modifier le fichier de configuration principal.
  • Démarrer BIND avec les bons paramètres.

Commençons la creation de l'utilisateur non-privilégié. Nous avons choisi d'utiliser le compte dns (UID = 1005).

Nous créons maintenant le fichier PID pour bind, avec la commande "touch named.pid".

Le changement de propriétaire des fichiers de BIND (présents dans le répertoire "/etc/namedb") se fait grâce à la commande "chown dns *" dans le répertoire de base de BIND.

Les modifications qu'il faut apporter au fichier de configuration principale sont les suivantes :

  • directory "/";
  • pid-file "named.pid";

La dernière modification concerne les paramètres de démarrage. Il suffit pour cela de mettre "-u 1005 -t /etc/namedb -c named.conf" en tant que paramètre pour l'option "named_flags" du fichier "/etc/rc.conf", au lieu de "-c /etc/namedb/named.conf".

Il ne nous reste plus qu'à redémarrer le serveur afin que le service DNS soit entièrement fonctionnel avec toutes les dernières modifications.

5. Annexes

5.1 Mise à jour du DNS via le serveur DHCP

Il est possible de configurer votre serveur DHCP et BIND de manière à ce que lorsqu'une machine prend un bail DHCP, celle-ci soit enregistrée par le serveur DNS.

Sans trop entrer dans les détails, nous allons ici détailler les différentes étapes de configuration. Dans notre exemple ; les 2 services sont éxécutés sur la même machine et utilisent donc la même adresse : 127.0.0.1

Modifications à apporter a /etc/named.conf :

zone "labo-linux.com" {
type master;
file "/var/named/labo-linux.zone";
allow-update {
127.0.0.1;
};
};
# La zone de recherche inverse
zone "10.168.192.in-addr.arpa" {
type master;
file "/var/named/reverse.rev";
allow-update {
127.0.0.1;
};
};

Nous autorisons ainsi les modifications en provenance de 127.0.0.1

Note:

Il est important que les machines s'enregistrant sur le DNS n'aient pas déjà une entrée dans les fichiers de zones.

Modifications à apporter à /etc/dhcpd.conf :

# méthode de mise à jour du DNS :
ddns-update-style interim;

# mise à jour autorisée
ddns-update on;

# mise à jour par le serveur DHCP forcée
ignore client-updates;

# la mise à jour des IP fixes forcée
update-static-leases on;

# on définit également quel DNS doit être mis à jour pour ces zones :
zone labo-linux.com. {
primary 127.0.0.1;
}

zone 10.168.192.in-addr.arpa. {
primary 127.0.0.1;
}

Modifications pour les clients Linux

Ajoutez la ligne suivante dans /etc/dhclient.conf :

send host-name "lenomdelamachine";	 

En effet par défaut, dhclient n'envoie pas le nom d'hôte au serveur.

5.2 Exemples de fichiers de configuration

Le but de ce chapitre est de vous proposer des exemples de configurations «prêt à l'emploi» afin de vous aider à mettre en place votre serveur :

5.2.1 Cas d'un serveur maître

/etc/named.conf

acl "labo-linux" { 127.0.0.1; 192.168.1.0/24; };
options {
directory "/etc/namedb";
forwarders {
193.252.19.3;
193.252.19.4;
};
allow-query {"labo-linux";};
};

zone "." {
type hint;
file "named.root";
};

zone "0.0.127.IN-ADDR.ARPA" {
type master;
file "localhost.rev";
};

zone "labo-linux.com" {
type master;
file "labo-linux.zone";
};

zone "1.168.192.in-addr.arpa" {
type master;
file "1.168.192.in-addr.arpa";
};

/var/named/labo-linux.zone

@            IN           SOA       dns.labo-linux.com.    hostmaster.labo-linux.com. (
02050500
10800
1800
3600000
259200 )
IN NS dns.labo-linux.com.
IN MX 10 mail.labo-linux.com.
dns IN A 192.168.1.1
www IN CNAME dns.labo-linux.com.
ftp IN A 192.168.1.2
mail IN A 192.168.1.3
routeuradsl IN A 192.168.1.254
passerelle IN CNAME routeuradsl.labo-linux.com.

/var/named/localhost.rev

@            IN           SOA       dns.labo-linux.com.         hostmaster.labo-linux.com.  (
02042800
3600
900
3600000
3600 )
IN NS labo-linux.com.
1 IN PTR localhost.

5.2.2 Cas d'un serveur de cache

Pour ce type de serveur, un fichier /etc/named.conf suffit :

options {
directory "/var/named";
allow-query { 192.168.1.0/24; };
allow-transfer{ 192.168.1.0/24; };
allow-recursion{192.168.1.0/24; };
};

controls {
inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};

zone "." IN {
type hint;
file "named.ca";
};

zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};

zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};

include "/etc/rndc.key";

5.3 Bibliographie

Les recherches pour la réalisation de cet article ont été faite à partir de :


1 2 3 4 5
Par civ Dernière modification 22/03/2007 15:52
Navigation
Actualités
03/12/2008 Songbird 1.0
20/10/2008 Société Générale se met au vert
15/09/2008 Sortie de la version VLC 0.9.2
23/06/2008 Opération du libre à Nantes !
23/06/2008 OpenSuse 11
Plus d'actualités...
Articles
22/05/2008 Première approche de Qmail
19/05/2008 Test de la distribution Elive 1.0 Gem
14/05/2008 GNUPG introduction à la cryptographie et utilisation de GnuPG
21/02/2008 GNU / Screen
03/09/2007 The Linux File System Encryption API
More articles
Tips
28/04/2008 Mozilla Firefox : Google Talk et Facebook Chat
22/04/2008 Sed : Rechercher du texte entre deux chaines de caractères
04/04/2008 Gérer son(ses) écran(s) avec xrandr
26/03/2008 Tips sur l'historique de vos commandes
13/02/2008 Linux-Unix Cheat Sheets
More tips
Codes
09/04/2008 Chapitre 13 - Administration DNS et DHCP
09/04/2008 Chapitre 06 - Service web avec Apache
04/04/2008 Chapitre 09 - PureFTPd
04/04/2008 Chapitre 06 - Scripting Bash
01/04/2008 Chapitre 20 - Haute Disponibilité
More codes
Courses
13/09/2006 Module 3
23/02/2006 Module 2
23/02/2006 Module 1
More courses
Formation Linux

Supinfo Training Center has the first Linux Certification. The training is 13 days and allow you to pass the LPI 101 and 102.

more info
 
 
Vous êtes ici :
Cours Module 3 Chapitre 01 - DNS et Bind