LDAP ( Lightweight Directory Access Protocol ) est un protocole qui permet d’accéder à des bases d’informations sur les utilisateurs d’un réseau par l’intermédiaire de protocoles TCP/IP.
Dans ce guide nous allons voir comment configurer OpenLDAP sur CentOS 8, Je suppose que vous avez OpenLDAP installé et opérationnel, si ce n’est pas déja le cas référez vous cet article.
Autoriser openldap au niveau du firewall :
[root@server]# firewall-cmd --add-service={ldap,ldaps} --permanent success [root@server]# firewall-cmd --reload success
Configuration de la base de donnés de OpenLDAP :
Avant d’ajouter les entrés LDAP il faut créer la base MDB. Créez votre base de données avec le fichier LDIF ci-dessous et remplacez ce qui est en gras avec ce qui correspond avec vore site.
pour le HASH, vous générer le votre avec la commande slappasswd en mettant un mot de passe de votre choix :
[root@server]# vim database.ldif
dn: olcDatabase=mdb,cn=config objectClass: olcDatabaseConfig objectClass: olcMdbConfig olcDatabase: mdb olcDbMaxSize: 42949672960 olcDbDirectory: /var/lib/openldap olcSuffix: dc=monsite,dc=com olcRootDN: cn=admin,dc=monsite,dc=com olcRootPW: {SSHA}Y5MqOlBBkMHlDEBbr/CYecNZH2zXFG6f olcDbIndex: uid pres,eq olcDbIndex: cn,sn pres,eq,approx,sub olcDbIndex: mail pres,eq,sub olcDbIndex: objectClass pres,eq olcDbIndex: loginShell pres,eq olcDbIndex: sudoUser,sudoHost pres,eq olcAccess: to attrs=userPassword,shadowLastChange,shadowExpire by self write by anonymous auth by dn.subtree="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage by dn.subtree="ou=system,dc=monsite,dc=com" read by * none olcAccess: to dn.subtree="ou=system,dc=monsite,dc=com" by dn.subtree="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage by * none olcAccess: to dn.subtree="dc=monsite,dc=com" by dn.subtree="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage by users read by * none
Mettez à jour la base avec la commande ci-dessous, n’oubliez pas de préciser le nom de votre fichier :
[root@server]# ldapadd -Y EXTERNAL -H ldapi:/// -f database.ldif SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 adding new entry "olcDatabase=mdb,cn=config"
Définire la structure d’organisation :
Créez un fichier ldif ( basedn.ldif dans mon cas ) pour définire la structure d’organisation, n’oubliez pas de mettre vos propre infos :
dn: dc=monsite,dc=com objectClass: dcObject objectClass: organization objectClass: top o: monsite dc: monsite dn: ou=groups,dc=monsite,dc=com objectClass: organizationalUnit objectClass: top ou: groups dn: ou=people,dc=monsite,dc=com objectClass: organizationalUnit objectClass: top ou: people dn: ou=system,dc=monsite,dc=com objectClass: organizationalUnit objectClass: top ou: system
Mettez à jour ensuite la base avec la commande suivante :
[root@server]# ldapadd -Y EXTERNAL -H ldapi:/// -f basedn.ldif SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 adding new entry "dc=monsite,dc=com" adding new entry "ou=groups,dc=monsite,dc=com" adding new entry "ou=people,dc=monsite,dc=com" adding new entry "ou=system,dc=monsite,dc=com"
Céez ensuite un utilisateur système qui va qui sera utilisé pour effectuer des opérations telles que la résolution des ID utilisateur et groupe.
Créer le fichier ldif suivant (n’oubliez pas de mettre le HASH de votre mot de passe généré avec la commande slappasswd:
[root@server]# cat sysuser.ldif dn: cn=sysuser,ou=system,dc=monsite,dc=com objectClass: organizationalRole objectClass: simpleSecurityObject cn: sysuser userPassword: {SSHA}VVa86w3PU9J2lFLsyRoHkO1FoC7aEmnf description: resolve UIDs/GIDs
Mettre à jour la base LDAP :
[root@server openldap]# ldapadd -Y EXTERNAL -H ldapi:/// -f sysuser.ldif SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 adding new entry "cn=sysuser,ou=system,dc=monsite,dc=com"
Création d’utilisateur et groupe :
Nous allons maintenant crée un utilisateur et un groupe ( dev1/Groupuser dans mon cas) appartenant aux unités d’organisation créés précedement :
dn: cn=dev,ou=groups,dc=monsite,dc=com objectClass: posixGroup cn: Groupuser gidNumber: 4500 memberUid: user1 dn: uid=user1,ou=people,dc=monsite,dc=com objectClass: posixAccount objectClass: shadowAccount objectClass: inetOrgPerson cn: Prénom sn: Nom uid: user1 uidNumber: 4500 gidNumber: 4500 homeDirectory: /home/user1 loginShell: /bin/bash gecos: Nom complet
[root@server]# ldapadd -Y EXTERNAL -H ldapi:/// -f user1.ldif SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 adding new entry "cn=dev,ou=groups,dc=monsite,dc=com" adding new entry "uid=user1,ou=people,dc=monsite,dc=com"
Accorder un mot passe à votre utilisateur :
[root@server]# ldappasswd -Y EXTERNAL -H ldapi:/// -S "uid=user1,ou=people,dc=monsite,dc=com" New password: Re-enter new password: SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0
Enfin pour s’assurer que tout fonctionnelent correctement, taper la commande suivante pour voir les infos de votre utilisateur s’affiche :
[root@server]# ldapsearch -x -W -H ldapi:/// -D "uid=user1,ou=people,dc=monsite,dc=com" -b "ou=people,dc=monsite,dc=com" Enter LDAP Password: extended LDIF # LDAPv3 base with scope subtree filter: (objectclass=*) requesting: ALL # people, monsite.com dn: ou=people,dc=monsite,dc=com objectClass: organizationalUnit objectClass: top ou: people user1, people, monsite.com dn: uid=user1,ou=people,dc=monsite,dc=com objectClass: posixAccount objectClass: shadowAccount objectClass: inetOrgPerson cn:: UHLDqW5vbQ== sn: Nom uid: user1 uidNumber: 4500 gidNumber: 4500 homeDirectory: /home/user1 loginShell: /bin/bash gecos: Nom complet userPassword:: e1NTSEF9VEhmZHpqdkNWSG5kcjU4ZWF6aUpUV0RWNCtTblNSL0s= search result search: 2 result: 0 Success numResponses: 3 numEntries: 2
nmap : les 12 commandes que vous devez connaître
Le fonctionnement du routeur
Le montage sous linux
Netstat : Les 14 commandes les plus utilisées
Fail2Ban : How to protect Linux services