Bind 9

De bricosoft
(Redirigé depuis Bind9)
Aller à la navigation Aller à la recherche
<google uid="C08" position="right"></google>
Erreur dans le widget Twitter Search: unable to write file /home/gbp4dt5/zones/bricosoft.com/www/extensions/Widgets/compiled_templates/wrt6937f13c503ae0_02985009
Fichier:Crystal Clear app network.png

Bind est le célèbre serveur de noms utilisé industriellement. La version 9 existe depuis 2000 et fournit des services pour la sécurité comme la clé TSIG et DNSSEC.

installation

Les paquets utiles :

# apt-get install dnsutils mtr-tiny iproute iputils-tracepath tcpdump dns-flood-detector

Voire zonecheck pour les registres Ayatollah comme .fr et .it :

# apt-get install zonecheck

Et php, ou autre langage de script pour bidouiller vos zones :

# apt-get install php5-cli php-pear

pieds et paquets

Pour une version stable mais vielle de l'an pèbre :

# apt-get install bind9 bind9-host bind9-doc

Sinon en utilisant un dépot de paquet d'un packageur (hier Herr Hauke) avec Mobuntu :

$ sudo vim /etc/apt/sources.list
deb http://ppa.launchpad.net/hauke/bind9/ubuntu maverick main 
deb-src http://ppa.launchpad.net/hauke/bind9/ubuntu maverick main

Remplacez maverick par votre version de mobuntu hardy(8.04), jaunty(9.04), karmic(9.10), lucid(10.04), maverick(10.10)

Pour les versions > 9.10 (karmic) (le paquetage est python-software-properties)

$ sudo add-apt-repository ppa:hauke/bind9

Pour les versions <= karmic

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6FBBE07B

Pour toutes :

$ sudo apt-get update; sudo apt-get install bind9 bind9-host bind9-doc

use the binary, Luke

<google uid="C06" position="left"></google>

Mais ce n'est pas toujours la toute dernière version stable alors :

$ ls -lha /usr/local/bin/
  • Pour bind9 :
-rwxr-xr-x  1 root root 4,3M 2010-03-08 13:37 dig
-rwxr-xr-x  1 root root 4,3M 2010-03-08 13:37 host
-rwxr-xr-x  1 root root 2,9K 2010-03-08 13:37 isc-config.sh
-rwxr-xr-x  1 root root 4,3M 2010-03-08 13:37 nslookup
-rwxr-xr-x  1 root root 4,2M 2010-03-08 13:37 nsupdate

chroot prison

Ce service critique sera isolé dans sa propre (petite)copie de système de fichiers car Bind (standard de facto) traîne une liste d'anciennes vulnaribilités mais depuis la version 9 c'est de l'histoire ancienne. Donc simplement par tradition ;-) on va l'installer dans un chroot jail.

Ici l'arborescence pour Bind sera dans /var/named :

# mkdir -p /var/named/run-root/{dev,etc,var/cache/bind,var/log/bind,var/named,var/run/named,etc/bind}
# chown root:bind /var/named/run-root/var/log/bind/
# chmod 775 /var/named/run-root/var/log/bind/
# cp -p /etc/localtime /var/named/run-root/etc/
# mknod /var/named/run-root/dev/null c 1 3
# mknod /var/named/run-root/dev/random c 1 8
# chmod 666 /var/named/run-root/dev/*
# chown root:bind /var/named/run-root/
# chown -R bind:bind /var/named/run-root/var
# chown -R bind:bind /var/named/run-root/etc/bind
# usermod -d /var/named/run-root bind
# chmod 700 /var/named
# chown bind:bind /var/named/run-root
# chmod 700 /var/named/run-root

Apparmor

soit :

# sudo aa-complain usr.sbin.named 
Setting /etc/apparmor.d/usr.sbin.named to complain mode.

soit :

vim /etc/apparmor.d/usr.sbin.named
/etc/named.conf rw,
apparmor restart

archivage de l'ancienne configuration

# mkdir /var/named/run-root/var/log/bind/old
# cp -rp /etc/bind/ /var/named/run-root/etc/

SyslogD

#  vim /etc/default/syslogd

Primaire

Fichier:Crystal Clear filesystem file important.png

Pour corser l'affaire et vous empêcher de comprendre facilement, dans l'exemple qui va suivre

1.1.1.1 est l'Ip du primaire et 2.2.2.2 l'Ip du secondaire

Créer une zone

Créez dans /var/named/run-root/var/named/primary/ le fichier db.bricosoft.com : <source lang="php"> $TTL 2D @ IN SOA ns1.mon-primaire.net. root.bricosoft.com. (

                      	2009081201      ; Serial
                       24H		; Refresh
                       2H		; Retry
                      	1W		; Expire
                       2D	)       ; Negative Cache TTL

@ IN NS ns1.mon-primaire.net. @ IN NS ns2.mon-secondaire.org. @ IN MX 10 mail.bricosoft.com. ns1 IN A 1.1.1.1 ns2 IN A 2.2.2.2 bricosoft.com. IN A 8.7.6.5 mail IN A 44.44.44.44 www CNAME bricosoft.com. </source> Ajoutez dans /var/named/run-root/etc/bind/primary.conf : <source lang="c"> zone "bricosoft.com" {

       type master;
       notify yes;
       allow-transfer{ 2.2.2.2; };
       file "/var/named/primary/db.bricosoft.com";

}; </source>

Pour plusieurs IPs, séparez par des ; et non des virgules : <source lang="c">

       allow-transfer{ 2.2.2.2; 3.3.3.3; };

</source>

Secondaire

Ajouter une zone

Dans /var/named/run-root/etc/bind/secondary.conf : <source lang="c"> zone "bricosoft.com" {

       type slave;
       masters { 1.1.1.1; };
       file "/var/named/secondary/db.bricosoft.com";

}; </source>

Run

Par un paquet :

/usr/sbin/named -u bind -t /var/named/run-root -c /etc/bind/named.conf

ou si vous avez compilé :

/usr/local/sbin/named -u bind -t /var/named/run-root -c /etc/bind/named.conf

configs

Version

$ dig @ns1.toto.uk -c ch -t txt version.bind 
...
;; ANSWER SECTION:
version.bind.		0	CH	TXT	"9.8.0"
...

Concis :

dig +short @a.izz.se -c ch -t txt version.bind
"9.7.0"

D'autres démons :

$ dig +short @ns1.dreamhost.com -c ch -t txt version.bind
"Served by POWERDNS 2.9.22 $Id: packethandler.cc 1321 2008-12-06 19:44:36Z ahu $"


mais vous pouvez personnaliser dans : /etc/bind/named.conf.options

options {
       ...
       version "quedalle";
};

Catch All

A ne pas confondre avec le catch all des emails, ici c'est pour les noms sous une zone (exemple d'utilisation intelligente? : gnafreugapoueee.miniville.fr)

Dans votre primaire db.trucmuche.zz :

*	IN	A	213.251.145.96

Et tous les trucmuches.trucmuche.zz iront vers l'ip.

Ne pas oublier le catch all coté Apache :

<VirtualHost 1.2.3.4:80>
        ServerAlias trucmuche.zz *.trucmuche.zz
...

name server control utility - rndc

Fichier:Police Paris CRS vehicule dsc06481.jpg
Un utilitaire utilisé comme "panier à salade"

L'utilitaire de contrôle du serveur de nom ou rndc permet de faire des conneries ou de péter le DNS sans être root.

scripts en tout genre

changer le hostmaster en masse

$ pwd
/var/named/run-root/var/named/primary

Change tous les hostmasters qui sont dans les fichiers de zone db.* en abuse@totoche.yt :

$ sed -i "s/IN      SOA     ns.mondns.fr.\+$/IN      SOA     ns.mondns.fr.     abuse.totoche.yt. (/" db.*

gérer l'historique des zones avec un système de gestion de versions

Avec Subversion

En cours [1]

Si vous souhaitez fournir l'assurance que les informations provenant de votre serveur de noms (Domain Name Server) sont authentiques, rajoutez DNSSEC.

La contrepartie est une complexité accrue de votre système de noms car DNSSEC est [chrono|cpu|memory|neuro]phage pour une première installation :

Liens