logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
doc:systeme:pam [28/01/2016 15:42]
greenmerlin [Comprendre PAM]
doc:systeme:pam [14/08/2020 13:48] (Version actuelle)
--gilles-- [PAM Pluggable Authentication Modules]
Ligne 1: Ligne 1:
-====== ​Titre de Votre Tuto ======+====== ​PAM Pluggable Authentication Modules ​======
  
-  * Objet : Apprendre qu'​est-ce que PAM et comment le configurer ​FIXME+  * Objet : Apprendre qu'​est-ce que PAM(Pluggable Authentication Modules) ​et comment le configurer ​
   * Niveau requis : {{tag>​avisé}}   * Niveau requis : {{tag>​avisé}}
-  * Commentaires : La modiifcation ​de PAM ne ce fait que sur des machines de type serveur ou pour les acharnées de la sécurité, les options par default ​de Debian ​convienne ​à n'​importe ​quelle usagé ​lambda +  * Commentaires : //La modification ​de PAM se fait sur des machines de type serveur ou pour des usagers avisés qui tiennent à la sécurité. \\ Les options par défaut ​de Debian ​conviennent dans la quasi-totalité des cas à n'​importe ​quel usager ​lambda./
-  * Débutant, à savoir : [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) +  * Suivi : {{tag>​à-tester}}
-  * Suivi : {{tag>en-chantier ​à-tester ​à-placer}} -+
     * Création par [[user>​greenmerlin]] 26/01/2016     * Création par [[user>​greenmerlin]] 26/01/2016
-    * Testé par <...> le <​...> ​FIXME +    * Testé par <...> le <...>  
-  * Commentaires sur le forum : [[:url-invalide ​| Lien vers le forum concernant ce tuto]] ((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) FIXME+  * Commentaires sur le forum : [[https://debian-facile.org/​viewtopic.php?​id=13185 ​| Lien vers le forum concernant ce tuto]] ((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
  
-**Nota :** 
  
-Contributeurs,​ les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! 
  
 ===== Introduction ===== ===== Introduction =====
  
-Pam est un système de bibliothèques qui récupère ​les "processus d'​authentification" ​des services et application ​du système. Peu connu il n'​est ​pas moins utilisé sur beaucoup de distribution, c'est une couche massive de sécurité.+Pam est un système de bibliothèques qui **garantit** l'​utilisation des commandes d'​administration en récupérant ​les **processus d'​authentification des services et applications** ​du système. ​\\ 
 +Peu connu il n'est pas moins utilisé sur beaucoup de distributions, c'est une couche massive de sécurité.
  
-Ce système ​de bibliothèques "​garanti"​ l'​utilisation ​des commandes d'​administration.+<note warning>​il est grandement recommandé ​de faire des essais de configuration ​ PAM sur une machine virtuelle avant de toucher à la machine réelle.</​note>​ 
 +  * [[https://​debian-facile.org/​viewtopic.php?​pid=160711#​p160711 |De Philou92 sur le forum]] ^_^
  
-===Découverte===+====Découverte====
  
-Pam à configurer : Le concept est plutôt simple, un fichier par programme ou daemon +Pam à configurer : Le concept est plutôt simple, un fichier par programme ou daemon.\\ 
-Bien entendu les développeur ​de la Jessie nous ont tous bien configuré comme il faut+Bien entendu les développeurs ​de Jessie nous ont tout bien configuré comme il faut :
 <code user>ls /​etc/​pam.d/</​code>​ <code user>ls /​etc/​pam.d/</​code>​
 pour un petit aperçu. pour un petit aperçu.
-les plus important ​sont :+les plus importants ​sont :
   * /​etc/​pam.d/​common-auth   * /​etc/​pam.d/​common-auth
   * /​etc/​pam.d/​common-account   * /​etc/​pam.d/​common-account
Ligne 35: Ligne 34:
 <​code=root>​ldd /​bin/​vers_le_programme | grep libpam</​code></​note>​ <​code=root>​ldd /​bin/​vers_le_programme | grep libpam</​code></​note>​
  
-===Exemple===+====Exemple===
 <file conf common-password>​ <file conf common-password>​
 ... ...
Ligne 51: Ligne 51:
 </​file>​ </​file>​
  
-Ici la première ​choses ​à noter c'est que la syntaxe ​employé ​est toujours de type :+Ici la première ​chose à noter c'est que la syntaxe ​employée ​est toujours de type :
  
 ^NOM   ​^ ​  ​COMMENTAIRES ​  ^ ^NOM   ​^ ​  ​COMMENTAIRES ​  ^
Ligne 59: Ligne 59:
 |Arguments | les arguments du module ​  | |Arguments | les arguments du module ​  |
  
-Chronoliquement ​une action PAM se séroule ​comme il suit :  +Chronologiquement ​une action PAM se déroule ​comme suit :  
-  - L'​utilisateur ​rentre ​son nom de connexion et mot de passe +  - L'​utilisateur ​entre **son nom de connexion** et **mot de passe**. 
-  - Le programme login traite la demande puis délègue l'​authentification à PAM +  - Le programme login traite la demande puis délègue l'​authentification à PAM. 
-  - PAM lit le fichier /​etc/​pam.d/​login ​et exécute les directives et renvoi ​au programme+  - PAM lit le fichier ​''​/​etc/​pam.d/​login'', ​exécute les directives et renvoie ​au programme.
  
  
Ligne 68: Ligne 68:
 <​code>​password ​       [success=1 default=ignore] ​     pam_unix.so obscure sha512</​code>​ <​code>​password ​       [success=1 default=ignore] ​     pam_unix.so obscure sha512</​code>​
  
-Ici le module est pam_unix.so,​ ce qui signifie que pam va vérifier la concordance avec les fichiers /etc/passwd et /etc/shadow+  * Ici le module est **pam_unix.so**, ce qui signifie que pam va vérifier la concordance avec les fichiers ​''​/etc/passwd'' ​et ''​/etc/shadow''​ 
 +  * Pour ''​Success = 1''​ et ''​default = ignore''​ c'est un peu plus compliqué j'​aborderai ça plus loin. 
 +  * Les Options ''​obscure''​ et ''​sha512''​ signifient que le module va respectivement tester si votre niveau de complexité de mot de passe est suffisant et que le mot de passe sera crypté avec l'​algorithme **SHA512**.
  
-Pour Success = 1 default ignore c'est un peu plus compliqué j'aborderais ça plus loin+<note tip>Par défaut l'option ​''​obscure''​ teste les points suivants sur le mot de passe entré : 
 +  * Palindrome. 
 +  * Changement de la casse uniquement (ex :password, PAsSworD). 
 +  * Si il est trop similaire au dernier. 
 +  * Si il est vraiment trop simple (ex : 0000). 
 +  * Si il est retourné (ex : user:​root;​passwd:​toor). 
 +</​note>​
  
-Les Options obscure et sha512 signifient que le modules va respectivement tester si votre niveau de complexité de mot de passe est suffisant et que le mot de passe sera crypter avec l'​algorithme SHA512 
- 
-<note tip>Par défaut l'​options obsucre teste les points suivant sur le mot de passe rentré 
-  * Palindrome 
-  * Changement de la casse uniquement (ex :password, PAsSworD) 
-  * Si il est trp similaire au dernbier 
-  * Si il est vraiment trop simple (ex : 0000) 
-  * Si il est retourné (ex : user:​root;​passwd:​toor) 
-</​note>​ 
 ===== Comprendre PAM ===== ===== Comprendre PAM =====
  
-Pour bien comprendre les mécanismes de PAM nous allons reprendre notre tableau, mais avant il est nécessaire d'​aborder un autre point concernant les fichiers de configuration ​(/​etc/​pam.d/​*)+Pour bien comprendre les mécanismes de PAM nous allons reprendre notre tableau, mais avant il est nécessaire d'​aborder un autre point concernant les fichiers de configuration ​
 +<code user>​ls ​/​etc/​pam.d/​*</​code>​
  
-===L'​empilement des modules===+==== L'​empilement des modules ​====
  
 Prenons l'​exemple suivant :  Prenons l'​exemple suivant : 
Ligne 94: Ligne 94:
 </​code>​ </​code>​
  
-Voila comment PAM va interpréter : +Voila comment PAM va les interpréter : 
  
-Le module ​pam_securetty” va vérifier son fichier de configuration/​etc/​securetty,​ afin de vérifier que le terminal utilisé est listé dans le fichier. Si cela n'est pas le cas, les connexions en tant qu'​utilisateur root ne seront pas permises. ​Vu que le statut est à “required”,​ le module appelera les trois autres modules de la pile mais même si tous les autres sont ok, la connexion échouera. Notons que si le module avait le statut “requisite”,​ l'​opération aurait été soldé par un échec et aucun des autres modules n'​auraient été invoqué, peu importe de leur statut.+Le module ​''​pam_securetty'' ​va vérifier son fichier de configuration ​dans ''​/​etc/​securetty''​, afin de vérifier que le terminal utilisé est listé dans le fichier. ​\\ 
 +Si cela n'est pas le cas, les connexions en tant qu'​utilisateur root ne seront pas permises.\\
  
-Le module “pam_env” va fixer les variables d'environnement d'après ​le fichier /​etc/​security/​pam_env.conf.+Vu que le statut est à ''​required'', ​le module appellera les trois autres modules de la pile mais, même si tous les autres sont ok, la connexion échouera.
  
-Le module ​“pam_rootok” va verfifier si l'utilisateur est root. Si cela échoue, l'​opération ​peut réussir tout de même si le module “pam_unix” authentifie l'utilisateur. Si “pam_rootok” authentifie l'​utilisateur“pam_unix” ne sera pas invoqué.+Notons que si le module ​avait le statut ''​requisite'​', l'​opération ​aurait été soldée par un échec et aucun des autres modules n'aurait été invoquépeu importe leur statut.
  
-Le module “pam_unix” ​Il essaiera d'​authentifier l'​utilisateur en utilisant les appels ​systèmes ​getpw*. Si pam_unix” échoue et que pam_rootok” avait échoué, l'​opération échouera. Si pam_rootok” échoue mais pam_unix” est correct, l'​opération sera exécutée.+  * Le module ''​pam_env''​ va fixer les variables d'​environnement d'​après le fichier ''/​etc/​security/​pam_env.conf''​. 
 +  * Le module ''​pam_rootok''​ va vérifier si l'​utilisateur est root. 
 +    * Si cela échoue, l'​opération peut réussir tout de même si le module ''​pam_unix''​ authentifie l'​utilisateur. 
 + 
 +    * Si “pam_rootok” authentifie l'​utilisateur,​ ''​pam_unix''​ ne sera pas invoqué.  
 +    * Le module “pam_unix” essaiera ​alors d'​authentifier l'​utilisateur en utilisant ​''​les appels ​système ​getpw*''​. 
 + 
 +    - Si ''​pam_unix'' ​échoue et que ''​pam_rootok'' ​avait échoué, l'​opération échouera. 
 +    - Si ''​pam_rootok'' ​échoue mais que ''​pam_unix”'' ​est correct, l'​opération sera exécutée. 
 + 
 +== On reprend notre tableau pour la suite ==
  
 ^NOM   ​^ ​  ​COMMENTAIRES ​  ^ ^NOM   ​^ ​  ​COMMENTAIRES ​  ^
-|Module type   |Quel module de sécurité à utiliser (qu'​est-ce que PAM va gérer) ?          | +|Module type   |quel module de sécurité à utiliser (qu'​est-ce que PAM va gérer) ?          | 
-|Control ​   |que fait un module en cas d'​échec ​         +|Control ​   |que fait un module en cas d'​échec ​?         
-|Module path |le chemin du module ​       | +|Module path |le chemin du module       | 
-|Arguments | les arguments du module ​  |+|Arguments | les arguments du module  |
  
-===Le module-type===+==== Le module-type ​====
  
-Quatre structures de gestion ​possible ​+Quatre structures de gestion ​possibles ​
-  * authentification : ceci permet à l'​utilisateur de s'​authentifier et de définir les droits du compte.Les modules utilisant ce système demandent en général un mot de passe. +  * authentification : ceci permet à l'​utilisateur de s'​authentifier et de définir les droits du compte. ​\\ Les modules utilisant ce système demandent en général un mot de passe. 
-  * gestion de compte : permet la gestion des comptes utilisateurs. Par exemple, des restrictions peuvent être définies selon les horaires ou la charge du serveur. +  * gestion de compte : permet la gestion des comptes utilisateurs. 
-  * gestion de session : Ce sont les tâches à effectuer en début et fin de chaque session. Par exemple, démarrer un agent ssh, monter des disques ​crypter, etc … +    * Par exemple, des restrictions peuvent être définies selon les horaires ou la charge du serveur. 
-  * gestion des mots de passe : mise à jour du jeton d'​authentification du compte d'un utilisateur,​ soit parce qu'il a expiré soit parce que celui-ci désire le modifier.+  * gestion de session : Ce sont les tâches à effectuer en début et fin de chaque session. ​ 
 +    * Par exemple, démarrer un agent ssh, monter des disques ​cryptés, etc … 
 +  * gestion des mots de passe : mise à jour du jeton d'​authentification du compte d'un utilisateur,​ soit parce qu'il a expirésoit parce que celui-ci désire le modifier.
  
-===Control===+==== Control ​====
  
-Que doit faire la librairie PAM doit faire en cas de réussite ou d'echec du module ?+Que doit faire la librairie PAM en cas de réussite ou d'échec ​du module ? \\ 
 +Plusieurs possibilités : 
  
-plusieurs possibilités ​+* **required** ​si un module ''​required''​ retourne un statut qui n'est pas ''​success'',​ l'​opération échouera mais seulement après que tous les modules en dessous soient invoqués. \\ La réussite d'au moins un des modules ''​required''​ est nécessaire. 
 +  * **requisite** : si un module ''​requisite''​ échoue, l'​application en est tout de suite informée et aucun autre module n'est invoqué. \\ La réussite de tous les modules ''​requisite''​ est nécessaire. 
 +  * **sufficient** : la réussite d'un seul module ''​sufficient''​ est suffisant. \\ Tous les modules ''​sufficient''​ qui suivent ne seront pas invoqués. 
 +<note important>​ Il faut noter, toutefois, que si un module ''​required''​ échoue avant un ''​sufficient'',​ l'​opération échouera ignorant les autres modules ''​sufficient''​. 
 +</​note>​ 
 +  * **optional** : la réussite d'au moins un des modules ''​optional''​ est nécessaire si aucun autre n'a réussi.
  
-  * required : si un module “required” retourne un status qui n'est pas “success”,​ l'​opération échouera mais seulement après que tous les modules en dessous soient invoqués. La réussite d'au moins un des modules “required” est nécessaire. +<note tip>Une syntaxe ​un peu plus complète peut-être employée sous la forme de : ''​value=action pairs''​</​note>​
-  * requisite : si un module “requisite” échoue, l'​application en est tout de suite informée et aucun autre module n'est invoqué. La réussite de tous les modules “requisite” est nécessaire. +
-  * sufficient ​la réussite d'un seul module “sufficient” est suffisant. Tous les modules “sufficient” qui suivent ne seront pas invoqués. Il faut noter, toutefois, que si un module “required” échoue avant un “sufficient”,​ l'opération échouera ignorant les autres modules “sufficient”. +
-  * optional : la réussite d'au moins un des modules “optional” est nécessaire si aucun autre n'a réussi.+
  
-une syntaxe un peut plus complète peut-être employé sous la forme de : value=action pairs+== Exemple ==
  
-=exemple que j'​ai ​abordé lors de la présentation=+(Déjà ​abordé lors de la présentation.)
 <​code>​[success=1 default=ignore]</​code>​ <​code>​[success=1 default=ignore]</​code>​
-success=1 : Si le module PAM renvoie success, PAM va sauter 1 lignes ​dans le fichier de config(2 pour 2 lignes,​etc...) +  * **success=1** : Si le module PAM renvoie ​''​success''​, PAM va sauter 1 ligne dans le fichier de config (2 pour 2 lignes,​etc...) 
-default=ignore : Le status ​de retour du module, n'​influencera pas le reste des règles dans le fichier de config+  * **default=ignore** : Le statut ​de retour du module, n'​influencera pas le reste des règles dans le fichier de config
  
  
 +====Cas concret N°1====
  
-===Cas ​concret ​N°1===+<note important>​Pour tester le 1er cas concret ​''​if''​ faut avoir [[doc:​reseau:​ssh|un serveur SSH]] fonctionnel</​note>​
  
-<note important>​Pour tester le 1er cas concret if faut avoir un serveur SSH fonctionel</​note>​+On va faire un exemple ça vaut mieux que les grands discours il paraît. ​
  
-On va faire un exemple ça vaut mieux que les grands discours il parait, ​+Modifions le comportement par defaut d'un programme en utilisant d'​autres modules 
 +<note tip>​Retrouvez la liste des modules disponibles par défaut sur debian ici --> ''/​lib/​i386-linux-gnu/​security''</​note>​
  
-modifions ​le comportement par default d'​un ​programme ​en utilisant d'autres modules +Ici on va utiliser le module **pam-dbus**,​ sur le programme ''​sshd''​ (OPEN-SSH).
-<note tip>​retrouver la liste des modules disponible par default sur debian ici --> /​lib/​i386-linux-gnu/​security</​note>​+
  
-Ici on va utiliser ​le module pam-dbus, sur le programme sshd(OPEN-SSH)+On se logue sous X en graphique (//dbus// fonctionne avec le mode graphique). \\ 
 +On installe ​le module pam (oui il n'est pas installé par défaut : m( 
 +<code root>apt install libpam-dbus</​code>​
  
-On se logue sous X en graphique(dbus fonctionne avec le mode graphique)+On édite ​le fichier /​etc/​pam.d/​sshd 
 +<code root>​nano /​etc/​pam.d/​sshd</​code>​
  
-On install le module pam (oui il n'est pas installé par défaut :p) +Et on remplace la ligne suivante ​ : 
-<code root>apt install libpam-dbus</​code>​ +
-on édite le fichier /​etc/​pam.d/​sshd +
-<code root>vi /​etc/​pam.d/​sshd</​code>​ +
-et on remplace la ligne suivante ​ : +
 <​code>​@include common-auth</​code>​ <​code>​@include common-auth</​code>​
 par par
 <​code>​auth required pam_dbus.so</​code>​ <​code>​auth required pam_dbus.so</​code>​
  
-===Test===+====Test====
  
 <​code=user>​ssh localhost</​code>​ <​code=user>​ssh localhost</​code>​
 +Résultat :
  
-résultat : <​url>​http://pix.toile-libre.org/?​img=1453979480.png</​url>​+{{https://debian-facile.org/images/​file-Reda0b8260517f425575ddbdefef3ed2f.png?500}} \\
  
-Ici le module pam-dbus va toujours ​envoyé ​un message "​dbus" ​au(x) utilisateurs ​connecté ​localement pour autorisé ​ou non la connexion ssh à votre machine.+Ici le module pam-dbus va toujours ​envoyer ​un message "​dbus" ​à tous les utilisateurs ​connectés ​localement pour autoriser ​ou non **la connexion ssh à votre machine**.
  
-décortiquons ​maintenant l'​option :<​code>​auth required pam_dbus.so </​code>​+Décortiquons ​maintenant l'​option : 
 +<​code>​auth required pam_dbus.so </​code>​
   * auth : Utiliser un module de type Authentifier et Autoriser   * auth : Utiliser un module de type Authentifier et Autoriser
   * required : Le module renvoie une erreur et rend la main à la prochaine option PAM   * required : Le module renvoie une erreur et rend la main à la prochaine option PAM
-  * pam-dbus : le nom du module que j'​utilise +  * pam-dbus : Le nom du module que j'​utilise
- +
- +
-===== Utilisation =====+
  
  
doc/systeme/pam.1453992162.txt.gz · Dernière modification: 28/01/2016 15:42 par greenmerlin

Pied de page des forums

Propulsé par FluxBB