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 17:44]
milou [Comprendre PAM]
doc:systeme:pam [14/08/2020 13:48] (Version actuelle)
--gilles-- [PAM Pluggable Authentication Modules]
Ligne 1: Ligne 1:
-====== ​Configuration-de-PAM-avec-debian ​======+====== PAM Pluggable Authentication Modules ​======
  
   * Objet : Apprendre qu'​est-ce que PAM(Pluggable Authentication Modules) et comment le configurer ​   * 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 se fait que sur des machines de type serveur ou pour les acharnés de la sécurité, les options par defaut ​de Debian conviennent à n'​importe quel usager 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.// 
-  * Suivi : {{tag>en-chantier ​à-tester ​à-placer}}+  * Suivi : {{tag>​à-tester}}
     * Création par [[user>​greenmerlin]] 26/01/2016     * Création par [[user>​greenmerlin]] 26/01/2016
     * Testé par <...> le <​...> ​     * 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 applications du système. Peu connu il n'est pas moins utilisé sur beaucoup de distributions,​ 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 "​garantit"​ 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éveloppeurs de Jessie nous ont tout 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.
Ligne 35: Ligne 35:
  
 ====Exemple==== ====Exemple====
 +
 <file conf common-password>​ <file conf common-password>​
 ... ...
Ligne 58: Ligne 59:
 |Arguments | les arguments du module ​  | |Arguments | les arguments du module ​  |
  
-Chronologiquement une action PAM se dé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 renvoie au programme+  - PAM lit le fichier ​''​/​etc/​pam.d/​login'', ​exécute les directives et renvoie au programme.
  
  
Ligne 67: 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 et default = ignore c'est un peu plus compliqué j'aborderai ç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 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 
- 
-<note tip>Par défaut l'​option obscure teste les points suivants sur le mot de passe rentré 
-  * 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>​ 
 ===== 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 93: 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ée par un échec et aucun des autres modules n'​aurait été invoqué, peu importe 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 verifier 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” essaiera 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 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 == == On reprend notre tableau pour la suite ==
Ligne 107: Ligne 117:
 ^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 possibles : 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 cryptés, etc …+    * Par exemple, des restrictions peuvent être définies selon les horaires ou la charge du serveur. 
 +  * 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.   * 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 en cas de réussite ou d'​échec 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 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. +<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 peu plus complète peut-être employée 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 ligne 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 statut 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 un serveur SSH fonctionnel</​note>​+<note important>​Pour tester le 1er cas concret ​''​if'' ​faut avoir [[doc:​reseau:​ssh|un serveur SSH]] fonctionnel</​note>​
  
-On va faire un exemple ça vaut mieux que les grands discours il parait+On va faire un exemple ça vaut mieux que les grands discours il paraît
  
 Modifions le comportement par defaut d'un programme en utilisant d'​autres modules Modifions le comportement par defaut d'un programme en utilisant d'​autres modules
-<note tip>​Retrouvez la liste des modules disponibles par defaut ​sur debian ici --> /​lib/​i386-linux-gnu/​security</​note>​+<note tip>​Retrouvez la liste des modules disponibles par défaut ​sur debian ici --> ​''​/​lib/​i386-linux-gnu/​security''​</​note>​
  
-Ici on va utiliser le module pam-dbus, sur le programme sshd (OPEN-SSH)+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 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(
-On installe le module pam (oui il n'est pas installé par défaut :p)+
 <code root>apt install libpam-dbus</​code>​ <code root>apt install libpam-dbus</​code>​
-on édite le fichier /​etc/​pam.d/​sshd + 
-<code root>vi /​etc/​pam.d/​sshd</​code>​ +On édite le fichier /​etc/​pam.d/​sshd 
-et on remplace la ligne suivante ​ : +<code root>nano /​etc/​pam.d/​sshd</​code>​ 
 + 
 +Et on remplace la ligne suivante ​ : 
 <​code>​@include common-auth</​code>​ <​code>​@include common-auth</​code>​
 par par
Ligne 166: Ligne 179:
  
 <​code=user>​ssh localhost</​code>​ <​code=user>​ssh localhost</​code>​
 +Résultat :
  
-Résultat : http://pix.toile-libre.org/?​img=1453979480.png+{{https://debian-facile.org/images/​file-Reda0b8260517f425575ddbdefef3ed2f.png?500}} \\
  
-Ici le module pam-dbus va toujours envoyer un message "​dbus" ​au(x) utilisateur(s) connecté(s) ​localement pour autoriser 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
doc/systeme/pam.1453999483.txt.gz · Dernière modification: 28/01/2016 17:44 par milou

Pied de page des forums

Propulsé par FluxBB