Le Ven 19 septembre 2008 14:50, [EMAIL PROTECTED] a écrit : [...] > Normalement cela ne devrait pas poser de problèmes, je voudrais votre > avis.
Voici la démarche que j'ai suivie pour le faire (j'ai documenté l'installation des serveurs pour qu'elle soit reproductible, mais je ne peux pas distribuer le document entier, désolé). C'est un peu long, mais bon, tu devrais y trouver ton bonheur. Pas facile de faire un copier/coller d'un texte mis en page dans un courriel pur texte ! Fanfan Serveur DNS maître : bind Modification des sources et recompilation du paquetage Le paquet bind fourni par Debian ne prend pas en charge LDAP en tant que base de données. Nous allons donc recompiler le paquetage avec un correctif sur un poste de développement. Installons les outils de développement et les dépendances de compilation depuis un compte d'administration : [ [EMAIL PROTECTED] ShLvl:1 Cmd:525 Ret:0 sam oct 27 12:08:24 ] ~ # aptitude install devscripts debhelper fakeroot dpkg-dev build-essential [ [EMAIL PROTECTED] ShLvl:1 Cmd:525 Ret:0 sam oct 27 12:08:24 ] ~ # aptitude install libopenldap-dev libssl-dev libtool bison Téléchargeons les sources du paquetage et du correctif : [ [EMAIL PROTECTED] ShLvl:1 Cmd:525 Ret:0 sam oct 27 12:08:24 ] /usr/src $ wget http://bind9-ldap.bayour.com/bind-sdb-ldap-1.0.tar.gz [ [EMAIL PROTECTED] ShLvl:1 Cmd:525 Ret:0 sam oct 27 12:08:24 ] /usr/src $ tar xvzf bind-sdb-ldap-1.0.tar.gz bind-sdb-ldap-1.0/ bind-sdb-ldap-1.0/ldapdb.c bind-sdb-ldap-1.0/ldapdb.h bind-sdb-ldap-1.0/README bind-sdb-ldap-1.0/INSTALL [ [EMAIL PROTECTED] ShLvl:1 Cmd:525 Ret:0 sam oct 27 12:08:24 ] /usr/src $ apt-get source bind9 Lecture des listes de paquets... Fait Construction de l'arbre des dépendances... Fait Nécessité de prendre 4323ko dans les sources. Réception de : 1 ftp://ftp.fr.debian.org etch/main bind9 1:9.3.4-2 (dsc) [748B] Réception de : 2 ftp://ftp.fr.debian.org etch/main bind9 1:9.3.4-2 (tar) [4044kB] Réception de : 3 ftp://ftp.fr.debian.org etch/main bind9 1:9.3.4-2 (diff) [279kB] 4323ko réceptionnés en 2m33s (28,2ko/s) dpkg-source: extracting bind9 in bind9-9.3.4 [ [EMAIL PROTECTED] ShLvl:1 Cmd:525 Ret:0 sam oct 27 12:08:24 ] /usr/src $ cd bind9-9.3.4/ On ajoute la dépendance aux paquetages LDAP pour la compilation. La dépendance pour le paquetage binaire sera calculée automatiquement : [ [EMAIL PROTECTED] ShLvl:1 Cmd:525 Ret:0 sam oct 27 12:08:24 ] /usr/src/bind9-9.3.4 $ vim debian/control Source: bind9 Section: net Priority: optional Maintainer: LaMont Jones <[EMAIL PROTECTED]> Uploaders: Bdale Garbee <[EMAIL PROTECTED]> Build-Depends: debhelper (>=4.1.16), libssl-dev, libtool, bison, libldap2-dev Standards-Version: 3.7.2.0 On change le numéro de version du paquetage binaire à générer. Attention, le nom et l'adresse électronique doivent impérativement correspondre à une clé secrète du trousseau de clés GPG du développeur pour que cette clé puisse signer les paquetages créés. [ [EMAIL PROTECTED] ShLvl:1 Cmd:525 Ret:0 sam oct 27 12:08:24 ] /usr/src/bind9-9.3.4 $ dch -i bind9 (1:9.3.4-2ldap) unstable; urgency=low * Patch sdb-LDAP 1.0 -- François Cerbelle <[EMAIL PROTECTED]> Wed, 24 Oct 2007 14:56:09 +0200 bind9 (1:9.3.4-2) unstable; urgency=high * Actually really do the merge of 9.3.4. Sigh. Closes: #408925 -- LaMont Jones <[EMAIL PROTECTED]> Mon, 29 Jan 2007 06:09:03 -0700 On applique le correctif selon les instructions qu'il contient : [ [EMAIL PROTECTED] ShLvl:1 Cmd:525 Ret:0 sam oct 27 12:08:24 ] /usr/src/bind9-9.3.4 $ cp ../bind-sdb-ldap-1.0/ldapdb.c bin/named/ [ [EMAIL PROTECTED] ShLvl:1 Cmd:525 Ret:0 sam oct 27 12:08:24 ] /usr/src/bind9-9.3.4 $ cp ../bind-sdb-ldap-1.0/ldapdb.h bin/named/include/ [ [EMAIL PROTECTED] ShLvl:1 Cmd:525 Ret:0 sam oct 27 12:08:24 ] /usr/src/bind9-9.3.4 $ vim bin/named/Makefile.in # # Add database drivers here. # DBDRIVER_OBJS = [EMAIL PROTECTED]@ DBDRIVER_SRCS = ldapdb.c DBDRIVER_INCLUDES = -I/usr/include DBDRIVER_LIBS = -L/usr/lib -lldap -llber -lresolv [ [EMAIL PROTECTED] ShLvl:1 Cmd:525 Ret:0 sam oct 27 12:08:24 ] /usr/src/bind9-9.3.4 $ vim bin/named/main.c /* * Include header files for database drivers here. */ /* #include "xxdb.h" */ #include <ldapdb.h> [...] /* * Add calls to register sdb drivers here. */ /* xxdb_init(); */ ldapdb_init(); [...] /* * Add calls to unregister sdb drivers here. */ /* xxdb_clear(); */ ldapdb_clear(); Recompilons le paquetage. À deux reprises le programme va vous demander la phrase de passe pour déverrouiller votre clé secrète et signer deux fichiers. [ [EMAIL PROTECTED] ShLvl:1 Cmd:525 Ret:0 sam oct 27 12:08:24 ] /usr/src/bind9-9.3.4 $ dpkg-buildpackage -rfakeroot dpkg-buildpackage: source package is bind9 dpkg-buildpackage: source version is 1:9.3.4-2ldap dpkg-buildpackage: source changed by Francois Cerbelle <[EMAIL PROTECTED]> dpkg-buildpackage: host architecture i386 dpkg-buildpackage: source version without epoch 9.3.4-2ldap fakeroot debian/rules clean [...] You need a passphrase to unlock the secret key for user: "François Cerbelle <[EMAIL PROTECTED]>" 1024-bit DSA key, ID A4CAE83F, created 2001-09-11 dpkg-genchanges dpkg-genchanges: pas d'inclusion du code source original dans l'envoi (« upload ») signfile bind9_9.3.4-2ldap_i386.changes You need a passphrase to unlock the secret key for user: "François Cerbelle <[EMAIL PROTECTED]>" 1024-bit DSA key, ID A4CAE83F, created 2001-09-11 dpkg-buildpackage: binary and diff upload (original source NOT included) Vous disposez maintenant de toute une collection de paquetages binaires et sources dans le répertoire parent. Si vous disposez d'un dépôt, c'est le moment de faire un dput, mais c'est hors du cadre de ce document. On retire les paquetages qui ont servi à la recompilation sur le poste de développement : [ [EMAIL PROTECTED] ShLvl:1 Cmd:525 Ret:0 sam oct 27 12:08:24 ] ~ # aptitude purge libldap2-dev libssl-dev libtool bison devscripts debhelper fakeroot dpkg-dev build-essential type-handling Nous allons nous contenter de télécharger les paquetages binaires sur le serveur par scp (ssh). Installation et protection du paquetag [ [EMAIL PROTECTED] ShLvl:1 Cmd:525 Ret:0 sam oct 27 12:08:24 ] ~ # dpkg -i bind9_9.3.4-2ldap_i386.deb libdns22_9.3.4-2ldap_i386.deb libisccfg1_9.3.4-2ldap_i386.deb libisc11_9.3.4-2ldap_i386.deb libisccc0_9.3.4-2ldap_i386.deb bind9-host_9.3.4-2ldap_i386.deb dnsutils_9.3.4-2ldap_i386.deb libbind9-0_9.3.4-2ldap_i386.deb liblwres9_9.3.4-2ldap_i386.deb (Lecture de la base de données... 19549 fichiers et répertoires déjà installés.) [...] Comme nous ne voulons pas que les paquetages utilisant LDAP soit modifié lors d'une mise à jour automatique du système, nous allons les marquer pour qu'ils soient toujours conservés. [ [EMAIL PROTECTED] ShLvl:1 Cmd:525 Ret:0 sam oct 27 12:08:24 ] ~ # aptitude hold bind9 libdns22 libisccfg1 libisc11 libisccc0 Configuration Comme le serveur DNS est prévu pour répondre aux demandes concernant ses zones uniquement, nous allons désactiver les requêtes récursives sauf pour celles venant du serveur luimême. Cela permet d'utiliser le cache de bind. De plus, nous allons interdire TOUS les transferts de zones (AXFR et IXFR) par défaut, nous les réactiverons zone par zone dans leur section spécifique : options { directory "/var/cache/bind"; // If there is a firewall between you and nameservers you want // to talk to, you might need to uncomment the query-source // directive below. Previous versions of BIND always asked // questions using port 53, but BIND 8.1 and later use an unprivileged // port by default. // query-source address * port 53; // If your ISP provided one or more IP addresses for stable // nameservers, you probably want to use them as forwarders. // Uncomment the following block, and insert the addresses replacing // the all-0's placeholder. // forwarders { // 0.0.0.0; // }; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; allow-recursion { 127.0.0.1; }; allow-transfer { none; }; }; Nous allons ajouter les directives de journalisation de l'activité de bind dans syslog. Nous ajouterons des ACL définissant les adresses IP des différents DNS secondaires des fournisseurs autorisés à effectuer des transferts de zone (AXFR) et nous utilisons la directive « notify » pour que les esclaves soient prévenus des modifications apportées sur les zones (à condition de modifier aussi le numéro de version des enregistrements). Et enfin, nous configurerons les zones définies dans l'annuaire dans les fichiers de configuration de bind en remplaçant XXXXXXXX par le mot de passe de l'utilisateur bind9 : [ [EMAIL PROTECTED] ShLvl:1 Cmd:525 Ret:0 sam oct 27 12:08:24 ] ~ # vim /etc/bind/named.conf.local // // Do any local configuration here // logging { category "default" { "syslog"; }; category "general" { "syslog"; }; category "database" { "syslog"; }; category "security" { "syslog"; }; category "config" { "syslog"; }; category "resolver" { "syslog"; }; category "xfer-in" { "syslog"; }; category "xfer-out" { "syslog"; }; category "notify" { "syslog"; }; category "client" { "syslog"; }; category "unmatched" { "syslog"; }; category "network" { "syslog"; }; category "update" { "syslog"; }; category "queries" { "syslog"; }; category "dispatch" { "syslog"; }; category "dnssec" { "syslog"; }; channel "syslog" { syslog daemon; severity warning; print-time yes; print-category yes; }; }; acl "Gandi_DNS" { 217.70.177.60; 217.70.177.40; }; acl "ColtFrance_DNS" { 195.68.0.11; }; acl "Dedibox_DNS" { xx.xx.xx.xx; }; acl "Globalcorp_DNS" { localhost; aa.aa.aa.aa; bb.bb.bb.bb; }; zone "globalcorp.fr" in { type master; allow-transfer { Globalcorp_DNS; ColtFrance_DNS; Dedibox_DNS; }; notify yes; database "ldap ldap://127.0.0.1/zoneName=globalcorp.fr,ou=DNS,dc=globalcorp,dc=fr????!bindname=cn=bind9%2cou=System%2cdc=globalcorp %2cdc=fr,!x-bindpw= XXXXXX X X 172800"; }; zone "globalcorp.com" in { type master; allow-transfer { Globalcorp_DNS; Gandi_DNS; Dedibox_DNS; }; notify yes; database "ldap ldap://127.0.0.1/zoneName=globalcorp.com,ou=DNS,dc=globalcorp,dc=fr????!bindname=cn=bind9%2cou=System%2cdc=globalcorp %2cdc=fr,!x-bindpw= XXXXXXX X 172800"; }; zone "sylaos.fr" in { type master; allow-transfer { Globalcorp_DNS; ColtFrance_DNS; Dedibox_DNS; }; notify yes; database "ldap ldap://127.0.0.1/zoneName=sylaos.fr,ou=DNS,dc=globalcorp,dc=fr????!bindname=cn=bind9%2cou=System%2cdc=globalcorp %2cdc=fr,!x-bindpw= XXXXXXX X 172800"; }; zone "sylaos.com" in { type master; allow-transfer { Globalcorp_DNS; Gandi_DNS; Dedibox_DNS; }; notify yes; database "ldap ldap://127.0.0.1/zoneName=sylaos.com,ou=DNS,dc=globalcorp,dc=fr????!bindname=cn=bind9%2cou=System%2cdc=globalcorp %2cdc=fr,!x-bindpw= XXXXXXX X 172800"; }; // Consider adding the 1918 zones here, if they are not used in your // organization //include "/etc/bind/zones.rfc1918"; Comme ce fichier contient maintenant le mot de passe de l'utilisateur bind9 en clair, il faut impérativement le protéger : [ [EMAIL PROTECTED] ShLvl:1 Cmd:525 Ret:0 sam oct 27 12:08:24 ] ~ # chmod o-rwx /etc/bind/named.conf.local Configuration de l'annuaire LDAP Avant tout, si on laisse les scripts de redémarrage du système ainsi, l'annuaire LDAP démarre après le DNS. Bind ne peut donc pas s'initialiser correctement. Nous allons donc modifier l'ordre de démarrage des services : [ [EMAIL PROTECTED] ShLvl:1 Cmd:532 Ret:0 mer nov 14 16:53:13 ] / # update-rc.d -f slapd remove Removing any system startup links for /etc/init.d/slapd ... /etc/rc0.d/K80slapd /etc/rc1.d/K80slapd /etc/rc2.d/S19slapd /etc/rc3.d/S19slapd /etc/rc4.d/S19slapd /etc/rc5.d/S19slapd /etc/rc6.d/K80slapd [ [EMAIL PROTECTED] ShLvl:1 Cmd:533 Ret:0 mer nov 14 16:53:17 ] / # update-rc.d slapd defaults 14 80 Adding system startup for /etc/init.d/slapd ... /etc/rc0.d/K80slapd -> ../init.d/slapd /etc/rc1.d/K80slapd -> ../init.d/slapd /etc/rc6.d/K80slapd -> ../init.d/slapd /etc/rc2.d/S14slapd -> ../init.d/slapd /etc/rc3.d/S14slapd -> ../init.d/slapd /etc/rc4.d/S14slapd -> ../init.d/slapd /etc/rc5.d/S14slapd -> ../init.d/slapd Comme le serveur LDAP va héberger les données du DNS, il faut lui ajouter le schéma dNSZone (http://bind9-ldap.bayour.com/). Et lui indiquer les champs sur lesquels il faut maintenir un index pour accélérer les requêtes. [ [EMAIL PROTECTED] ShLvl:1 Cmd:525 Ret:0 sam oct 27 12:08:24 ] ~ # cp ../bind-sdb-ldap-1.0/dnszone.schema /etc/ldap/schemas [ [EMAIL PROTECTED] ShLvl:1 Cmd:525 Ret:0 sam oct 27 12:08:24 ] ~ # vim /etc/ldap/slapd.conf include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/inetorgperson.schema include /etc/ldap/schema/dnszone.schema Nous créons d'abord un mot de passe pour l'utilisateur : [ [EMAIL PROTECTED] ShLvl:1 Cmd:525 Ret:0 sam oct 27 12:08:24 ] ~ # slappasswd -v -h '{CRYPT}' New password: Re-enter new password: {CRYPT}EcuRk2WzBDa3A Nous créons un fichier LDIF à importer pour créer le conteneur qui contiendra toute la configuration des zones et l'utilisateur qui permettra à bind de se connecter à l'annuaire : dn: ou=DNS,dc=globalcorp,dc=fr objectClass: top objectClass: organizationalUnit ou: DNS dn: cn=bind9,ou=System,dc=globalcorp,dc=fr objectClass: simpleSecurityObject objectClass: organizationalRole userPassword: {crypt}U3Wqx0kia7Xws description: DNS User cn: bind9 Nous arrêtons le démon de l'annuaire : [ [EMAIL PROTECTED] ShLvl:1 Cmd:525 Ret:0 sam oct 27 12:08:24 ] ~ # /etc/init.d/slapd stop Stopping OpenLDAP: slapd. Nous importons le fichier : [ [EMAIL PROTECTED] ShLvl:1 Cmd:525 Ret:0 sam oct 27 12:08:24 ] ~ # slapadd fichier.ldif Nous donnons les droits de consultation sur les informations de l'annuaire à l'utilisateur créé : [ [EMAIL PROTECTED] ShLvl:1 Cmd:525 Ret:0 sam oct 27 12:08:24 ] ~ # vim /etc/ldap/slapd.conf [...] access to dn.base="" by * read access to dn.base="dc=globalcorp,dc=fr" by dn="cn=admin,ou=System,dc=globalcorp,dc=fr" write by dn="cn=bind9,ou=System,dc=globalcorp,dc=fr" read by * none access to dn.subtree="ou=DNS,dc=globalcorp,dc=fr" by dn="cn=admin,ou=System,dc=globalcorp,dc=fr" write by dn="cn=bind9,ou=System,dc=globalcorp,dc=fr" read by * none [...] Ajoutons les index permettant d'accélérer les recherches de bind dans l'annuaire LDAP : # Indexing options for database #1 index objectClass eq # On ajoute l'indexation des paramètres relatifs au DNS index relativeDomainName eq index zoneName eq # Save the time that the entry gets modified, for database #1 lastmod on On recalcule tous les index pour initialiser les nouveaux et rafraîchir les anciens : [ [EMAIL PROTECTED] ShLvl:1 Cmd:507 Ret:0 mer oct 31 11:27:36 ] ~ # slapindex WARNING! Runnig as root! There's a fair chance slapd will fail to start. Check file permissions! [ [EMAIL PROTECTED] ShLvl:1 Cmd:509 Ret:0 mer oct 31 11:27:45 ] ~ # chown openldap.openldap /var/lib/ldap/* Il faut enfin redémarrer l'annuaire : [ [EMAIL PROTECTED] ShLvl:1 Cmd:525 Ret:0 sam oct 27 12:08:24 ] ~ # /etc/init.d/slapd start Starting OpenLDAP: slapd. Création des zones LDA Nous allons insérer les zones déclarées dans bind dans l'annuaire à l'aide du fichier LDIF en annexe. Nous arrêtons le démon de l'annuaire : [ [EMAIL PROTECTED] ShLvl:1 Cmd:525 Ret:0 sam oct 27 12:08:24 ] ~ # /etc/init.d/slapd stop Stopping OpenLDAP: slapd. importons le fichier : [ [EMAIL PROTECTED] ShLvl:1 Cmd:525 Ret:0 sam oct 27 12:08:24 ] ~ # slapadd zones.ldif et redémarrons l'annuaire : [ [EMAIL PROTECTED] ShLvl:1 Cmd:525 Ret:0 sam oct 27 12:08:24 ] ~ # /etc/init.d/slapd start Starting OpenLDAP: slapd. Fanfan -- http://www.cerbelle.net - http://www.afdm-idf.org -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/DebFrFrenchLists Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:" To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

