DOCUMENTATION à l'arrache


Note: apparemment d'après http://wiki.debian.org/OpenLDAPSetup, il faut eviter d'installer 
nscd, pareil dans la doc de Bind, car nscd parasite les résolutions de noms (apparemment). 

installation:

apt-get install slapd ldap-utils db4.2-util

verseau:~# ls /etc/ldap/
schema  slapd.conf

le fichier de configuration est ici slapd.conf

à cet instant une connexion à partir d'un poste client, via "LDAP browser" est possible:

  

  

pour avoir une sortie syslog assez verbeuse

nous renseignons la ligne suivante dans slapd.conf comme cela:

loglevel 264

et nous redemarrons par /etc/init.d/slapd restart

nous rajoutons aussi la ligne suivante dans /etc/syslog.conf:

local4.debug /var/log/slapd.log
et redemarons syslog.

exemple de log:

Mar 26 18:23:50 verseau slapd[13020]: slapd starting
Mar 26 18:23:50 verseau slapd[13020]: daemon: added 6r
Mar 26 18:23:50 verseau slapd[13020]: daemon: added 7r
Mar 26 18:23:50 verseau slapd[13020]: daemon: select: listen=6 active_threads=0 tvp=NULL
Mar 26 18:23:50 verseau slapd[13020]: daemon: select: listen=7 active_threads=0 tvp=NULL
Mar 26 18:24:06 verseau slapd[13020]: daemon: activity on 1 descriptors
Mar 26 18:24:06 verseau slapd[13020]: daemon: new connection on 10
Mar 26 18:24:06 verseau slapd[13020]: conn=0 fd=10 ACCEPT from IP=192.168.0.5:1249 (IP=0.0.0.0:389)
Mar 26 18:24:06 verseau slapd[13020]: daemon: added 10r
Mar 26 18:24:06 verseau slapd[13020]: daemon: activity on:


définir le rootdn n''est apparemment pas une obligation 
maintenant je défini le rootdn (c'est le compte du super administrateur)
donc dans le fichier slapd.conf

je rajoute les ligne suivantes:

rootdn  "cn=admin,dc=athena,dc=home"
rootpw  {SSHA}0t9Tz0iJde/o+x4vGiPXhqpiT5D779aJ

le mot de passe à été généré avec la commande slappasswd 

REMARQUE: le rootdn à "apparement" été défini lors de  l'installation de slapd, mais je ne vois aucune
mention du rootdn et de son mot de passe .

en redémarrant slapd j'ai le message suivant: BDB recovery
 et je ne sait pas pourquoi.

peuplons l'annuaire:

apt-get install migrationtools

~# cd /usr/share/migrationtools

~# LDAPADD="/usr/bin/ldapadd -c" ETC_ALIASE=/dev/null ./migrate_all_online.sh

la migration des comptes unix vers LDAP est faite.




sur nsswitch.conf

passwd:         compat ldap
group:          compat ldap
shadow:         compat ldap

hosts:          files dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

sur libnss-ldap.conf

modification du fichier:

host 127.0.0.1
base dc=athena,dc=home


binddn cn=admin,dc=athena,dc=home
bindpw  mon password

nss_base_passwd ou=People,dc=athena,dc=home?one
nss_base_shadow ou=People,dc=athena,dc=home?one
nss_base_group  ou=Group,dc=athena,dc=home?one

ATTENTION: il mettre le mot de passe en clair et non en crypté
il y a peut être moyen de le crypter mais je ne sais pas encore comment,
cela doit expliquer la présence du fichier ldap.secret qui est en 600 :-))
dans le doute je maintient un mot de passe dans libnss-ldap.conf pour les tests


il faut veiller à ce que la communication s' établisse bien entre les clients et slapd
l'authentification local doit utiliser l'adresse 127.0.0.1

chez moi en intranet un netstat -natp | grep 389 donne:

tcp        0      0 0.0.0.0:389             0.0.0.0:*               LISTEN     14254/slapd
tcp        0      0 127.0.0.1:43609         127.0.0.1:389           ESTABLISHED16259/-bash
tcp        0      0 192.168.0.3:389         192.168.0.5:1092        ESTABLISHED14254/slapd
tcp        0      0 127.0.0.1:389           127.0.0.1:43609         ESTABLISHED14254/slapd
tcp6       0      0 :::389                  :::*                    LISTEN     14254/slapd

donc pas de pb !

apt-get install libpam-ldap
dans /etc/pam_ldap.conf


host 127.0.0.1
base dc=athena,dc=home
rootbinddn cn=admin,dc=athena,dc=home
nss_base_passwd	ou=People,dc=athena,dc=home?one
nss_base_shadow	ou=People,dc=athena,dc=home?one
nss_base_group		ou=Group,dc=athena,dc=home?one

authentification ssh et ftp:
dans /etc/pam.d/

dans common-account:

account sufficient      pam_ldap.so
account required        pam_unix.so

dans common-auth:

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

dans common-password:

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

j'ai renseigné paramétrage de base de postfix pour ldap
avec les lignes suivantes


ldap_server = localhost
ldap_search_base = ou=People,dc=athena,dc=home


la compatibilité avec sasl est assuré
dans le fichier /etc/default/sasl, par la ligne 

MECHANISMS="pam"


 ANNEXE

peuplement 

création de l'OU personnes (tiré du bouquin LDAP d'Oreilly)

renseigner les lignes suivantes dans un fichier:
 
dn: ou=personnes,dc=athena,dc=home
ou:  personnes
objectClass: organizationalUnit

inserer le fichier dans l'annuaire:

/etc/init.d/slapd stop

(avec ldapmodify, il y a moyen de modifier a chaud l'annuaire)

verseau:/tmp# slapadd -v -l personnes.ldif
added: "ou=personnes,dc=athena,dc=home" (00000003)

vérifions:

verseau:/tmp# ldapsearch -x -b "dc=athena,dc=home" "(objectClass=*)"
# extended LDIF
#
# LDAPv3
# base  with scope sub
# filter: (objectClass=*)
# requesting: ALL
#

# athena.home
dn: dc=athena,dc=home
objectClass: top
objectClass: dcObject
objectClass: organization
o: athena.home
dc: athena

# admin, athena.home
dn: cn=admin,dc=athena,dc=home
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator

# personnes, athena.home
dn: ou=personnes,dc=athena,dc=home
ou: personnes
objectClass: organizationalUnit

# search result
search: 2
result: 0 Success

# numResponses: 4
# numEntries: 3

toujour sur le meme principe je me rajoute dans l'OU personnes:

less /tmp/antonio.ldif

dn: cn=Antonio E. Moscato,ou=personnes,dc=athena,dc=home
cn: Antonio E. Moscato
sn: Moscato
mail: antonio@architux.com
mail: antonio@no-log.org
labeledURI: http://www.architux.com/
roomNumber: archituxland
departmentNumber: administration
telephoneNumber: 06 20 56 07 90
mobile: 06 20 56 07 90
objectclass: inetOrgPerson

puis 
verseau:/tmp# slapadd -v -l antonio.ldif
added: "cn=Antonio E. Moscato,ou=personnes,dc=athena,dc=home" (00000004)

et restart de slapd