Contexte

# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 6.0.1 (squeeze)
Release:        6.0.1
Codename:       squeeze
# slapd -V
@(#) $OpenLDAP: slapd 2.4.23 (Nov 22 2010 23:39:34) $

LDAP

Dans les dernières versions de OpenLDAP les configurations sont stockées dans le répertoire /etc/ldap/slapd.d. Pour revenir au fichier slapd.conf on supprime le répertoire slapd.d et on récupère le fichier slapd.conf:

$ dpkg -L slapd | grep slapd.conf
/usr/share/slapd/slapd.conf
/usr/share/man/man5/slapd-config.5.gz
/usr/share/man/man5/slapd.conf.5.gz
/usr/share/doc/slapd/examples/slapd.conf

Editer le contenu de l'annuaire, plusieurs alternatives:

$ ldapvi -D "cn=admin,dc=projet,dc=irs" -w 'lePassword' -b "dc=par,dc=ici"
$ ldapadd -x -D "cn=admin,dc=par,dc=ici" -w 'lePassword' -f ./fichier.ldif -c
$ shelldap --server localhost --binddn "cn=admin,dc=par,dc=ici" --basedn "dc=par,dc=ici"

NSS

Paquets (côté client)

paquets nécessaires: nscd, libnss-ldap(d)

Fichiers de configuration

# egrep -v '(^#|^$)' /etc/libnss-ldap.conf
base dc=par,dc=ici
uri ldap://notreAnnuaire
ldap_version 3
rootbinddn cn=admin,dc=par,dc=ici

Une seule et unique ligne dans ce fichier, le mot de passe (en clair :\ ) du compte déclaré dans le fichier précédent.

# grep ldap /etc/nsswitch.conf 
passwd:         compat ldap
group:          compat ldap 
shadow:         compat ldap

Test

L'utilisateur gbaldi est un compte utilisateur défini dans l'annuaire LDAP, pour tester la que configuration de NSS est correcte on peut chercher cet utilisateur via la commande getent:

# getent passwd gbaldi
gbaldi:*:3004:1100:Gary Baldi:/home/gbaldi:/bin/sh

Ok, c'est n'est pas la partie la plus compliquée mais NSS fonctionne. Nous y reviendrons pour la configuration du cache.

PAM

Paquets (côté client)

paquets nécessaires: libpam-ldap

Fichiers de configuration

# egrep -v '(^#|^$)' /etc/pam_ldap.conf
base dc=par,dc=ici
uri ldap://notreAnnuaire
ldap_version 3
rootbinddn cn=admin,dc=par,dc=ici
pam_password crypt

Idem que pour /etc/libnss-ldap.secret, mot de passe (toujours en clair) du compte défini dans /etc/pam_ldap.conf.

account         sufficient      pam_ldap.so
account         required        pam_unix.so

auth    sufficient      pam_ldap.so
auth    required        pam_unix.so nullok_secure use_first_pass

password        sufficient      pam_ldap.so
password        required        pam_unix.so nullok obscure min=4 max=8 md5

session required        pam_unix.so 
session required        pam_mkhomedir.so skel=/etc/skel
session optional        pam_ldap.so

required

doit réussir mais les autres modules sont quand même testés.

requisite

doit réussir et les autres modules ne sont pas testés.

optional

l'échec ou la réussite de ce module n'a d'importance que si c'est le seul module défini.

sufficient

si le test est correct on obtient une acceptation immédiate.

NFS

Serveur

Simple

/partage/direction      *(sync,rw,no_subtree_check,no_root_squash)
/partage/juridique      *(sync,rw,no_subtree_check,no_root_squash)
/partage/compta         *(sync,rw,no_subtree_check,no_root_squash)

sync

...

rw

...

no_subtree_check

...

no_root_squash

...

Couplé avec LDAP

Aucune modification à faire côté serveur en ce qui concerne le NFS, seulement ajout du schéma autofs dans le fichier slapd.conf

include         /etc/ldap/schema/autofs.schema

Client

Simple

# aptitude install autofs nfs-common

/media/IRS     /etc/auto.test     --timeout=120     --ghost

compta        -no_root_squash,rw     notreServeur:/partage/compta        ://IRS/compta
direction     -no_root_squash,rw     notreServeur:/partage/direction     ://IRS/direction
juridique     -no_root_squash,rw     notreServeur:/partage/juridique     ://IRS/juridique

Couplé avec LDAP

# aptitude install autofs-ldap

MASTER_MAP_NAME="ou=auto.master,ou=automount,dc=par,dc=ici"
TIMEOUT=300
BROWSE_MODE="yes"
LOGGING="verbose"
LDAP_URI="ldap://notreAnnuaire"
SEARCH_BASE="ou=automount,dc=par,dc=ici"
MAP_OBJECT_CLASS="automountMap"
ENTRY_OBJECT_CLASS="automount"
MAP_ATTRIBUTE="ou"
ENTRY_ATTRIBUTE="cn"
VALUE_ATTRIBUTE="automountInformation"
USE_MISC_DEVICE="yes"

automount:     ldap

Visualiser, depuis un client, les répertoires partagés disponibles:

showmount -e notreServeur

DHCP

Serveur DHCP

Paquet à installer:

isc-dhcp-server-ldap - serveur DHCP capable d'utiliser LDAP comme source

/etc/dhcp3/dhcpd.conf:

ldap-server "notreAnnuaire";
ldap-port 389;
ldap-username "cn=admin,dc=par,dc=ici";
ldap-password "notrePassword";
ldap-base-dn "ou=dhcp,dc=par,dc=ici";
ldap-method dynamic;
ldap-debug-file "/var/log/ldap-startup.log" ;

Annuaire

On récupère le fichier dhcp.schema que l'on stocke dans le répertoire /etc/ldap/schema.

# dpkg -L isc-dhcp-server-ldap|grep -i schema
/usr/share/doc/isc-dhcp-server-ldap/dhcp.schema.gz
# zless /usr/share/doc/isc-dhcp-server-ldap/dhcp.schema.gz > /etc/ldap/schema/dhcp.schema

On modifie le slapd.conf en conséquence:

include         /etc/ldap/schema/dhcp.schema

Fichier LDIF minimal:

#OU consacrée au DHCP
dn: ou=dhcp,dc=par,dc=ici
objectClass: organizationalUnit
objectClass: top
ou: dhcp

# entrée représentant notre serveur (remarque : cn=xxx où xxx = hostname).
dn: cn=srvDhcp,ou=dhcp,dc=par,dc=ici
objectClass: top
objectClass: dhcpServer
cn: srvDhcp
dhcpServiceDN: cn=DhcpConfig,ou=dhcp,dc=par,dc=ici

# éléments de configurations
dn: cn=DhcpConfig,ou=dhcp,dc=par,dc=ici
cn: DhcpConfig
objectClass: top
objectClass: dhcpService
objectClass: dhcpOptions
dhcpStatements: ddns-update-style ad-hoc
dhcpStatements: default-lease-time 86400
dhcpStatements: max-lease-time 604800
dhcpOption: domain-name "par.ici"
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
dhcpPrimaryDN: cn=srvDhcp,ou=dhcp,dc=par,dc=ici

# réseau sur lequel on agit
dn: cn=192.168.1.0,cn=DhcpConfig,ou=dhcp,dc=par,dc=ici
cn: 192.168.1.0
objectClass: top
objectClass: dhcpSubnet
objectClass: dhcpOptions
dhcpNetMask: 24
dhcpRange: 192.168.1.200 192.168.1.253
dhcpOption: broadcast-address 192.168.1.255

VPN

Paquets à installer

openvpn
network-manager-openvpn-gnome

cp /usr/share/app-install/desktop/nm-applet.desktop /usr/share/gdm/autostart/LoginWindow