|
Julien Thomas - TELECOM Bretagne
|
![]()
|
|
Informations
Déploiement d'applications
Sécurité des applications
Sécurité SELinux
|
Déploiement de BIND9Le serveur choisi est celui le plus utilisée, BIND9, en version 9.4.1-r1. Le paquet installé se nomme logiquement bind. L'application du patch de Venaas (+ ldap, Venaas : http ://www.venaas.no/ldap/bind-sdb/) en version 1.1.0 a été nécessaire pour pouvoir activer correctement l'option ldap à la compilation en plus de l'option ssl. Ainsi la procédure d'installation ne s'est pas limité à l'éxécution de la commande emerge bind. ObjectifsLe serveur DNS a pour but de configurer automatiquement les différents serveurs. Afin de centraliser les données, le serveur DNS repose lui aussi sur le serveur LDAP, qui contient toutes les informations de la plateforme.Procédure d'installationPar chance la modification des sources avant l'installation d'un paquet sur Gentoo est aisé puisque le mécanisme d'installation d'une application consiste simplement en la compilation de ses sources. Il sufit alors de décomposer les étapes effectuées par la commande emerge, de les éxécuter semi-manuellement et de faire la modification de source au bon moment. Téléchargement des sourcesIl faut tout d'abord télécharger les sources et vérifier leur intégrité. Pour celà nous allons utiliser l'option fetch de la commande ebuild sur l'ebuild désiré de bind. Les ebuild se trouve dans le répertoire /usr/portage/, classé selon la hierarchie classique des paquets Gentoo. Ainsi l'ebuild désirée se trouve dans le dossier /usr/portage/net-dns/bind/. La version installée est la version 9.4.1-r1, nous utiliserons donc le fichier bind-9.4.1-r1.ebuild. La commande à executer est ebuild bind-9.4.1-r1.ebuild fetch si l'on se trouve dans le répertoire /usr/portage/net-dns/bind/. Il faut ensuite décompresser l'archive téléchargée dans le répertoire /usr/portage/distfiles/ avec la commande ebuild bind-9.4.1-r1.ebuild unpack. Les sources sont alors décompressées dans le dossier /var/tmp/portage/net-dns/bind-9.4.1-r1. C'est le dossier work/bind-9.4.1 qui nous intéressera plus particulièrement. Modification des sourcesNous voila donc à la racine du répertoire de sources à proprement parlé. Il suffit alors de suivre les instructions du fichier INSTALL du patch téléchargé sur le site de Venaas. Il st a noté qu'il y une option SSL non activé par défaut, dans ce patch. C'est la configuration que nous avons choisi. Les opérations à effectuer sont alors :
Il suffit ensuite d'executer les commandes ebuild bind-9.4.1-r1.ebuild compile, ebuild bind-9.4.1-r1.ebuild install et ebuild bind-9.4.1-r1.ebuild qmerge. Ceci complète l'installation qu'aurait faire emerge, si on avait pas eu besoin de modifier les sources. Configuration de LDAPDans le cas du serveur DNS, on se contente de se connecter au serveur LDAP avec le compte Manager. Un login sera créé par la suite et les accès seront définit dans la partie sécurité. Il suffit alors simplement de créer la branche dn: ou=polux.org,ou=dns,ou=services,ROOT_DN qui servira à garder les informations de configuration du DNS. Remarquons qu'à chaque requête DNS, le serveur ira lire la base LDAP et que la simple modifocation de cette base permet la mise à jour dynamique des DNS sans redémarrer le serveur DNS. Il est nécessaire d'importer le schéma dnszone.schema dans le dossier /etc/openldap/schema qui définit les classes nécessaire à BIND pour la configuration via LDAP. Ce fichier peut être trouvé sur internet à l'adresse suivante http://www.venaas.no/ldap/bind-sdb/dnszone-schema.txt (Schema pour le support de ldap sur bind, Venaas). Pour plus de rapidité on peut alors aussi ajouter les index définit lors de la configuration du serveur LDAP : include /etc/openldap/schema/dnszone.schema index zoneName eq index relativeDomainName eq Notons qu'une entrée ayant relativeDomainName comme nom de domaine est nécessaire pour que cela marche. Dans notre cas, nous avons donc crée l'entrée relativeDomainName=polux.org,ou=polux.org,ou=dns,ou=services,ROOT_DN avec l'attribut zoneName=polux.org. L'entrée @C'est l'entrée la plus importante de la base LDAP puisque l'on y définit les informations essentielles du domaine : mXRecord indique quelle machine est responsable du transfert de courrier électronique, nSRecord correspond au serveur de noms ayant autorité sur le domaine, tandis que sOARecord permet de décrire le serveur de nom ayant autorité sur la zone, ainsi que l'adresse électronique du contact technique. Enfin tXTRecord permet simplement d'indiquer un commentaire sur l'entrée. Définir une association nom-IPIl faut alors créer une entrée ayant pour référence l'attribut relativeDomainName avec pour valeur le nom désiré, ayant comme classe mère top et dNSZone, et compléter l'attribut zoneName avec le nom du domain géré, ici polux.org. On renseigne alors l'adresse IP dans le champ aRecord, la classe DNS étant dNSClass=IN. C'est le type d'enregistrement fait pour mv1, mv2, mv3 et mv4, renseignés respectivement aux adresses IP : 10.133.14.11, 10.133.14.12, 10.133.14.13 et 10.133.14.1. Définir un alias d'un nomC'est la même procédure que pour créer une entrée de type aRecord, sauf que l'on renseigne l'attribut cNAMERecord avec le nom dont on veut en faire l'alias. C'est la cas pour notre maquette pour des entrées tels que auth, ldap, smtp, etc. Le type de la classe DNS est alors CNAME (dNSClass=CNAME). Configuration du Fichier /etc/bind/named.confLe Fichier /etc/bind/named.conf indique à BIND quels sont les domaines à gérer et comment les gérer. Dans notre cas, il est nécessaire d'indiquer à BIND que le domaine polux.org est géré et qu'il doit prendre se configuration pour ce domaine sur le serveur LDAP. De plus il faut autoriser les machines virtuelles à accéder au serveur DNS. Pour plus de détails, voir le listing ci-dessous. La configuration de la connexion au serveur LDAP s'effectue via la ligne database "ldap ldap://LDAP_URL/ou=polux.org,ou=dns,ou=services, ROOT_DN???? 172800 !bindname=cn=Manager%2cdc=polux%2cdc=org ,!x-bindpw=tutu,x-tls"; qui contient :
Pour des raisons techniques, il faut laisser obligatoirement une valeur pour le temps de péremption et à cette position, sous peine de ne pas pouvoir démarrer BIND. Bien que ce soit une limitation due au patch LDAP pour bind (sdb-ldap, comme indiqué dans la partie installation 1.4.9), cela permet également de définir la valeur par défaut du TTL des entrées définies dans l'annuaire LDAP.
options {
directory "/var/bind" ;
listen-on-v6 { none ; } ;
# Autorise les machines virtuelles à effectuer des requêtes DNS sur ce serveur
listen-on { 127.0.0.1 ; 10.133.14/24 ;} ;
pid-file "/var/run/named/named.pid" ; } ;
# Définit la résolution pour tous les domaines non spécifiés
# hint pour effectuer une requete comme un client
# voir named.ca pour voir les serveurs questionnés
# rajouter un serveur ici si on a pas acces directement à internet ou utiliser la
commande query-source
zone "." IN {
type hint ;
file "named.ca" ;
} ;
zone "localhost" IN {
type master ;
file "pri/localhost.zone" ;
allow-update { none ; } ;
notify no ;
} ;
zone "127.in-addr.arpa" IN {
type master ;
file "pri/127.zone" ;
allow-update { none ; } ;
notify no ;
} ;
zone "polux.org" {
type master ;
database "ldap ldap ://ldap.polux.org/ou=polux.org,ou=dns,ou=services,ROOT_DN ? ? ? ? 172800 !bindname=cn=Manager \
%2cROOT_DN, !xbindpw=tutu,x-tls" ;
allow-update { none ; } ;
notify no ;
} ;
/etc/bind/named.conf
«Design-by-assumption works as long as assumptions hold. Assumptions are
shortcuts to useful efficiencies, provided they are not violated. »
|