DHCPd et LDAP
Un article de Diablotins.org.
Cette page est en travaux, elle n'est pas encore dans un état de diffusion
|
|
- Fichier /usr/local/etc/dhdhcpd.conf
ldap-server "locahost"; ldap-port 389; ldap-username "cn=dhcpmanager,dc=domain,dc=tld"; ldap-password "<SECRET>"; ldap-base-dn "ou=dhcp,dc=domain,dc=tld"; ldap-method dynamic; ldap-debug-file "/var/log/dhcp-ldap-startup.log";
* Voici le fichier LDIF ( dhcp-ressources.ldif ) pour la création, de l'utilisateur cn=dhcpmanager et de la branche ou=DHCP
dn: ou=dhcp,dc=domain,dc=tld
objectclass: organizationalunit
ou: dhcp
description: Serveur dhcp
dn: cn=dhcpmanager,dc=domain,dc=tld
objectclass: top
objectclass: person
cn: dhcpmanager
sn: dhcpmanager
userpassword: {SSHA}<SHA1_HASHED_SECRET>
$OPENLDAPBIN/bin/ldapadd -x -D "cn=manager,ou=ressources,o=xenux,dc=net" -W -f dhcp-ressources.ldif
* Afin de créer un fichier LDIF contenant la configuration d'un serveur DHCP déjà existant, il existe un outils livré avec le patch :
si vous n'avez pas de serveur DHCP actif, inspirez vous du fichier LDIF résultant pour construire votre propre fichier
my $basedn = "ou=dhcp, o=domain, dc=tld";
dhcpd-conf-to-ldap.pl < dhcpd.conf > dhcpd.ldif
- Exemple de configuration /usr/local/etc/dhcpd.conf
- On donne le nom du domaine
option domain-name "xenux.net";
- On défini le masque réseau
option subnet-mask 255.255.255.0;
- Ici c'est le serveur de nom, le serveur privé,
- il faut aussi mettre le/les DNS donnés par votre provider.
option domain-name-servers 192.168.1.2 , 192.168.1.3; ddns-update-style ad-hoc;
- Les clients auront cette adresse comme passerelle par défaut
option routers 192.168.1.1;
- Le bail a une durée de 86400 s par défaut, soit 24 h
- On peut configurer les clients pour qu'ils puissent demander une durée de bail spécifique
default-lease-time 86400;
- On le laisse avec un maximum de 7 jours
max-lease-time 604800;
- Définition du réseau : 192.168.1.0 et de son masque
subnet 192.168.1.0 netmask 255.255.255.0 {
- La plage d'adresses disponibles pour les clients
range 192.168.1.4 192.168.1.253;
- Et l'adresse utilisée pour la diffusion
option broadcast-address 192.168.1.255;
}
- Définition de notre machine PC-1
host PC-1 {
hardware ethernet 00:00:4C:71:46:68;
fixed-address 192.168.1.5;
}
Nous obtenons ainsi le fichier dhcpd-xenux.ldif correspondant Ă cette configuration :
dn: cn=server, ou=DHCP,ou=ressources, o=xenux, dc=net objectClass: top objectClass: dhcpServer cn: server dhcpServiceDN: cn=DHCP Config, ou=DHCP,ou=ressources, o=xenux, dc=net dn: cn=DHCP Config, ou=DHCP,ou=ressources, o=xenux, dc=net cn: DHCP Config objectClass: top objectClass: dhcpService objectClass: dhcpOptions dhcpPrimaryDN: cn=server, ou=DHCP,ou=ressources, o=xenux, dc=net dhcpStatements: ddns-update-style ad-hoc dhcpStatements: default-lease-time 86400 dhcpStatements: max-lease-time 604800 dhcpOption: domain-name "xenux.net" dhcpOption: subnet-mask 255.255.255.0 dhcpOption: domain-name-servers 192.168.1.2 , 192.168.1.3 dhcpOption: routers 192.168.1.1 dn: cn=192.168.1.0, cn=DHCP Config, ou=DHCP,ou=ressources, o=xenux, dc=net cn: 192.168.1.0 objectClass: top objectClass: dhcpSubnet objectClass: dhcpOptions dhcpNetMask: 24 dhcpRange: 192.168.1.4 192.168.1.253 dhcpOption: broadcast-address 192.168.1.255 dn: cn=PC-1, cn=DHCP Config, ou=DHCP,ou=ressources, o=xenux, dc=net cn: PC-1 objectClass: top objectClass: dhcpHost dhcpHWAddress: ethernet 00:00:4C:71:46:68 dhcpStatements: fixed-address 192.168.1.5
* Nous avons maintenant besoin que notre serveur OpenLDAP, prennent en compte les nouveaux attributs correspondant au DHCP ( extension du schema ), mais également de mettre en place notre ACL sur la branche ou=DHCP, et ajouter de nouveaux index correspondant a nos attributs DHCP
Pour cela procéder comme suit :
Il faut copier le fichier dhcp.schema dans le repertoire "OpenLDAP" contenant deja tous les schemas
cp dhcp-ldap-3.0pl1/contrib/dhcp.schema $OPENLDAPBIN/etc/openldap/schema/
Extension du schema de l'annuaire :
Editer le fichier $OPENLDAPBIN/etc/openldap/slapd.conf, pour y ajouter ceci :
- Les differents class d'objets et attributs.
include /xenux/bin/OpenLDAP/etc/openldap/schema/core.schema include /xenux/bin/OpenLDAP/etc/openldap/schema/cosine.schema include /xenux/bin/OpenLDAP/etc/openldap/schema/inetorgperson.schema include /xenux/bin/OpenLDAP/etc/openldap/schema/nis.schema include /xenux/bin/OpenLDAP/etc/openldap/schema/dhcp.schema
- Les fichier pid et args.
pidfile /var/run/slapd.pid argsfile /var/run/slapd.args
- ldbm database definitions
- Definition de la structure du schema.
database ldbm
suffix "o=xenux,dc=net" rootdn "cn=manager,ou=ressources,o=xenux,dc=net"
- Le mot de passe obtenu avec slappasswd.
rootpw {SSHA}N4G7BbBFYfNZSiaBaEkWb7oV6cLReROZ # toto en crypté
- Ou sera stocke l'annuaire
directory /xenux/Annuaire/
- Creation des index
index cn,sn pres,eq,approx,sub index uid,mail index objectClass eq index dhcpHWAddress eq index dhcpClassData eq
- Les droits
defaultaccess read # { none | compare | search | read | write }
- L'administrateur a tous les droits.
access to *
by dn="cn=manager,ou=ressources,o=xenux,dc=net" write
by * read
- Seul l'utilisateur peut changer son mot de passe et l'administrateur biensur.
access to attribute=userPassword
by dn="cn=manager,ou=ressources,o=xenux,dc=net" write
by anonymous auth
by self write
by * none
- Seul l'administrateur et l'utilisateur dhcpmanager peuvent modifier les elements de la branche ou=DHCP
access to dn="ou=DHCP,ou=ressources,o=xenux,dc=net"
by dn="cn=manager,ou=ressources,o=xenux,dc=net" write by dn="cn=dhcpmanager,ou=ressources,o=xenux,dc=net" write by * read

