\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{dim. oct. 3 15:45:06 CEST 2010}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={PAM},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Pluggable Authentication Modules},
CreationDate={D:20101003154506},
ModDate={D:20101003154506},
Keywords={pam;authentification;sécurité}
}}
\begin{document}
 
\begin{center}
{\Huge PAM }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Pluggable Authentication Modules}
 
\vspace{10mm}
 
\hspace{1mm}  \textbf{Linux-PAM} est un système de librairies qui manipulent les tâches d'authentification des services dans le système. La librairie fournis une API qui fournis un système d'authentification déféré.
\vspace{5mm} \\
 
 
\hspace{1mm}  La fonctionnalité principal de \textbf{PAM} est la nature de l'authentification qui est configurable dynamiquement. L'administrateur est libre de choisir comment les applications vont authentifier un utilisateur. La configuration individuelle peut être définie dans le fichier de configuration \textbf{/etc/pam.conf}. Alternativement, la configuration peut être définie dans des fichiers individuels dans \textbf{/etc/pam.d/}.
\vspace{5mm} \\
 
 
\hspace{1mm}  \textbf{Linux-PAM} sépare les tâches d'authentification en 4 groupes indépendants: gestion des comptes; gestion de l'authentification; gestion des mots de passe; gestion de session.
\vspace{5mm} \\
 
 
\hspace{1mm}  Le mécanisme \textbf{account} fournit une seule primitive: il vérifie si le compte demandé est disponible (si le compte n'est pas arrivé à expiration, si l'utilisateur est autorisé à se connecter à cette heure de la journée, etc.).
\vspace{5mm} \\
 
 
\hspace{1mm}  Le mécanisme \textbf{auth} fournit deux primitives; il assure l'authentification réelle, éventuellement en demandant et en vérifiant un mot de passe, et il définit des "certificats d'identité" tels que l'appartenance à un groupe ou des "tickets" kerberos.
\vspace{5mm} \\
 
 
\hspace{1mm}  Le mécanisme \textbf{password} fournit une seule primitive: il permet de mettre à jour le jeton d'authentification (en général un mot de passe), soit parce qu'il a expiré, soit parce que l'utilisateur souhaite le modifier.
\vspace{5mm} \\
 
 
\hspace{1mm}  Le mécanisme \textbf{session} fournit deux primitives: mise en place et fermeture de la session. Il est activé une fois qu'un utilisateur a été autorisé afin de lui permettre d'utiliser son compte. Il lui fournit certaines ressources et certains services, par exemple en montant son répertoire personnel, en rendant sa boîte aux lettres disponible, en lançant un agent ssh, etc.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Syntaxe du fichier de configuration }
 
\
 
\hspace{1mm}  Le format de chaque rêgle est une collection de tokens séparés par un espace:
\vspace{5mm} \\
\hspace{1mm}  \textbf{service type control module-path modeul-arguments}
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} service]{est typiquement le nom de l'application. Le service '\textbf{other}' est réservé pour définir les règles par défaut.}
\item[\hspace{1mm} type]{est le gestionnaire auquel la règle correspond ( account, auth, password, session ). Si le type est précédé par un '\textbf{-}', la librairie PAM ne loggera rien s'il n'est pas possible de charger le module s'il n'est pas présent dans le système.}
\item[\hspace{1mm} control]{indique le comportement de PAM-API si le module échoue dans sa tâche d'authentification. Il y'a 2 types de syntaxe: un simple mot clé, et une paire [value=action].}
\end{description}
 
\vspace{1cm}{\huge Les valeurs possibles }
 
\
 
\begin{description} \normalsize
\item[\hspace{6mm} required]{Retourne un échec mais seulement après que les modules stackés restant aient été invoqués.}
\item[\hspace{6mm} requisite]{identique à \textbf{required}, mais retourne le contrôle. La valeur de retour est associée avec le premier \textbf{required} ou \textbf{requisite} qui a échoué. Ce flag peut être utilisé comme protection contre la possibilité qu'un utilisateur ait l'opportunité d'entrer un mot de passe dans un environnement non sécurisé.}
\item[\hspace{6mm} sufficient]{Le succès d'un tel module est suffisant pour satisfaire aux requis de la pile de module (si un précédent \textbf{required} a échoué, celui-ci est ignoré). Si le module réussit, retourne le succès immédiatement sans essayer les autres modules.}
\item[\hspace{6mm} optional]{Le succès ou l'échec n'est pas important si c'est le seul module dans la pile.}
\item[\hspace{6mm} include]{inclue toutes les lignes d'un type donné depuis un fichier de configuration spécifié en argument.}
\item[\hspace{6mm} substack]{Identique à \textbf{include} mais diffère dans les actions \textbf{done} et \textbf{die} dans une sous pile qui n'ignorent pas le reste de la pile, mais seulement sur la sous pile.}
\item[\hspace{6mm} \texttt{[}value=action1 value2=action2 ...\texttt{]}]{où \textbf{valueN} correspond au code de retour de la fonction invoquée dans le module. peut être:\textbf{success, open\_err, symbol\_err, service\_err, system\_err, buf\_err, perm\_denied, auth\_err, cred\_insufficient, authinfo\_unavail, user\_unknown, maxtries, new\_authtok\_reqd, acct\_expired, session\_err, cred\_unavail, cred\_expired, cred\_err, no\_module\_data, conv\_err, authtok\_err, authtok\_recover\_err, authtok\_lock\_busy, authtok\_disable\_aging, try\_again, ignore, abort, authtok\_expired, module\_unknown, bad\_item, conv\_again, incomplete, et default}.}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{12mm} default]{implique toutes les valueN non mentionnées explicitement.}
\item[\hspace{12mm} actionN]{prend une des valeurs suivante:}
\item[\hspace{12mm} ignore]{Le status de retour ne contribut pas à retourner un code que l'application obtient.}
\item[\hspace{12mm} bad]{le code de retour indique que le module a échoué. Si c'est le premier module de la pile à échouer, ce status est utilisé pour toute la pile.}
\item[\hspace{12mm} die]{Idem à bad mais la pile de termine immédiatement.}
\item[\hspace{12mm} ok]{Ce code devrait contribuer directement au code de retour de toute la pile.}
\item[\hspace{12mm} done]{Idem à ok mais termine immédiatement la pile}
\item[\hspace{12mm} N]{(entier non signé) Idem à ok mais saute immédiatement au N-ème module suivant dans la pile}
\item[\hspace{12mm} reset]{Efface toute trace de l'état du module et commence avec le module suivant.}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{6mm} required]{[success=ok new\_authtok\_reqd=ok ignore=ignore default=bad]}
\item[\hspace{6mm} requisite]{[success=ok new\_authtok\_reqd=ok ignore=ignore default=die]}
\item[\hspace{6mm} sufficient]{[success=done new\_authtok\_reqd=done default=ignore]}
\item[\hspace{6mm} optional]{[success=done new\_authtok\_reqd=ok default=ignore]}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{1mm} module-path]{est soit le nom de fichier utilisé par l'application (comence par un '/'), soit un chemin relatif à l'emplacement des modules: \textbf{/lib/security} ou \textbf{/lib64/security/}}
\item[\hspace{1mm} module-arguments]{est une liste de tokens séparés par un espace ou entre [] si des arguments contiennent des espaces, qui peut être utilisé pour modifier le fonctionnement d'un PAM.}
\end{description}
 
\vspace{1cm}{\huge Exemple de configuration }
 
\
 
\hspace{1mm} Un système considéré sécurisé a une entrée other raisonnablement sécurisé: \\
\hspace{1mm} \textbf{other auth required pam\_deny.so} \\
\hspace{1mm} \textbf{other account required pam\_deny.so} \\
\hspace{1mm} \textbf{other password required pam\_deny.so} \\
\hspace{1mm} \textbf{other session required pam\_deny.so} \\
\hspace{1mm} l'exemple suivant fournit des alertes utiles pour les administrateurs: \\
\hspace{1mm} \textbf{other auth required pam\_warn.so} \\
\hspace{1mm} \textbf{other password required pam\_warn.so} \\
\hspace{1mm} exemple classique sur les machines moins sensible dans /etc/pam.d/other: \\
\hspace{1mm} \textbf{auth required pam\_unix.so} \\
\hspace{1mm} \textbf{account required pam\_unix.so} \\
\hspace{1mm} \textbf{password required pam\_unix.so} \\
\hspace{1mm} \textbf{session required pam\_unix.so} \\
\hspace{1mm} Il est conseillé d'avoir une entrée other sécurisée: \\
\hspace{1mm} \textbf{auth required pam\_deny.so} \\
\hspace{1mm} \textbf{auth required pam\_warn.so} \\
\hspace{1mm} \textbf{account required pam\_deny.so} \\
\hspace{1mm} \textbf{account required pam\_warn.so} \\
\hspace{1mm} \textbf{password required pam\_deny.so} \\
\hspace{1mm} \textbf{password required pam\_warn.so} \\
\hspace{1mm} \textbf{session required pam\_deny.so} \\
\hspace{1mm} \textbf{session required pam\_warn.so} \\
\end{flushleft}
\end{document}
