Aller au contenu | Aller au menu | Aller à la recherche

Connexion en LDAPS avec Icinga

Icinga avec LDAPS Ce problème m'a été posé au bureau, et comme je n'ai pas trouvé de page traitant de ce problème, j'en détaille la configuration.
Le serveur LDAPS utilisé dans ma société est permissif et autorise les connexions sans certificats. Il est être remplacer par un serveur forçant la connexion via un certificat en SHA-256. Quant à moi, je suis chargé de m'occuper de la migration correcte pour le serveur Icinga. La plupart des applicatifs dans ma société étant basé sur Java, plus qu'un certificat, il s'agit d'un TrustKeyStore (JKS) qui est fourni pour réaliser la migration.
Dans Icinga, l'authentification LDAP s'effectue à travers Icinga-Web. A savoir dans les fichiers suivants (dans le cas d'une installation par défaut) :

  • /usr/share/icinga-web/app/modules/AppKit/config/auth.xml
  • /etc/icinga-web/conf.d/auth.xml

On y trouve la partie suivante :

	
        
            AppKit
            Auth.Provider.LDAP
            true
            true
            true
            true

            
                givenName
                sn
                email
            
            false
            ldaps://serveur1:636
            false
            ou=people,dc=societe
            uid=userdn,ou=Applis,dc=societe
            
            
        
   	

Le paramètre ldap_start_tls semble attirant mais malheureusement ne correspond pas à mon cas où le serveur s'attend à trouver un certificat client sur la machine interrogeant l'annuaire.
En fait, après plusieurs recherches, j'ai réalisé que Icinga-Web délègue l'intégralité du processus de connexion LDAP à PHP, en se basant sur les fonctions ldap_connect() et ldap_search(), elles-mêmes s'appuyant sur la configuration locale.

Récupération du certificat

Comme indiqué, je pars d'un Keystore duquel je dois extraire le certificat nécessaire. Tout d'abord, je récupère l'alias du certificat que je compte extraire :

[root@icinga]# keytool -list -keystore mon_keystore.jks -storepass mot_de_passe_keystore

Ensuite, j'extrais le certificat (au format PEM) du Keystore (j'ai choisi le répertoire par défaut pour y stocker le certificat) :

[root@icinga]# keytool -exportcert -keystore mon_keystore.jks -storepass mot_de_passe_keystore -rfc -alias alias_du_certificat > /etc/openldap/cacerts/alias_du_certificat.pem
[root@icinga]# chmod 644 /etc/openldap/cacerts/alias_du_certificat.pem

Et je vérifie si l'algorithme de ce certificat est bien, comme demandé du SHA-256.

[root@icinga]# openssl x509 -text -noout -in /etc/openldap/cacerts/alias_du_certificat.pem | grep Algorithm
    Signature Algorithm: sha256WithRSAEncryption
            Public Key Algorithm: rsaEncryption
    Signature Algorithm: sha256WithRSAEncryption

Configuration du client LDAP

Comme je l'ai dit plus haut, Icinga-Web se base, à travers PHP, sur la configuration locale, à savoir, l'environnement de l'utilisateur exécutant Apache (généralement www) :

[www@icinga]$ cat > ~/.ldaprc << EOF
TLS_REQCERT never
TLS_CACERT /etc/openldap/cacerts/alias_du_certificat.pem
EOF

On peut alors tester le bon fonctionnement de cette configuration :

[www@icinga]$ ldapsearch -H  ldaps://serveur2:636 -d 1 2>&1 | grep TLS
TLS: loaded CA certificate file /etc/openldap/cacerts/alias_du_certificat.pem.
TLS: certificate [CN=server2,OU=0002,O=SOCIETE,C=TEST] is valid
...

Si le résultat est concluant, ne pas oublier de redémarrer Apache.

Reconfiguration de Icinga-Web

Finalement, je modifie le fichier auth.xml de Icinga-Web, et je vide le cache.

[icinga@icinga]$ sed -i.bak 's/serveur1/serveur2/1' /etc/icinga-web/conf.d/auth.xml
[icinga@icinga]$  /usr/share/icinga-web/bin/clearcache.sh
Cachedir: /usr/share/icinga-web/cache
Deleting cache from config (69 files) ... ok
Deleting cache from Squished (4 files) ... ok

Si aucune erreur n'a été faite, on devrait pouvoir se connecter avec ses credentials LDAP sur l'interface graphique de Icinga-Web ;-)

QR code
Jean-Baptiste Langlois

Auteur: Jean-Baptiste Langlois

Restez au courant de l'actualité et abonnez-vous au Flux RSS de cette catégorie

Commentaires (0)

Soyez le premier à réagir sur cet article

Ajouter un commentaire Fil des commentaires de ce billet

:-) ;-) :-/ :mdr: :-D :-( :-C 8-) :-O :-s :siffle: :-P :love: :oops: :money: :caca:

no attachment



À voir également

icinga-api-2.PNG

Remonter les checks Icinga grâce à Ruby

Classe Ruby permettant de remonter des informations grâce à l'interface REST de Icinga-Web

Lire la suite

Logo dotClear

Partage si tu aimes ça

Le retour de la vengeance du geek en retard !

Lire la suite