• Aucun résultat trouvé

Types courants de déclarations

Section 10 Installation d'un serveur DNS

10.5 BIND en tant que serveur de noms

10.5.2 Types courants de déclarations

<statement-N> ["<statement-N-name>"] [<statement-N-class>] { <option-1>;

<option-2>;

<option-N>;

};

10.5.2 Types courants de déclarations

Les types de déclarations suivants sont couramment utilisés dans /etc/named.conf : 10.5.2.1 Déclaration acl

La déclaration acl (de l'anglais access control list, ou déclaration de liste de contrôle d'accès) définit des groupes d'hôtes qui peuvent ensuite être autorisés ou non à accéder au serveur de noms.

Une déclaration acl se présente sous le format suivant :

acl <acl-name> { <match-element>;

[<match-element>; ...]

};

Dans cette déclaration, remplacez <acl-name> par le nom de la liste du contrôle d'accès et remplacez <match-element> par une liste d'adresses IP séparées entre elles par un point virgule. La plupart du temps, une adresse IP individuelle ou la notation réseau de l'IP (telle que 10.0.1.0/24) est utilisée pour identifier les adresses IP dans la déclaration acl.

Les listes de contrôle d'accès suivantes sont déjà définies en tant que mots-clés afin de simplifier la configuration :

any — Correspond à toutes les adresses IP.

localhost — Correspond à toute adresse IP utilisée par le système local.

localnets — Correspond à toute adresse IP sur tout réseau auquel le système local est connecté.

none — Ne correspond à aucune adresse IP.

Lorsqu'elles sont utilisées avec d'autres déclarations (telles que la déclaration options), les déclarations acl peuvent être très utiles pour éviter la mauvaise utilisation d'un serveur de noms BIND.

L'exemple ci-dessous établit deux listes de contrôle d'accès et utilise une déclaration options

pour définir la manière dont elles seront traitées par le serveur de noms :

acl black-hats { 10.0.2.0/24;

192.168.0.0/24;

acl red-hats { 10.0.1.0/24;

};

options {

blackhole { black-hats; };

allow-query { red-hats; };

allow-recursion { red-hats; };

}

Cet exemple comporte deux listes de contôle d'accès, black-hats et red-hats. Les hôtes de la liste black-hats se voient dénier l'accès au serveur de noms, alors que ceux de la liste

red-hats se voient eux donner un accès normal.

10.5.2.2 Déclaration include

La déclaration include permet à des fichiers d'être inclus dans un fichier named.conf. Ce faisant, des données de configurations critiques (telles que les clés, keys) peuvent être placées dans un fichier séparé doté de permissions restrictives.

Une déclaration include se présente sous le format suivant :

include "<file-name>"

Dans cette déclaration, <file-name> est remplacé par le chemin d'accès absolu vers un fichier.

10.5.2.3 Déclaration options

La déclaration options définit les options globales de configuration serveur et établit des valeurs par défaut pour les autres déclarations. Cette déclaration peut être utilisée entre autres pour spécifier l'emplacement du répertoire de travail named ou pour déterminer les types de requêtes autorisés.

La déclaration options se présente sous le format suivant :

options {

<option>;

[<option>; ...]

};

Dans cette déclaration, les directives <option> sont remplacées par une option valide.

Ci-dessous figure une liste des options couramment utilisées :

allow-query — Spécifie les hôtes autorisés à interroger ce serveur de noms. Par défaut, tous les hôtes sont autorisés à interroger le serveur de noms. Il est possible

d'utiliser ici une liste de contrôle d'accès ou un ensemble d'adresses IP ou de réseaux afin de n'autoriser que des hôtes particuliers à interroger le serveur de noms.

allow-recursion — Semblable à allow-query, cette option s'applique à des demandes récursives. Par défaut, tous les hôtes sont autorisés à effectuer des demandes récursives sur le serveur de noms.

blackhole — Spécifie les hôtes qui ne sont pas autorisés à interroger le serveur de noms.

directory — Change le répertoire de travail named pour une valeur autre que la valeur par défaut, /var/named/.

forward — Contrôle le comportement de retransmission d'une directive forwarders. Les options suivantes sont acceptées :

o first — Établit que les serveurs de noms spécifiés dans la directive

forwarders soient interrogés avant que named ne tente de résoudre le nom lui-même.

o only — Spécifie que named ne doit pas tenter d'effectuer lui-même une résolution de nom dans le cas où des demandes vers les serveurs de noms spécifiés dans la directive forwarders échouent.

forwarders — Spécifie une liste d'adresses IP valides correspondant aux serveurs de noms vers lesquels les requêtes devraient être envoyées pour la résolution.

listen-on — Spécifie l'interface réseau sur laquelle named prend note des requêtes.

Par défaut, toutes les interfaces sont utilisées.

De cette manière, si le serveur DNS sert également de passerelle, BIND peut être configuré de telle sorte qu'il réponde seulement aux requêtes en provenance de l'un des réseaux.

Une directive listen-on peut ressembler à l'extrait ci-dessous :

options {

listen-on { 10.0.1.1; };

};

Dans cet exemple, seules les requêtes qui proviennent de l'interface réseau servant le réseau privé (10.0.1.1) sont acceptées.

notify — Établit si named notifie les serveurs esclaves lorsqu'une zone est mise à jour. Les options suivantes sont acceptées :

o yes — Notifie les serveurs esclaves.

o no — Ne notifie pas les serveurs esclaves.

o explicit — Notifie seulement les serveurs esclaves spécifiés dans une liste

also-notify à l'intérieur d'une déclaration de zone.

pid-file — Spécifie l'emplacement du fichier de processus ID créé par named.

root-delegation-only — Active l'application des propriétés de délégation dans les TLD (de l'anglais top-level domains ou domaines de premier niveau) et les zones root avec une liste d'exclusion facultative. Le procédé dit de Délégation consiste à diviser une zone unique en multiples sous-zones. Afin de créer une zone déléguée, des éléments connus sous le nom NS records sont utilisés. Ces informations NameServer

(ou delegation records) précise les serveurs de noms d'autorité pour une zone particulière.

L'exemple suivant de root-delegation-only spécifie une liste d'exclusion de TLD desquels des réponses non-déléguées sont attendues en toute confiance :

options {

root-delegation-only exclude { "ad"; "ar"; "biz"; "cr"; "cu";

"de"; "dm"; "id; "lu"; "lv"; "md"; "ms"; "museum"; "name"; "no";

"pa"; "pf"; "se"; "sr"; "to"; "tw"; "us"; "uy"; };

};

statistics-file — Spécifie un autre emplacement des fichiers de statistiques. Par défaut, les statistiques named sont enregistrées dans le fichier

/var/named/named.stats.

De nombreuses autres options sont également disponibles, dont beaucoup dépendent les unes des autres pour fonctionner correctement.

10.5.2.4 Déclaration zone

Une déclaration zone définit les caractéristiques d'une zone tels que l'emplacement de ses fichiers de configuration et les options spécifiques à la zone. Cette déclaration peut être utilisée pour remplacer les déclarations globales d'options.

Une déclaration zone se présente sous le format suivant :

zone <zone-name> <zone-class> { <zone-options>;

[<zone-options>; ...]

};

Dans la déclaration, <zone-name> correspond au nom de la zone, <zone-class> à la classe optionnelle de la zone et <zone-options> représente une liste des options caractérisant la zone.

L'attribut <zone-name> de la déclaration de zone est particulièrement important. Il représente la valeur par défaut assignée à la directive $ORIGIN utilisée au sein du fichier de zone correspondant qui se trouve dans le répertoire /var/named/. Le démon named ajoute le nom de la zone à tout nom de domaine qui n'est pas pleinement qualifié, énuméré dans le fichier de zone.

Par exemple, si une déclaration zone définit l'espace de nom pour example.com, utilisez

example.com comme <zone-name> afin qu'il soit placé à la fin des noms d'hôtes au sein du fichier de zone example.com.

Parmi les options les plus courantes de la déclaration de zone figurent :

allow-query — Spécifie les clients qui sont autorisés à demander des informations à propos de cette zone. Par défaut toutes les requêtes d'informations sont autorisées.

allow-transfer — Spécifie les serveurs esclaves qui sont autorisés à demander un transfert des informations relatvies à la zone. Par défaut toutes les requêtes de transfert sont autorisées.

allow-update — Spécifie les hôtes qui sont autorisés à mettre à jour dynamiquement les informations dans leur zone. Par défaut aucune requête de mise à jour dynamique n'est autorisée.

Soyez très prudent lorsque vous autorisez des hôtes à mettre à jour des informations concernant leur zone. N'activez cette option que si l'hôte est sans aucun doute digne de confiance. De manière générale, il est préférable de laisser un administrateur mettre à jour manuellement les enregistrements de la zone et recharger le service named.

file — Spécifie le nom du fichier qui figure dans le répertoire de travail named et qui contient les données de configuration de la zone.

masters — Spécifie les adresses IP à partir desquelles demander des informations sur la zone faisant autorité. Cette option ne doit être utilisée que si la zone est définie en tant que typeslave.

notify — Détermine si named notifie les serveurs esclaves lorsqu'une zone est mise à jour. Cette directive accepte les options suivantes :

o yes — Notifie les serveurs esclaves.

o no — Ne notifie pas les serveurs esclaves.

o explicit — Notifie seulement les serveurs esclaves spécifiés dans une liste

also-notify à l'intérieur d'une déclaration de zone.

type — Définit le type de zone. Les types énumérés ci-dessous peuvent être utilisés.

Ci-après figure une liste des options valides :

o delegation-only — Applique l'état de délégation des zones d'infrastructure comme COM, NET ou ORG. Toute réponse reçue sans délégation explicite ou implicite est traitée en tant que NXDOMAIN. Cette option est seulement applicable dans des fichiers de zone TLD ou root en implémentation récursive ou de mise en cache.

o forward — Retransmet toutes les requêtes d'informations concerant cette zone vers d'autres serveurs de noms

o hint — Représente 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 autre que la valeur par défaut n'est nécessaire avec une zone hint.

o master — Désigne le serveur de noms faisant autorité pour cette zone. Une zone devrait être configurée comme maître (master) si les fichiers de configuration de la zone se trouvent sur le système.

o slave — Désigne le serveur de noms comme serveur esclave (slave) pour cette zone. Cette option spécifie également l'adresse IP du serveur de noms maître pour cette zone.

zone-statistics — Configure named pour qu'il conserve des statistiques concernant cette zone en les écrivant soit dans l'emplacement par défaut (/var/named/named.stats), soit dans le fichier spécifié dans l'option statistics-file de la déclaration server.

10.5.2.5 Exemples de déclarations zone

La plupart des changements apportés au fichier /etc/named.conf d'un serveur de noms maître ou esclave implique l'ajout, la modification ou la suppression de déclarations de zone. Alors que ces déclarations de zone peuvent contenir de nombreuses options, la plupart des serveurs de noms nécessitent seulement quelques options pour fonctionner de manière efficace. Les déclarations de zone figurant ci-dessous représentent des exemples très élémentaires pour illustrer une relation de serveurs de noms maître/esclave.

Ci-dessous se trouve un exemple de déclaration zone pour le serveur de noms primaire hébergeant example.com (192.168.0.1) :

zone "example.com" IN { type master;

file "example.com.zone";

allow-update { none; };

};

Dans cette déclaration, la zone est identifiée en tant que example.com, le type est défini comme master et le service named a comme instruction de lire le fichier

/var/named/example.com.zone. Elle indique à named de refuser la mise à jour à tout autre hôte.

La déclaration zone d'un serveur esclave pour example.com est légèrement différente de l'exemple précédent. Pour un serveur esclave, le type est slave et une directive indiquant à

named l'adresse IP du serveur maître remplace la ligne allow-update.

Ci-dessous se trouve un exemple de déclaration zone de serveur de noms pour la zone

example.com :

zone "example.com" { type slave;

file "example.com.zone";

masters { 192.168.0.1; };

};

Cette déclaration zone configure named sur le serveur esclave de manière à ce qu'il cherche le serveur maître à l'adresse IP 192.168.0.1 pour y trouver les informations concernant la zone appelée example.com. Les informations que le serveur esclave reçoit du serveur maître sont enregistrées dans le fichier /var/named/example.com.zone.