# LDAP



# Création Docker OPENLDAP image OSIXIA / GITHUB avec réplication

[![image.png](https://cavallone.fr/uploads/images/gallery/2024-10/scaled-1680-/SGJQz2AWrUC1D2Ek-image.png)](https://cavallone.fr/uploads/images/gallery/2024-10/SGJQz2AWrUC1D2Ek-image.png)

creation fake Docker sur le serveur : CREATION LDAP TEST SANS REPLICATION POUR TESTER un LDIF.

```bash
LDAP_CID=$(docker run --restart always --name ldap-test --hostname "hostname" --env LDAP_BASE_DN="DC" --env LDAP_ORGANISATION="NOM" --env LDAP_DOMAIN="domaine" --env LDAP_ADMIN_PASSWORD=PASSWORD --env LDAP_TLS=false -v /data2/ldap:/var/lib/ldap -v /data2/slapd.d:/etc/ldap/slapd.d -p 1389:389 --detach osixia/openldap:1.5.0)
```

\########################################################################################################################################

   
creation Vrai Docker sur srv 1 avec replication et sécurité certificat ect.. = c'est une commande entiere a cp

```bash
LDAP_CID=$(docker run --restart always --name ldap --hostname "hostname" --env LDAP_BASE_DN="DC" --env LDAP_ORGANISATION="NOM" --env LDAP_DOMAIN="domaine"  --env LDAP_ADMIN_PASSWORD=PASSWORD  --env LDAP_TLS=true --env LDAP_TLS_VERIFY_CLIENT=never --env LDAP_REPLICATION=true --env LDAP_REPLICATION_HOSTS="#PYTHON2BASH:['ldap://noomduldap','ldap://noomduldap']" --env LDAP_TLS_CRT_FILENAME=cert.crt --env LDAP_TLS_KEY_FILENAME=cert.key --env LDAP_TLS_CA_CRT_FILENAME=ca.crt -v /data/ldap:/var/lib/ldap -v /data/slapd.d:/etc/ldap/slapd.d --volume /etc/pki/openldap/pprod-2:/container/service/slapd/assets/certs -p 389:389 -p 636:636 --detach osixia/openldap:1.5.0)
```

  
   
creation Vrai Docker sur srv 2 avec replication sur le 1 et sécurité certificat ect.. = c'est une commande entiere a cp

```bash
LDAP_CID=$(docker run --restart always --name ldap --hostname "hostname" --env LDAP_BASE_DN="DC" --env LDAP_ORGANISATION="NOM" --env LDAP_DOMAIN="domaine"  --env LDAP_ADMIN_PASSWORD=PASSWORD --env LDAP_TLS=true --env LDAP_TLS_VERIFY_CLIENT=never --env LDAP_REPLICATION=true --env LDAP_REPLICATION_HOSTS="#PYTHON2BASH:['ldap://noomduldap','ldap://noomduldap']" --env LDAP_TLS_CRT_FILENAME=cert.crt  --env LDAP_TLS_KEY_FILENAME=cert.key --env LDAP_TLS_CA_CRT_FILENAME=ca.crt  -v /data/ldap:/var/lib/ldap -v /data/slapd.d:/etc/ldap/slapd.d --volume /etc/pki/openldap/pprod-2:/container/service/slapd/assets/certs -p 389:389 -p 636:636 --detach osixia/openldap:1.5.0)
```

  
Suppresion du docker et des data docker, vite fait et efficace, vous pouvez après recréer le ldap dockeriser avec les commande du dessus :

[![image.png](https://cavallone.fr/uploads/images/gallery/2024-10/scaled-1680-/mdPkFagKXphEl3us-image.png)](https://cavallone.fr/uploads/images/gallery/2024-10/mdPkFagKXphEl3us-image.png)

  
\########################################################################################################################################

Outils en interface sur windows qui aide a rentrer des ldif ou troublehsoot des compte ect …

[![image.png](https://cavallone.fr/uploads/images/gallery/2024-10/scaled-1680-/VaFwoIGzU40oOP22-image.png)](https://cavallone.fr/uploads/images/gallery/2024-10/VaFwoIGzU40oOP22-image.png)

commande test ldap et autres voir si il répond.

<span style="color: rgb(230, 126, 35);">ldapsearch -x -H [ldap://](ldap://noomduldap)<span style="color: rgb(45, 194, 107);">[noomduldap](ldap://noomduldap) </span> -b <span style="color: rgb(45, 194, 107);">dc=,dc=</span> -D <span style="color: rgb(45, 194, 107);">"cn=,dc=,dc="</span> -W</span>  
<span style="color: rgb(230, 126, 35);">ldappasswd -D <span style="color: rgb(45, 194, 107);">"cn=,dc=,dc="</span> -W -S <span style="color: rgb(45, 194, 107);">"uid=mail@domaine.com,ou=,ou=,dc=,dc="</span></span>  
<span style="color: rgb(230, 126, 35);">ldapwhoami -x -D <span style="color: rgb(45, 194, 107);">"uid=mail@domaine.com,ou=,ou=,dc=,dc="</span> -W -v</span>  
<span style="color: rgb(230, 126, 35);">ldapsearch -x -H [ldap://](ldap://noomduldap)<span style="color: rgb(45, 194, 107);">[noomduldap](ldap://noomduldap) </span>-b <span style="color: rgb(45, 194, 107);">dc=,dc=</span> -D <span style="color: rgb(45, 194, 107);">"cn=,dc=,dc=" </span>-W</span>  
<span style="color: rgb(230, 126, 35);">ldapwhoami -x -D <span style="color: rgb(45, 194, 107);">"uid=mail@domaine.com,ou=,ou=,dc=,dc="</span> -W -v</span>  
<span style="color: rgb(230, 126, 35);">ldapwhoami -x -D <span style="color: rgb(45, 194, 107);">"uid=,ou=,ou=,dc=,dc=" </span>-W –v</span>

<span style="color: rgb(230, 126, 35);">grep -5ni 'test.test,' LdapExt-Prod-FINAL.ldif </span> = =<span style="color: rgb(224, 62, 45);"> pour rechercher les user ou erreur dans un contexte chaine de caractère sur du dn ou uid</span>

  
commande test ldap et autres voir si il répond.

[![image.png](https://cavallone.fr/uploads/images/gallery/2024-10/scaled-1680-/5kBwC8Eu9Kk29ipz-image.png)](https://cavallone.fr/uploads/images/gallery/2024-10/5kBwC8Eu9Kk29ipz-image.png)

  
Debug docker logs :

[![image.png](https://cavallone.fr/uploads/images/gallery/2024-10/scaled-1680-/QZYm0qSvy3AWVdbU-image.png)](https://cavallone.fr/uploads/images/gallery/2024-10/QZYm0qSvy3AWVdbU-image.png)

Créer un ldif :

```bash
ldapsearch -x -H ldap://localhost -D "cn=admin,dc=example,dc=com" -w admin_password -b "dc=example,dc=com" "(objectClass=*)" > backup.ldif
```

# Création OpenLdap

Install package openldap, on utilise yum pour éviter les problèmes de dépendances

```bash
yum -y install openldap* migrationtools
```

[![image.png](https://cavallone.fr/uploads/images/gallery/2024-10/scaled-1680-/6pFWBPGhg6aFUvFp-image.png)](https://cavallone.fr/uploads/images/gallery/2024-10/6pFWBPGhg6aFUvFp-image.png)

Une fois installé, créé le Password admin du ldap

```bash
slappaswd
```

[![image.png](https://cavallone.fr/uploads/images/gallery/2024-10/scaled-1680-/nVO3YYlQsGhYUBU2-image.png)](https://cavallone.fr/uploads/images/gallery/2024-10/nVO3YYlQsGhYUBU2-image.png)

Copier le SHA pour l'intégrer plus tard dans le fichier de configuration  
Accéder au dossier config du ldap et modifier le fichier olcDatabase={2}hdb.ldif

[![image.png](https://cavallone.fr/uploads/images/gallery/2024-10/scaled-1680-/mX2nMVNaVkEcs8zC-image.png)](https://cavallone.fr/uploads/images/gallery/2024-10/mX2nMVNaVkEcs8zC-image.png)

Modifier les paramètres "olcSuffix" et "olcRootDN" selon votre domaine et ajouter "olcRootPW"[![image.png](https://cavallone.fr/uploads/images/gallery/2024-10/scaled-1680-/KSv6FAZmVwRVYopm-image.png)](https://cavallone.fr/uploads/images/gallery/2024-10/KSv6FAZmVwRVYopm-image.png)

Ajout des droits de monitor au compte en modifiant le fichier olcDatabase={1}monitor.ldif :[![image.png](https://cavallone.fr/uploads/images/gallery/2024-10/scaled-1680-/sc8SIODnHtPycGMq-image.png)](https://cavallone.fr/uploads/images/gallery/2024-10/sc8SIODnHtPycGMq-image.png)

Modifier les paramètres "olcAccess" de votre domaine et ajouter[![image.png](https://cavallone.fr/uploads/images/gallery/2024-10/scaled-1680-/V3qo37RaCQsIQA22-image.png)](https://cavallone.fr/uploads/images/gallery/2024-10/V3qo37RaCQsIQA22-image.png)

Verifier la configuration avec la commande suivante

```bash
slaptest -u
```

[![image.png](https://cavallone.fr/uploads/images/gallery/2024-10/scaled-1680-/O553EAckWXHMNXoX-image.png)](https://cavallone.fr/uploads/images/gallery/2024-10/O553EAckWXHMNXoX-image.png)

<p class="callout info"><span style="color: rgb(224, 62, 45);">Nous pouvons ignorer les erreurs checksum</span></p>

Démarrer le service, l'ajouter au démarrage automatique et vérifier le démarrage[![image.png](https://cavallone.fr/uploads/images/gallery/2024-10/scaled-1680-/0APwR6uCvu9Tdhcz-image.png)](https://cavallone.fr/uploads/images/gallery/2024-10/0APwR6uCvu9Tdhcz-image.png)  
  
Copier le sample de la base et attribuer les droits :  
[![image.png](https://cavallone.fr/uploads/images/gallery/2024-10/scaled-1680-/GHcbxl0ictEymSfO-image.png)](https://cavallone.fr/uploads/images/gallery/2024-10/GHcbxl0ictEymSfO-image.png)

Créé les schéma pour le ldap :

[![image.png](https://cavallone.fr/uploads/images/gallery/2024-10/scaled-1680-/wqWswXOl5DSi43dl-image.png)](https://cavallone.fr/uploads/images/gallery/2024-10/wqWswXOl5DSi43dl-image.png)

[![image.png](https://cavallone.fr/uploads/images/gallery/2024-10/scaled-1680-/nwKxrIaG7NBysFDE-image.png)](https://cavallone.fr/uploads/images/gallery/2024-10/nwKxrIaG7NBysFDE-image.png)![image.png](https://cavallone.fr/uploads/images/gallery/2024-10/scaled-1680-/YYje1jM5kxVffr7d-image.png)

# Passage ldif, changement des information

<span style="color: rgb(241, 196, 15);">Passage d'un ldif qui parvient d'une autre entité, il faut passer ce script pour retirer les informations du fichier ldif pour ne pas avoir l'erreur <span style="color: rgb(224, 62, 45);">**CONSTRAINTE 61** </span></span>

```bash
#SCRIPT 
#!/bin/bash
echo "inupt file LdapExt-Prod.ldif "cat $1 | grep --binary-files=text -vi structuralObjectClass > tmp1.ldif
cat tmp1.ldif | grep --binary-files=text -vi entryUUID > tmp2.ldif
cat tmp2.ldif | grep --binary-files=text -vi creatorsName > tmp3.ldif
cat tmp3.ldif | grep --binary-files=text -vi createTimestamp > tmp4.ldif
cat tmp4.ldif | grep --binary-files=text -vi entryCSN > tmp5.ldif
cat tmp5.ldif | grep --binary-files=text -vi modifiersName > tmp6.ldif
cat tmp6.ldif | grep --binary-files=text -vi modifiersName > tmp7.ldif
cat tmp7.ldif | grep --binary-files=text -vi modifyTimestamp > tmp8.ldif
cat tmp8.ldif | grep --binary-files=text -vi contextCSN > $1-final.ldif
echo "conversion en cours ...\n ...\n...."
echo " fin Conversion , OutPUT file : import-v2.ldif  "
# + suppression de l'ou et de l'admin
```

<span style="color: rgb(241, 196, 15);"><span style="color: rgb(224, 62, 45);">  
</span></span>

**<span style="color: rgb(224, 62, 45);">Il faut aussi ouvrir le ldif et retirer les 2 premieres description ADMIN + OU à la fin du script .</span>**[![image.png](https://cavallone.fr/uploads/images/gallery/2024-10/scaled-1680-/1FUfo6i5MUpNtmxN-image.png)](https://cavallone.fr/uploads/images/gallery/2024-10/1FUfo6i5MUpNtmxN-image.png)

# OpenLdap commande

1. **`ldapwhoami -x -D "uid=*** -W -v`**
    
    
    - <span style="color: rgb(45, 194, 107);">Cette commande permet de s'authentifier avec l'utilisateur spécifié et affiche l'identité LDAP de l'utilisateur actuel (fonction `whoami`).  
          
        </span>
2. **`ldapsearch -x -LLL -D "cn=admin,dc=***,dc=***" -W -b "ou=extern,ou=users,dc=***,dc=***" "(uid=*)" | grep dn`**
    
    
    - <span style="color: rgb(45, 194, 107);">Effectue une recherche dans l'annuaire LDAP en filtrant sur l'attribut `uid` et extrait les entrées de type `dn` (distinguished name).  
          
        </span>
3. **`cat comptes_geode_extern.ldif | grep -5ni granet`**
    
    
    - <span style="color: rgb(45, 194, 107);">Affiche les 5 lignes avant et après chaque occurrence de "granet" dans le fichier `comptes_geode_extern.ldif`.  
          
        </span>
4. **`ldapadd -x -D "cn=admin,dc=***,dc=***" -W -f comptes_geode_extern.ldif`**
    
    
    - <span style="color: rgb(45, 194, 107);">Ajoute des entrées LDAP à partir du fichier `comptes_geode_extern.ldif`.  
        </span>
5. **`ldapdelete -x -r "ou=users,dc=***,dc=***" -W -D "cn=admin,dc=***,dc=***"`**
    
    
    - <span style="color: rgb(45, 194, 107);">Supprime des entrées récursivement dans l'OU `users` de l'annuaire LDAP.  
          
        </span>
6. **`ldapsearch -x -LLL -D "cn=admin,dc=***,dc=***" -W -b "cn=admin,dc=***,dc=***" "(objectClass=*)"`**
    
    
    - <span style="color: rgb(45, 194, 107);">Effectue une recherche LDAP sur l'OU admin et récupère toutes les entrées de ce conteneur.  
          
        </span>
7. **`ldapwhoami -x -D "cn=admin-byzance,dc=***,dc=***" -W -H ldap://***`**
    
    
    - <span style="color: rgb(45, 194, 107);">S'authentifie sur un serveur LDAP distant et affiche l'identité LDAP de l'utilisateur.  
          
        </span>
8. **`ldapsearch -x -H ldap://*** -D "cn=admin,dc=***,dc=***" -W -b "dc=***,dc=***" "(objectClass=*)" > backup-jimmy-test.ldif`**
    
    
    - <span style="color: rgb(45, 194, 107);">Effectue une recherche sur le serveur LDAP distant et exporte les résultats dans un fichier `backup-jimmy-test.ldif`.  
          
        </span>
9. **`ldapsearch -x -H ldap://*** -D "cn=admin,dc=***,dc=***" -W -b "ou=vm,ou=users,dc=***,dc=***" "(objectClass=*)" > ou-vm.ldif`**
    
    
    - <span style="color: rgb(45, 194, 107);">Recherche les objets dans l'OU `vm` de l'annuaire LDAP distant et exporte les résultats dans le fichier OU-VM.ldif.  
          
        </span>
10. **`ldapsearch -x -H ldap://*** -D "cn=admin,dc=***,dc=***" -W -b "ou=byzance,ou=users,dc=***,dc=***" "(objectClass=*)" | grep -c "^dn: "`**
    
    
    - <span style="color: rgb(45, 194, 107);">Recherche les objets dans l'OU `byzance` et compte le nombre d'entrées dans le résultat.  
          
        </span>
11. **`grep -c "^dn: uid=" OU-FULL-BACKUP-PROD/full-backup-prod-09-09-2024.ldif > directement sur un file.ldif`**
    
    
    - <span style="color: rgb(45, 194, 107);">Recherche dans un fichier LDIF et compte le nombre d'entrées de type `dn` pour l'attribut `uid`.</span>