Mes serveurs Linux lorsqu’ils sont provisionnés via Foreman (j’y reviendrais) vont s’enregistrer à mon FreeIPA qui gère l’authentification et mon DNS interne.
Histoire de pousser un peu la sécurité, je me connecte en SSH depuis mon MacOS à ces machines via Kerberos.
Et pour cela il faut configurer votre MacOS mais surtout vérifier deux choses avant de démarrer :
1. Une bonne résolution DNS de vos FreeIPA (2 MMR dans mon cas)
2. Que votre date et heure coïncide avec vos serveurs FreeIPA, le plus simple étant de pointer votre MacOS sur vos serveurs FreeIPA
Je continue l’intégration de mes services à FreeIPA; dans cette optique je vous présente aujourd’hui comment intégrer Zabbix à FreeIPA grâce au module Kerberos d’Apache
Génération de la keytab
A faire sur le serveur FreeIPA
ipa service-add HTTP/zabbix.domain.local
Dans mon cas j’ouvre le service sur l’extérieur, il faut donc que le nom du service externe soit aussi dans la keytab sinon le service Kerberos ne valide pas l’authentification.
ipa service-add HTTP/zabbix.domain.com
une fois les deux services ajoutés, on peut concaténer le tout directement sur le serveur cible (ici Zabbix):
Ajout de l’utilisateur dans Zabbix et modification de l’authentification
Afin de ne pas se retrouver sans pouvoir accéder a notre plateforme après la modification de l’authentification, il faut créer les utilisateurs sur la plateforme. Faite ça de façon classique en passant par l’interface de Zabbix. Il faut savoir que par défaut l’authentification va prendre en compte l’uid du compte , il faut donc que les uid corresponde.
Une fois l’ajout effectué on peut changer l’authentification en HTTP
Ne vous déloguez pas, ainsi vous gardez le ticket de session le temps de valider que votre infrastructure est fonctionnel.
Modification d’Apache
On va s’appuyer sur un module qui s’appel : auth_kerb. Pour l’installer sur CentOS il suffi de simplement faire :
yum install mod_auth_kerb.x86_64
Il ne reste plus qu’à modifier apache pour prendre en compte la nouvelle méthode authentification
On modifie le virtualhost de Zabbix pour intégrer les lignes en gras :
<VirtualHost *:80>
...
<Directory /usr/share/zabbix/>
AuthType Kerberos AuthName "Kerberos Login" KrbMethodNegotiate on KrbMethodK5Passwd on KrbServiceName HTTP KrbAuthRealms DOMAIN.LOCAL Krb5KeyTab /etc/httpd/zabbix.keytab KrbSaveCredentials on KrbConstrainedDelegation on Require valid-user
</Directory>
...
</VirtualHost>
puis on redémarre apache
service httpd restart
A ce stade vous en mesure de vous authentifier sur Zabbix via Kerberos
Si maintenant vous voulez filtrer par groupe d’utilisateurs, le module Kerberos n’est pas en mesure de le faire en l’état, il faut passer par le module LDAP de apache qui va vérifier l’appartenance du compte au groupe avant de valider l’accès.
Je ne l’ai pas encore fait, mais cela ne serai tarder, j’updaterai ce billet en fonction.
Dans la version 8.0 de Zimbra il est maintenant possible de déléguer l’authentification à un serveur Kerberos. Quand on pense Kerberos, on pense assez rapidement à l’Active Directory, mais dans mon cas, je ne gère que des machines sous Linux et n’ai nul besoin d’un produit de chez Microsoft dans mon infrastructure. Comme solution alternative couvrant mes besoins, je me suis penché sur l’identity manager de chez Red Hat en sa version OpenSource : FreeIPA. Je ne détaillerai pas comment installer FreeIPA, mais je pense écrire des articles sur le produit au fur et à mesure de mon apprentissage sur le sujet en commençant par celui-ci :
Configuration de Zimbra avec FreeIPA
Ajout de la machine dans le domaine
Dans un premier temps il faut que la machine fasse parti du domain Kerberos. Pour cela, enregistrer la avec la commande suivante :
Une fois passé le wizard vérifiez que vous pouvez acquérir un ticket kerberos via la commande suivante :
kinit admin
puis vérifiez la validité du ticket :
klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: admin@DOMAIN.TLD
Valid starting Expires Service principal
01/23/14 19:44:12 01/24/14 19:44:10 krbtgt/DOMAIN.TLD@DOMAIN.TLD
Maintenant que la machine est dans le domaine Kerberos, on passe a la suite.
Si vous n’arrivez pas jusqu’à cette étape, je vous recommande de lire la documentation de FreeIPA
Modification du système et configuration de Zimbra
Tout d’abord il faut vérifier que dans la configuration de votre système Kerberos va effectuer un reverse lookup DNS sur le KDC pour cela vérifier que l’option dns_lookup_kdc est bien à true dans le fichier krb5.conf
Une fois cela fait, mettez vous en tant qu’utilisateur Zimbra et effectuez les commandes suivantes :
zmprov md les-titans.com zimbraAuthMech kerberos5 <= Modification de la méthode d'authentification
zmprov md les-titans.com zimbraAuthKerberos5Realm DOMAIN.TLD <= On spécifie ici le domaine Kerberos, celui-ci sera ajouté au nom d'utilisateur. La case est très importante, il faut qu'elle soit en majuscule.
Une fois cela fait, il faut redémarrer Zimbra afin qu’il prenne en compte le fichier de configuration krb5.conf si celui-ci a été modifié.
zmcontrol restart
Votre serveur Zimbra est maintenant connecté à FreeIPA.
Si votre compte zimbra est different de votre compte Kerberos, l’authentification ne retrouvera pas l’utilisateur du coté de FreeIPA.
Il faut specifier alors a Zimbra le Princpipal a chercher dans le FreeIPA.
Pour cela, il faut commencer modifier la valeur de l’attribut utilisateur :
zmprov ma my_account@domain.tld zimbraForeignPrincipal kerberos5:account@DOMAIN.TLD