braveo:docinstall:cas:pam
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédente | |||
braveo:docinstall:cas:pam [2013/09/19 09:51] – [CASsification via PAM] eric.talarmain | braveo:docinstall:cas:pam [2024/04/16 22:28] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== CASsification via PAM ====== | ||
+ | <note important> | ||
+ | |||
+ | |||
+ | ===== Objectif et intérêt de la démarche ===== | ||
+ | |||
+ | Nous souhaitons CASsifier un serveur que ce soit un serveur imap, Jabber (XMPP) ou autre ....... | ||
+ | |||
+ | < | ||
+ | |||
+ | Je vous conseille de [[braveo: | ||
+ | </ | ||
+ | |||
+ | Nous n' | ||
+ | Ce point commun c'est [[http:// | ||
+ | |||
+ | PAM est conçu comme son nom l' | ||
+ | |||
+ | Pour ce faire nous allons mettre au point un **pile d' | ||
+ | * On vérifie si les identifiant ne sont pas déjà dans le cache (pam_ccreds) | ||
+ | * Si le mot de passe a la structure d'un ticket de CAS (commençant par ST ou PT), on vérifie la validité du ticket auprès du CAS (pam_cas) | ||
+ | * Sinon si l' | ||
+ | * .... on peut rajouter autre chose si on veux se compliquer la vie :-) mais on ne va pas le faire | ||
+ | * Enfin en tout dernier on met en cache l' | ||
+ | |||
+ | Voilà il y a plus qu'a tout installer ;-) | ||
+ | |||
+ | //courage c'est pas si long que ça .....// | ||
+ | |||
+ | |||
+ | |||
+ | \\ \\ | ||
+ | |||
+ | ===== pam_ldap ===== | ||
+ | |||
+ | Installation des paquets : | ||
+ | apt-get install libpam-ldap | ||
+ | Configuration de libnss-ldap : | ||
+ | URI du ldap : ldap:// | ||
+ | Base DN : dc=mdl29, | ||
+ | Version : 3 (la dernière) | ||
+ | SuperUilisateur: | ||
+ | Mot de passe : ******* (ou ne rien mettre si on ne veut pas passer par le super utilisateur) | ||
+ | Modification des mot de passes locaux : non | ||
+ | La base de données LDAP demande-t-elle une identification ? | ||
+ | //Cette conf est ensuite dispo ici / | ||
+ | |||
+ | Pour tester, //getent passwwd// devrait retourner les utilisateurs contenus dans LDAP. | ||
+ | |||
+ | Si ça ne fonctionne pas allez chercher les logs ici : /// | ||
+ | Vou pouvez aussi ajouter dans /// | ||
+ | debug 9 | ||
+ | |||
+ | Autres docs utilisées : | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | |||
+ | \\ \\ \\ | ||
+ | |||
+ | ===== pam_cas ===== | ||
+ | |||
+ | ==== Installation ==== | ||
+ | |||
+ | On commence par télécharger les sources sur [[https:// | ||
+ | |||
+ | Décompressez les sources (adaptez le commande en changeant la version) : | ||
+ | <code C>tar xvzf Pam_cas-2.0.11-esup-X.X.X.tar.gz</ | ||
+ | |||
+ | Compiler les sources (dossier // | ||
+ | <code C> | ||
+ | cd sources | ||
+ | cp Makefile.Redhat Makefile | ||
+ | make | ||
+ | </ | ||
+ | |||
+ | Nous allons aussi utiliser l' | ||
+ | <code C> | ||
+ | make test | ||
+ | </ | ||
+ | |||
+ | <note important> | ||
+ | <code C> | ||
+ | diff Makefile.redhat Makefile | ||
+ | 8c8 | ||
+ | < CPFLAGS = -O2 | ||
+ | --- | ||
+ | > CPFLAGS = -O2 -fPIC | ||
+ | 49a50,53 | ||
+ | > | ||
+ | > install: | ||
+ | > install -s -o0 -g0 -m644 pam_cas.so $(DESTDIR)/ | ||
+ | > install -m640 ../ | ||
+ | </ | ||
+ | J'ai généré un {{: | ||
+ | <code C>patch -p0 < patch.diff</ | ||
+ | |||
+ | </ | ||
+ | |||
+ | Vérifiez bien que la librairie, pam_cas.so est généré, vous pouvez aussi tester castest avec un ./castest qui normalement devrait générer un erreur. | ||
+ | |||
+ | Vous allez ensuite copier le module pam_cas.so dans / | ||
+ | cp pam_cas.so / | ||
+ | |||
+ | \\ \\ | ||
+ | |||
+ | ==== Configuration === | ||
+ | Le fichier de configuration est : **/ | ||
+ | |||
+ | Voici par exemple celui que nous utilisons : | ||
+ | < | ||
+ | host cas.mdl29.net | ||
+ | port 80 | ||
+ | uriValidate / | ||
+ | ssl no | ||
+ | #LOG_DEBUG 10 | ||
+ | #debug on | ||
+ | trusted_ca / | ||
+ | </ | ||
+ | |||
+ | Comme vous pouvez le constater, il est possible d' | ||
+ | |||
+ | |||
+ | Vous trouverez plus de détail sur la configuration dans [[http:// | ||
+ | |||
+ | < | ||
+ | |||
+ | \\ \\ | ||
+ | |||
+ | === On test === | ||
+ | C'est maintenant que castest entre en action (à exécuter dans le dossier sources) : | ||
+ | ./castest " | ||
+ | Castest fonction avec les arguments suivants : | ||
+ | ./castest < | ||
+ | //< | ||
+ | |||
+ | < | ||
+ | |||
+ | | ||
+ | |||
+ | ou si le CAS n'est pas à la racine https:// | ||
+ | |||
+ | Si vous rencontrez des problèmes, viellez vous référer à [[http:// | ||
+ | |||
+ | |||
+ | === Pile pam (simple) === | ||
+ | Nous allons maintenant relier tout ceci à pam avec une petite pile pam. | ||
+ | |||
+ | < | ||
+ | <note tip>Si quelqu' | ||
+ | |||
+ | Exemple d'une pile pam (CAS puis ldap) : | ||
+ | < | ||
+ | auth sufficient / | ||
+ | auth sufficient / | ||
+ | auth required / | ||
+ | </ | ||
+ | |||
+ | <note tip>Voir pour mettre une petite procédure de test de la pile, via la commande login par exemple utilisant la pile / | ||
+ | |||
+ | Un problème se pose, souvenez-vous un ticket n'est valide qu'une seule fois, par conséquent si on prend l' | ||
+ | |||
+ | La solution est simple mettre en cache le ticket, ce que nous allons faire avec pam_ccreds. | ||
+ | |||
+ | \\ \\ | ||
+ | |||
+ | === Sources utilisées === | ||
+ | * http:// | ||
+ | * https:// | ||
+ | * http:// | ||
+ | |||
+ | \\ \\ \\ | ||
+ | |||
+ | ===== Pam_ccreds ===== | ||
+ | |||
+ | |||
+ | === Installer pam_ccreds : === | ||
+ | apt-get install libpam-ccreds | ||
+ | Vérifier rapidement si /// | ||
+ | |||
+ | \\ \\ \\ | ||
+ | |||
+ | ===== Préparation de pile pam : ===== | ||
+ | |||
+ | === La pile PAM que nous utilisons === | ||
+ | Voici la pile PAM que nous utilisons pour dovecot, l' | ||
+ | < | ||
+ | auth sufficient | ||
+ | auth [success=1 new_authtok_reqd=done default=ignore] | ||
+ | auth [success=ok new_authtok_reqd=done default=die] | ||
+ | auth optional | ||
+ | |||
+ | #La suite ne traite pas de l' | ||
+ | account required | ||
+ | |||
+ | @include common-auth | ||
+ | @include common-account | ||
+ | @include common-session | ||
+ | </ | ||
+ | Changez le libellé du service en fonction de vos besoins. | ||
+ | |||
+ | <note tip> | ||
+ | |||
+ | \\ \\ | ||
+ | |||
+ | === Comprendre la pile PAM === | ||
+ | Une pile PAM c'est la suite des instructions que PAM va suivre pour authentifier un utilisateur, | ||
+ | |||
+ | \\ | ||
+ | |||
+ | __Je vous rappelle le déroulement :__ | ||
+ | * On vérifie si les identifiant ne sont pas déjà dans le cache (pam_ccreds) | ||
+ | * Si le mot de passe a la structure d'un ticket de CAS (commençant par ST ou PT), on vérifie la validité du ticket auprès du CAS (pam_cas) | ||
+ | * Sinon si l' | ||
+ | * .... on peut rajouter autre chose si on veut se compliquer la vie :-) mais on ne va pas le faire | ||
+ | * Enfin en tout dernier on met en cache l' | ||
+ | |||
+ | \\ | ||
+ | |||
+ | Chacune de ces étapes sera représentée par une ligne Auth dans la pile PAM. | ||
+ | |||
+ | \\ | ||
+ | |||
+ | __A cela on ajoute quelques évidences :__ | ||
+ | * Si pam_ccreds (ligne 1) retourne OK pas besoin de vérifier le reste sinon on continue, on l' | ||
+ | * pam_cas : | ||
+ | * Si OK : il faut mettre en cache le ticket via pam_ccreds, on saute donc la ligne pam_ldap pour passer à la dernière ligne de mise en cache via pam_ccreds (dernière ligne) ceci est indiqué par : **success=1** si on veut sauter 2 lignes **success=2** .... | ||
+ | * Sinon on continue dans la pile | ||
+ | * pam_ldap, si OK, la pile est validée et c'est bon l' | ||
+ | * pam_ccreds mise en cache : elle peut échouer ceci n'a pas d' | ||
+ | |||
+ | |||
+ | Pour plus d' | ||
+ | |||
+ | |||
+ | Maintenant qu'on a notre pile PAM, reste plus qu'à la tester et à la mettre en place sur un serveur imap par exemple. | ||
+ | |||
+ | ===== Comment tester si c'est bon ? ===== | ||
+ | |||
+ | On va se baser sur la commande **login** à laquelle correspond la pile PAM **/ | ||
+ | On fait un backup de la pile login : | ||
+ | cp / | ||
+ | Puis on met notre pile PAM (du paragraphe précédant) dans le fichier / | ||
+ | nano / | ||
+ | Enfin on tente de se connecter avec la commande **login** : | ||
+ | login | ||
+ | | ||
+ | Essayez avec un compte ldap. | ||
+ | |||
+ | //Je vous conseille d' | ||
+ | <note tip> | ||
+ | |||
+ | N' | ||
+ | |||
+ | Après avoir effectué vos tests vous **__devez impérativement restaurer la pile login d' | ||
+ | mv / | ||
+ | |||
+ | |||
+ | \\ \\ \\ | ||
+ | \\ \\ | ||
+ | \\ | ||
+ | |||
+ | Prêts a poursuivre ? | ||
+ | Appliquons cette pile à un serveur imap (dovecot) : [[braveo: | ||
+ | Ou a un serveur XMPP ejabberd [[braveo: | ||
+ | |||
+ | ---- | ||
+ | |||
+ | Rédigé par Benjamin Bernard \\ | ||
+ | Source : très diverses, doc d' | ||
braveo/docinstall/cas/pam.txt · Dernière modification : 2024/04/16 22:28 de 127.0.0.1