LDAP et carnet d'adresses mail I)Installation Open-LDAP v1 (Conf dans l'annuaire LDAP, cn=config) apt-get install slapd ldap-utils 1)Suppression de la base par défaut rm /etc/ldap/slapd.d/cn\=config/olcdatabase={1}hdb.ldif rm /var/lib/ldap/* /etc/init.d/slapd restart 2)Ajout des schémas ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif 3)Crypter mdp superutilisateur et utilisateur slappasswd -h {SSHA} 4)Template LDAP mkdir /cheminrepertoiretemplates_ldiff/ 5)Dossier de l'annuaire LDAP mkdir /cheminrepertoirestockageannuaireldap /nomannuaireldap/ chown -R openldap:openldap /cheminrepertoirestockageannuaireldap/nomannuaireldap/ 6)Insertion de votre chemin base LDAP et de log nano /etc/apparmor.d/usr.sbin.slapd /cheminrepertoirestockageannuaireldap/nomannuaireldap/ r, /cheminrepertoirestockageannuaireldap/nomannuaireldap/** rwk, /cheminrepertoirelog/ r, /cheminrepertoirelog/** rwk, service apparmor restart 7)SSL/TLS Installation openssl : apt-get install gnutls-bin mkdir /etc/ldap/ssl/ Créer une clé privée : certtool --generate-privkey --outfile /etc/ldap/ssl/ldap-ca-key.pem Créer un certificat autosigné : certtool --generate-self-signed --load-privkey /etc/ldap/ssl/ldap-cakey.pem --outfile /etc/ldap/ssl/ldap-ca-cert.crt Common name: domaine.ext The certificate will expire in (days): 3650 1
Path length constraint (decimal, -1 for no constraint): -1 Enter the dnsname of the subject of the certificate:domaine.ext Does the certificate belong to an authority? (y/n): n Is this a TLS web client certificate? (y/n): y Is this also a TLS web server certificate? (y/n): y Enter the dnsname of the subject of the certificate:ldapmobois.mob Will the certificate be used to sign other certificates? (y/n): y Will the certificate be used for signing (DHE and RSA-EXPORT ciphersuites)? (y/n): n Will the certificate be used for encryption (RSA ciphersuites)? (y/n): y Will the certificate be used to sign other certificates? (y/n): y Will the certificate be used to sign CRLs? (y/n): y Will the certificate be used to sign code? (y/n): y Will the certificate be used to sign OCSP requests? (y/n): y Will the certificate be used for time stamping? (y/n): y Is the above information ok? (Y/N): y adduser openldap ssl-cert chown openldap:ssl-cert /etc/ldap/ssl/ldap-ca-key.pem nano /etc/default/slapd SLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///" nano /etc/ldap/ldap.conf TLS_REQCERT never /etc/init.d/slapd restart 8)Création du fichier de conf général nano /cheminrepertoiretemplates_ldiff/configglobal.ldiff #Modifie le niveau de logs dn:cn=config changetype:modify replace:olcloglevel olcloglevel:stats #olcloglevel:any #mod débug #Modifie le chemin des logs 2
dn:cn=config changetype:modify replace:olclogfile olclogfile:/cheminrepertoirelog/openldap.log #Modifie le timeout dn:cn=config replace:olcidletimeout olcidletimeout:30 #Authorisé bind_v2 dn:cn=config replace:olcallows olcallows:bind_v2 #LDAP SSL/TLS dn: cn=config replace:olctlsciphersuite dn: cn=config replace:olctlsciphersuite olctlsciphersuite:normal dn: cn=config replace:olctlscrlcheck olctlscrlcheck:none dn: cn=config replace:olctlsverifyclient dn: cn=config 3
replace:olctlscertificatekeyfile olctlscertificatekeyfile:/etc/ldap/ssl/ldap-ca-cert.pem dn: cn=config replace:olctlscacertificatefile olctlscacertificatefile:/etc/ldap/ssl/ldap-ca-key.pem Test du certificat : ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b cn=config grep Certificate 9)Création du fichier de conf des modules nano /cheminrepertoiretemplates_ldiff/configmodule.ldiff # Load dynamic backend modules dn:cn=module,cn=config objectclass:olcmodulelist cn:module olcmodulepath:/usr/lib/ldap olcmoduleload:back_hdb.la 10)Création du fichier de conf des schema nano /cheminrepertoiretemplates_ldiff/configschema.ldiff #Load Schema dn: cn=schema,cn=config objectclass: olcschemaconfig cn: schema #Load Thunderbird Schema si besoin carnet d'adresse LDAP dn: cn=thunderbird,cn=schema,cn=config objectclass: olcschemaconfig cn: Thunderbird olcattributetypes: ( 1.3.6.1.4.1.13769.2.1.1 NAME ( 'xmozillanickname' 'mozillanickname' ) SUP name ) olcattributetypes: ( 1.3.6.1.4.1.13769.2.1.2 NAME ( 'xmozillausehtmlmail' 'mozillausehtmlmail' ) 4
SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE ) olcattributetypes: ( 1.3.6.1.4.1.13769.2.1.3 NAME 'mozillasecondemail' EQUALITY caseignoreia5match SUBSTR caseignoreia5substringsmatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) olcattributetypes: ( 1.3.6.1.4.1.13769.2.1.4 NAME 'mozillahomelocalityname' EQUALITY caseignorematch SUBSTR caseignoresubstringsmatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} ) olcattributetypes: ( 1.3.6.1.4.1.13769.2.1.5 NAME 'mozillapostaladdress2' EQUALITY caseignorelistmatch SUBSTR caseignorelistsubstringsmatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 ) olcattributetypes: ( 1.3.6.1.4.1.13769.2.1.6 NAME 'mozillahomepostaladdress2' EQUALITY caseignorelistmatch SUBSTR caseignorelistsubstringsmatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 ) olcattributetypes: ( 1.3.6.1.4.1.13769.2.1.7 NAME ( 'mozillahomestate' ) SUP name ) olcattributetypes: ( 1.3.6.1.4.1.13769.2.1.8 NAME 'mozillahomepostalcode' EQUALITY caseignorematch SUBSTR caseignoresubstringsmatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{40} ) olcattributetypes: ( 1.3.6.1.4.1.13769.2.1.9 5
NAME ( 'mozillahomecountryname' ) SUP name SINGLE-VALUE ) olcattributetypes: ( 1.3.6.1.4.1.13769.2.1.10 NAME ( 'mozillahomefriendlycountryname' ) EQUALITY caseignorematch SUBSTR caseignoresubstringsmatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) olcattributetypes: ( 1.3.6.1.4.1.13769.2.1.11 NAME ( 'homeurl' 'mozillahomeurl' ) EQUALITY caseignoreia5match SUBSTR caseignoreia5substringsmatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) olcattributetypes: ( 1.3.6.1.4.1.13769.2.1.12 NAME ( 'workurl' 'mozillaworkurl' ) EQUALITY caseignoreia5match SUBSTR caseignoreia5substringsmatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) olcattributetypes: ( 1.3.6.1.4.1.13769.2.1.13 NAME ( 'nsaimid' ) DESC 'AOL Instant Messenger (AIM) Identity' EQUALITY telephonenumbermatch SUBSTR telephonenumbersubstringsmatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.50 ) olcattributetypes: ( 1.3.6.1.4.1.13769.2.1.96 NAME ( 'custom1' 'mozillacustom1' ) SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) olcattributetypes: ( 1.3.6.1.4.1.13769.2.1.97 NAME ( 'custom2' 'mozillacustom2' ) SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) 6
olcattributetypes: ( 1.3.6.1.4.1.13769.2.1.98 NAME ( 'custom3' 'mozillacustom3' ) SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) olcattributetypes: ( 1.3.6.1.4.1.13769.2.1.99 NAME ( 'custom4' 'mozillacustom4' ) SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) olcobjectclasses: ( 1.3.6.1.4.1.13769.2.2.1 NAME 'mozillaabpersonobsolete' SUP inetorgperson STRUCTURAL MAY ( mozillanickname $ mozillausehtmlmail $ mozillasecondemail $ mozillapostaladdress2 $ mozillahomepostaladdress2 $ mozillahomelocalityname $ mozillahomestate $ mozillahomepostalcode $ mozillahomecountryname $ mozillahomefriendlycountryname $ mozillahomeurl $ mozillaworkurl $ mozillacustom1 $ mozillacustom2 $ mozillacustom3 $ mozillacustom4 $ nsaimid $ c $ co ) ) 7
11)Création du fichier de conf de l'annuaire LDAP nano /cheminrepertoiretemplates_ldiff/nomconfigannuaireldap.ldiff # Create the database dn: olcdatabase=hdb,cn=config #>>Type de l'objet courant faisant partie des classes suivantes objectclass: olcdatabaseconfig objectclass: olchdbconfig #>>Type de base olcdatabase: {1}hdb #>>DCs de la base ldap olcsuffix: dc=nomannuaireldap,dc= ExtensionAnnuaireLDAP #Dossier de stockage de la base ldap olcdbdirectory: /cheminrepertoirestockageannuaireldap/nomannuaireldap/ #Definition du compte Manager interne olcrootdn: cn=admin,dc=nomannuaireldap,dc= ExtensionAnnuaireLDAP #Definition du mot de passe associe au compte Manager olcrootpw: {SSHA}XXXXXXXXXXXXX #>>Nombre de resultat affiche lors d'une recherche olcdbconfig: set_cachesize 0 2097152 0 olcdbconfig: set_lk_max_objects 1500 olcdbconfig: set_lk_max_locks 1500 olcdbconfig: set_lk_max_lockers 1500 #>>Gestion des Index olcdbindex: objectclass eq olclastmod: TRUE olcdbcheckpoint: 512 30 #>>ACL (droits d'accès) sur la base LDAP #ACL1, modification de mots de passes olcaccess: to attrs=userpassword by dn="cn=admin,dc=nomannuaireldap,dc=extensionannuaireldap" write by anonymous auth by self write by users read by * none olcaccess: to attrs=shadowlastchange by dn="cn=admin,dc=nomannuaireldap,dc=extensionannuaireldap" write by users read by self write by * none olcaccess: to dn.base="" by dn="cn=admin,dc=nomannuaireldap,dc=extensionannuaireldap" write by users read by self write by * none 8
olcaccess: to * by dn="cn=admin,dc=nomannuaireldap,dc=extensionannuaireldap" write by users read by self write by * none 12)Création de fichier de conf d'une OU et d'un objet CN (exemple pour carnet d'adresse) nano /cheminrepertoiretemplates_ldiff/nomou-objects.ldiff #>>Racine de la base ldap dn: dc=nomannuaireldap,dc=extensionannuaireldap objectclass: dcobject objectclass: organization o: nomannuaireldap.extensionannuaireldap dc: nomannuaireldap description: ldap nomannuaireldap #Admin user dn: cn=admin, dc=nomannuaireldap,dc=extensionannuaireldap objectclass: simplesecurityobject objectclass: organizationalrole cn: admin description: LDAP admin userpassword: {SSHA}XXXXXXXXXXXXX //A remplacer avec le bon hash #>>OU d'un carnet d'adresse dn:ou=addressbook,dc=nomannuaireldap,dc=extensionannuaireldap objectclass:organizationalunit ou: addressbook #Donnée d'un carnet d'adresse dn:uid=prenom.nom,ou=addressbook,dc=nomannuaireldap,dc=extensionannuaireldap objectclass: top objectclass: person objectclass: organizationalperson objectclass: inetorgperson #Si Schéma Thunderbird fonctionnel objectclass: mozillaabpersonobsolete #Fin si cn: prenom nom uid: prenom.nom description: Commentaires facsimiletelephonenumber: FAX displayname: Prenom Nom givenname: Prenom 9
homephone: Telephone personel homepostaladdress: Adresse personnelle mobile: Telephone GSM pager: Numero de pager sn: Nom telephonenumber: Telephone professionel o: Societe ou: Travail - Departement postofficebox: Adresse professionnelle l: Travail - Ville st: Travail - Etat c: Travail - Pays title: Travail Titre mail: prenom.nom@email.com postalcode: Travail CP #Si Schéma Thunderbird fonctionnel xmozillanickname: Pseudonyme nsaimid: Identifiant AIM mozillasecondemail: Autre adresse mail mozillahomelocalityname: Ville mozillahomecountryname: Pays homeurl: Page web perso mozillahomepostalcode: CP mozillahomestate: Etat workurl: Travail - Site web custom1: Personnalise 1 custom2: Personnalise 2 custom3: Personnalise 3 custom4: Personnalise 4 mozillahomepostaladdress2: Adresse personnelle suite mozillapostaladdress2: Adresse professionnelle suite #Fin si #OU Utilisateur dn: ou=users,dc=nomannuaireldap,dc=extensionannuaireldap objectclass: organizationalunit ou: users 10
#Objet Utilisateur #User IN dn: uid=nomuser,ou=users,dc=nomannuaireldap,dc=extensionannuaireldap objectclass: shadowaccount objectclass: inetorgperson cn: nomuser uid: nomuser sn: nomuser userpassword: {SSHA}XXXXXXXXXXXXX //A remplacer avec le bon hash 13)Création des ACL pour l'utilisateur //Par exemple, si le repertoire contient des entrées nommées : 0: o=suffix 1: cn=manager,o=suffix 2: ou=people,o=suffix 3: uid=kdz,ou=people,o=suffix 4: cn=addresses,uid=kdz,ou=people,o=suffix 5: uid=hyc,ou=people,o=suffix Quand : olcaccess: to * by dn.base="ou=people,o=suffix" match 2; olcaccess: to * by dn.one="ou=people,o=suffix" match 3, and 5; olcaccess: to * by dn.subtree="ou=people,o=suffix" match 2, 3, 4, and 5; and olcaccess: to * by dn.children="ou=people,o=suffix" match 3, 4, and 5. Liste de la portée des droits : 11
nano /cheminrepertoiretemplates_ldiff/acls.ldiff #>>Modifier les ACL pour ajouter le nouvel utilisateur #Suppression de la règle jocker * dn: olcdatabase={1}hdb,cn=config delete: olcaccess olcaccess: to * by dn="cn=admin,dc=nomannuaireldap,dc=extensionannuaireldap" write by users read by self write by * none #Ajout de la regle pour le nouvel utilisateur dn: olcdatabase={1}hdb,cn=config add: olcaccess olcaccess: to dn.subtree="ou=nomuser,dc=nomannuaireldap,dc=extensionannuaireldap" by dn="ou=addressbook,dc=nomannuaireldap,dc=extensionannuaireldap" write by * none #Ajout de la règle utilisateur suivi de la règle jocker * à la fin dn: olcdatabase={1}hdb,cn=config add: olcaccess olcaccess: to * by dn="cn=admin,dc=nomannuaireldap,dc=extensionannuaireldap" write by users read by self write by * none 14)Intégration des conf ldapadd -Y EXTERNAL -H ldapi:/// -f /cheminrepertoiretemplates_ldiff/configglobal.ldiff -v ldapadd -Y EXTERNAL -H ldapi:/// -f /cheminrepertoiretemplates_ldiff/configmodule.ldiff -v ldapadd -Y EXTERNAL -H ldapi:/// -f /cheminrepertoiretemplates_ldiff/configschema.ldiff -v ldapadd -Y EXTERNAL -H ldapi:/// -f /cheminrepertoiretemplates_ldiff/nomconfigannuaireldap.ldiff -v ldapadd -x -D cn=admin, dc=nomannuaireldap,dc=extensionannuaireldap -w motdepassadmin -f /cheminrepertoiretemplates_ldiff/nomou-objects.ldiff -v ldapadd -x -D cn=admin, dc=nomannuaireldap,dc=extensionannuaireldap -w motdepassadmin -f /cheminrepertoiretemplates_ldiff/acls.ldiff -v 15)Test de la conf ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b "cn=config" ldapsearch -LLL -Y EXTERNAL -H ldaps:/// -b "cn=config" //Retourne l'ensemble des éléments de configuration ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b "dc=nomannuaireldap,dc=extensionannuaireldap" //Retourne le contenu de l'annuaire LDAP 16)Autre commande a)supprimer un objet ldap ldapdelete -v -D "uid=nomuid,ou=nomou,dc=nomannuaireldap,dc=extensionannuaireldap" 12
b)sauvegarde de l'annuaire slapcat -l fichierdesauvegarde.ldif -b "dc=nomannuaireldap,dc=extensionannuaireldap" b)modifier un objet #Exemple : Objet Utilisateur nano /cheminrepertoiretemplates_ldiff/modifynomou-objects.ldiff dn:uid=nomuser, ou=nomou,dc=nomannuaireldap,dc=extensionannuaireldap replace: mobile mobile:numeromobile ldapmodify -Y EXTERNAL -H ldapi:/// -f /cheminrepertoiretemplates_ldiff/modifynomou- Objects.ldiff II)Installation Open-LDAP v2 (Conf dans Fichier, obsolète) apt-get install slapd ldap-utils 1)Téléchargement du schéma Thunderbird //Schema Thunderbird cd /etc/ldap/schema wget http://www.lestat.st/_media/informatique/docs/ldap_addbook/mozilla_op20.schema.gz gunzip -d mozilla_op20.schema.gz 2)Insertion de votre chemin base LDAP et des logs nano /etc/apparmor.d/usr.sbin.slapd /cheminrepertoirestockageannuaireldap /nomannuaireldap / r, /cheminrepertoirestockageannuaireldap /nomannuaireldap /** rwk, /cheminrepertoirelog/ r, /cheminrepertoirelog/** rwk, service apparmor restart 3)Répertoire des Templates LDAP mkdir /cheminrepertoiretemplates_ldiff/ 4)Dossier de l'annuaire LDAP mkdir /cheminrepertoirestockageannuaireldap/nomannuaireldap/ chown -R openldap:openldap /cheminrepertoirestockageannuaireldap/nomannuaireldap/ 5)Configuration de LDAP nano /usr/share/slapd/slapd.conf 13
# Autoriser les connexion en proto v2 allow bind_v2 include /etc/ldap/schema/mozilla_op20.schema pidfile /var/run/openldap/slapd.pid argsfile /var/run/openldap/slapd.args #Niveau des logs et chemin loglevel 256 logfile /cheminrepertoirelog/openldap.log #Définition de la base database bdb suffix dc=nomannuaireldap,dc=extensionannuaireldap" #Utilisateur Admin rootdn cn=admin,dc=nomannuaireldap,dc=extensionannuaireldap" rootpw motdepasse checkpoint 32 30 #Chemin de la base directory /cheminrepertoirestockageannuaireldap /nomannuaireldap # Definition de indexes index objectclass eq # Modification des ACL access to attrs=userpassword,shadowlastchange by dn="cn=admin,dc=nomannuaireldap,dc=extensionannuaireldap" write by anonymous auth by self write by * none access to * by dn="cn=admin,dc=nomannuaireldap,dc=extensionannuaireldap" write by * read 6)Test du fichier de conf /usr/sbin/slaptest -f /usr/share/slapd/slapd.conf 7)Redémarrage du service /etc/init.d/slapd restart 14