braveo:docinstall:cas:pam
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
| braveo:docinstall:cas:pam [2011/09/06 15:21] – modification externe 127.0.0.1 | 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' | ||
