             Guide pratique de l'authentification des utilisateurs

  Version franaise de : User Authentication HOWTO

  Peter Hernberg

  Raphal Semeteys

   <raphael semeteys CHEZ wanadoo POINT fr>

   Adaptation franaise

   Version : 0.9.fr.0.1

   17 fvrier 2005

   +------------------------------------------------------------------------+
   | Historique des versions                                                |
   |------------------------------------------------------------------------|
   | Version 0.9.fr.0.1              | 2005-02-17            | rcs          |
   |------------------------------------------------------------------------|
   | Adaptation franaise. Passage de SGML DocBook  XML DocBook.           |
   |------------------------------------------------------------------------|
   | Version 0.9                     | 2004-04-03            | fl           |
   |------------------------------------------------------------------------|
   | Mise  jour des liens externes. Updated external links                 |
   |------------------------------------------------------------------------|
   | Version 0.8                     | 2003-02-20            | fl           |
   |------------------------------------------------------------------------|
   | Modifications de langage et diverses corrections mineures. Language    |
   | changes, various small fixes                                           |
   |------------------------------------------------------------------------|
   | Version 0.5                     | 2000-05-15            | ph           |
   |------------------------------------------------------------------------|
   | Ajout d'une section sur la scurisation de PAM et d'une autre sur les  |
   | ressources. Added section on securing pam, added resources section     |
   |------------------------------------------------------------------------|
   | Version 0.1                     | 2000-05-02            | ph           |
   |------------------------------------------------------------------------|
   | Version initiale. Initial version                                      |
   +------------------------------------------------------------------------+

   Rsum

   Ce guide pratique explique comment l'information sur les utilisateurs et
   les groupes est stocke, comment les utilisateurs sont authentifis sur un
   systme Linux (PAM) et comment scuriser l'authentification des
   utilisateurs sur votre systme.

   --------------------------------------------------------------------------

   Table des matires

   Introduction

                Comment ce document a vu le jour

                Nouvelles versions de ce document

                Commentaires et corrections

                Droits d'utilisation

                Remerciements

                Pr requis du lecteur

   Comment l'information des utilisateurs est stocke sur votre systme

                /etc/passwd

                Mots de passes Shadow

                /etc/group et /etc/gshadow

                Mots de passes encrypts par MD5

                Organiser le dsordre

   PAM (Modules enfichables d'authentification ou Pluggable Authentication
   Modules)

                Le pourquoi

                Le quoi

                Le comment

                Obtenir de l'information complmentaire

   Scuriser l'authentification des utilisateurs

                Un fichier /etc/pam.d/other scuris

                Dsactiver la connexion des utilisateurs avec des mots de
                passes vides

                Dsactiver les services inutiliss

                Outils de piratage de mots de passes

                Mots de passes Shadow et MD5

   Exemple d'utilisation

                Apache + mod_auth_pam

                Notre exemple

                Installation de mod_auth_pam

                Configuration de PAM

                Configuration d'Apache

                Test de notre configuration

   Ressources

                PAM

                Scurit en gnral

                Pages man

   Conclusion

Introduction

  Comment ce document a vu le jour

   Alors que je tentais d'ajouter des services rseaux (pour la plupart
   inutiles :)  mon rseau personnel, j'ai t confront  de nombreuses
   reprises au problme de l'authentification. J'ai donc dcid de comprendre
   comment l'authentification fonctionne sur Linux, d'crire un guide
   pratique et d'en faire mon projet de fin d'tudes. J'espre que ce
   document vous aidera  comprendre cet aspect de l'administration systme
   souvent oubli mais nanmoins trs important.

  Nouvelles versions de ce document

   Vous trouverez la plus rcente version franaise de ce document 
   l'adresse :
   http://www.traduc.org/docs/howto/lecture/User-Authentication-HOWTO.html
   [http://www.traduc.org/docs/howto/lecture/User-Authentication-HOWTO.html].

   La plus rcente version de la version originale de ce document est
   disponible  l'adresse : http://www.linuxdoc.org
   [http://www.linuxdoc.org].

  Commentaires et corrections

   Merci de faire parvenir en anglais  l'auteur vos questions et
   commentaires relatifs  la version originale de ce document  l'adresse
   <petehern CHEZ yahoo POINT com>.

   N'hsitez pas  faire parvenir tout commentaire relatif  la version
   franaise de ce document  <commentaires CHEZ traduc POINT org> en
   prcisant sont titre, sa date et sa version.

  Droits d'utilisation

    2000 Peter Hernberg pour la version originale.

    2005 Raphal Semeteys pour la version franaise.

   Ce manuel peut tre reproduit en tout ou partie, sans frais, en respectant
   les restrictions suivantes :

     * Le copyright ci-dessus et cette prsente notice doivent tre inclus
       sans modification sur toute copie, partielle ou complte.

     * Toute traduction ou travail driv doit tre approuv par crit par
       l'auteur avant distribution.

     * Si vous ne distribuez qu'une partie de ce document, vous devez inclure
       les instructions ncessaires pour se procurer la totalit de ce guide
       pratique et offrir un moyen d'obtenir une version complte.

     * De courts extraits peuvent tre reproduits  titre de citation sans
       cette notice si l'origine du document est correctement indique. Des
       exceptions  ces rgles peuvent tre autorises pour l'enseignement :
       crivez  l'auteur et demandez ce qu'il en est. Ces restrictions sont
       destines  nous protger en tant qu'auteurs, et non pas pour vous
       gner en tant qu'enseignants ou lves. Tout le code source inclus
       dans ce document (outre le XML dans lequel est crit ce document) est
       plac sous la Licence Publique Gnrale GNU, dont vous trouverez une
       copie sur http://www.fsf.org/licensing/licenses/gpl.html
       [http://www.fsf.org/licensing/licenses/gpl.html].

  Remerciements

   Merci  ma famille de me supporter depuis 18 ans. Merci aux gens de Debian
   de fournir une distribution si sympa avec laquelle je peux jouer. Merci 
   CGR [http://www.cgr.org/] de me payer  tre un geek. Merci  Sandy Harris
   pour ses utiles suggestions. Et finalement j'aimerai remercier les
   fabricants de nouilles chinoises, car je ne sais comment je vivrais sans.

  Pr requis du lecteur

   Je considre dans la suite de ce document que le lecteur est  l'aise avec
   tout ce qui touche  l'excution en ligne de commandes et l'dition de
   fichiers de configuration.

Comment l'information des utilisateurs est stocke sur votre systme

  /etc/passwd

   Dans pratiquement toutes les distributions Linux (ainsi que les versions
   commerciales d'Unix), l'information sur les utilisateurs est stocke dans
   /etc/passwd, un fichier texte contenant le login de chaque utilisateur,
   son mot de passe encrypt, un identifiant numrique unique d'utilisateur
   (appel l'uid), un identifiant numrique unique de groupe (appel le gid),
   un champ optionnel de commentaire (contenant gnralement des choses comme
   le nom, le numro de tlphone, etc.), le rpertoire personnel et le shell
   prfr. Une entre typique de /etc/passwd ressemble  ceci :

   pete:K3xcO1Qnx8LFN:1000:1000:Peter Hernberg,,,1-800-FOOBAR:/home/pete:/bin/bash


   Comme vous pouvez le voir, c'est plutt simple. Chaque entre contient les
   six champs dcrits plus haut, avec ":" comme sparateur. Si
   l'authentification des utilisateurs tait aussi simple que cela, il n'y
   aurait pas besoin de ce guide.

  Mots de passes Shadow

   En observant votre /etc/passwd, il y a des chances que vous ayez vu
   quelque chose comme ceci :

   pete:x:1000:1000:Peter Hernberg,,,1-800-FOOBAR:/home/pete:/bin/bash


   O est donc pass le mot de passe encrypt ? Avant de rpondre, une petite
   explication s'impose.

   Le ficher /etc/passwd, qui contient l'information sur tous les
   utilisateurs y compris leurs mots de passes encrypts, est consultable par
   tous, ce qui rend capable n'importe quel utilisateur d'obtenir le mot de
   passe encrypt de n'importe qui sur le systme. Bien que les mots de
   passes soient encrypts, des programmes de piratage sont largement
   disponibles. Les mots de passes Shadow ont t dvelopps afin de
   combattre cette menace grandissante.

   Lorsque les mots de passes Shadow sont activs sur un systme, le champ
   correspondant au mot de passe dans /etc/passwd est remplac par un "x" et
   le vritable mot de passe encrypt est stock dans /etc/shadow. Comme
   /etc/shadow est uniquement consultable par l'utilisateur root, les
   utilisateurs malicieux ne peuvent pas pirater les mots de passes des
   autres utilisateurs. Chaque entre de /etc/shadow contient le login de
   l'utilisateur, son mot de passe crypt et un certain nombre de champs lis
    l'expiration du mot de passe. Une entre typique ressemble  ceci :

     pete:/3GJllg1o4152:11009:0:99999:7:::


  /etc/group et /etc/gshadow

   L'information sur les groupes est stocke dans /etc/group. Le format est
   similaire  celui de /etc/passwd, avec chaque entre contenant des champs
   pour le nom du groupe, le mot de passe, l'identifiant numrique (gid) et
   une liste de membres du groupe spars par des virgules. Une entre
   typique de /etc/group ressemble  ceci :

    pasta:x:103:spagetti,fettucini,linguine,vermicelli


   Comme vous pouvez le voir, il est galement possible d'utiliser des mots
   de passes Shadow. Bien que les groupes ne disposent pratiquement jamais de
   mots de passes propres, cela ne cote rien de stocker les mots de passes
   Shadow des groupes dans /etc/gshadow.

  Mots de passes encrypts par MD5

   Traditionnellement, les mots de passes Unix sont encrypts avec la
   fonction standard crypt(). (Pour plus d'information sur la fonction
   crypt(), se reporter  la page man crypt(3).) Au fur et  mesure que les
   ordinateurs sont devenus plus puissants, les mots de passes encrypts sont
   devenus plus faciles  pirater. Et avec l'mergence d'Internet, des outils
   de piratage utilisant la puissance de traitement de plusieurs ordinateurs
   en rseau ont fait leur apparition. De nombreuses "nouvelles"
   distributions offrent la possibilit d'encrypter les mots de passes avec
   l'algorithme de hashage MD5, qui est plus puissant. (Pour plus
   d'information sur l'algorithme de hashage MD5, se reporter au RFC 1321.)
   Bien que les mots de passes MD5 n'liminent pas la menace du piratage, ils
   rendent cette tche beaucoup plus difficile.

  Organiser le dsordre

   Comme vous pouvez le voir, il existe plusieurs manires diffrentes de
   stocker l'information d'authentification des utilisateurs sur votre
   systme (mots de passes Shadow sans encryptage MD5, mots de passes
   /etc/passwd avec encryptage MD5, etc.). Comment des programmes comme login
   et su savent-ils comment vrifier votre mot de passe ? Pire encore, et si
   vous vouliez modifier la manire dont les mots de passes sont stocks dans
   votre systme ? Comment les programmes ncessitant votre mot de passe
   sauront-ils que les mots de passes sont dsormais stocks diffremment ?
   La solution est PAM.

PAM (Modules enfichables d'authentification ou Pluggable Authentication Modules)

   Les modules enfichables d'authentification sont au cur de toute
   distribution moderne de Linux.

  Le pourquoi

   Au tout dbut de Linux, si un programme comme su, passwd, login ou xlock,
   avait besoin d'authentifier un utilisateur, il lisait simplement
   l'information ncessaire dans /etc/passwd. Pour modifier le mot de passe
   il ditait simplement /etc/passwd. Cette mthode simple mais maladroite
   posait de nombreux problmes aux administrateurs systmes et aux
   dveloppeurs d'applications. Une fois MD5 et les mots de passes Shadow
   devenus incroyablement populaires, chaque programme ncessitant
   l'authentification d'un utilisateur devait savoir rcuprer l'information
   approprie, tout en tant capable de grer de nombreuses configurations
   diffrentes. Lorsque vous vouliez modifier la configuration de
   l'authentification des utilisateurs, tous ces programmes devaient tre
   recompils. PAM limine ce dsordre en permettant aux programmes
   d'authentifier les utilisateurs de manire transparente, indpendamment de
   la mthode de stockage de l'information.

  Le quoi

   Voici un extrait du Guide administrateur systme Linux-PAM (version
   anglaise)
   [http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/pam.html] : "Le
   projet Linux-PAM a pour objet de sparer le dveloppement de logiciels
   d'autorisation de celui de mthodes d'authentification scurises. Ceci
   est ralis en fournissant une bibliothque de fonctions utilisables par
   une application pour demander qu'un utilisateur soit authentifi". Avec
   PAM, peu importe que votre mot de passe soit stock dans /etc/passwd ou
   sur un serveur  Hong Kong. Lorsqu'un programme a besoin d'authentifier un
   utilisateur, PAM fournit une bibliothque contenant les fonctions
   appropries  la mthode d'authentification utilise. Comme cette
   bibliothque est charge dynamiquement, le changement de mthode
   d'authentification peut tre ralis par simple modification d'un fichier
   de configuration.

   La souplesse est un des plus grands atouts de PAM. PAM peut tre utilis,
   par exemple, pour refuser  certains programmes le droit d'authentifier
   les utilisateurs, pour n'autoriser que certains utilisateurs  tre
   authentifis, pour mettre des notifications lorsque certains programmes
   tentent de raliser une authentification ou mme pour priver tous les
   utilisateurs du droit de se connecter. La conception modulaire de PAM vous
   donne le contrle total sur comment sont authentifis les utilisateurs.

    Les distributions qui supportent PAM

   A peu prs toutes les distributions supportent PAM depuis longtemps. En
   voici une liste non exhaustive :

     * Redhat depuis la version 5.0

     * Mandrake depuis la version 5.2

     * Debian depuis la version 2.1 (support partiel dans la 2.1 -- support
       total depuis la 2.2)

     * Caldera depuis la version 1.3

     * Turbolinux depuis la version 3.6

     * SuSE depuis la version 6.2

   Cette liste est certainement incomplte et sans doute errone.
   J'apprcierai que vous envoyiez toute correction ou ajout  cette liste 
   l'adresse <petehern CHEZ yahoo POINT com>.

    Installer PAM

   Installer PAM en partant de zro est un long processus hors du primtre
   de ce guide pratique. Si PAM n'est pas install sur votre systme, vous
   utilisez probablement une version si ancienne de votre distribution qu'il
   y a de nombreuses autres raisons de la mettre  jour. Si vous voulez
   vraiment faire l'installation vous-mme, alors vous n'tes certainement
   pas le genre de personne que je peux aider. Pour toutes ces raisons, je
   considrerai que PAM est dj install sur votre systme.

  Le comment

   Assez parl, rentrons dans le vif du sujet.

    Fichiers de configuration de PAM

   Les fichiers de configuration de PAM sont stocks dans le rpertoire
   /etc/pam.d/. (Si vous n'avez pas de rpertoire /etc/pam.d/, ne vous en
   faites pas, je traiterai ce cas dans la section suivante.) Jetons-y un
   coup d'il.

   ~$ cd /etc/pam.d
   /etc/pam.d/$ ls
   chfn  chsh    login   other   passwd  su      xlock
   /etc/pam.d/$


   Le nombre de fichiers que vous trouverez dans ce rpertoire varie en
   fonction de ce qui est install sur votre systme. Quoi qu'il en soit,
   vous avez remarqu l'existence d'un fichier pour chaque programme de votre
   systme qui authentifie les utilisateurs. Comme vous l'avez probablement
   devin, chaque fichier contient la configuration PAM pour le programme
   dont il porte le nom (sauf pour le fichier other dont nous allons parler
   dans un petit moment). Regardons le fichier de configuration PAM pour
   login (j'ai condens le fichier par souci de simplicit) :

   /etc/pam.d/$ cat login
   # Configuration PAM pour login
   auth       requisite  pam_securetty.so
   auth       required   pam_nologin.so
   auth       required   pam_env.so
   auth       required   pam_unix.so nullok
   account    required   pam_unix.so
   session    required   pam_unix.so
   session    optional   pam_lastlog.so
   password   required   pam_unix.so nullok obscure min=4 max=8


   Mais avant d'analyser ce fichier, je dois mentionner une petite chose.

    Remarque

   Un petit pourcentage des lecteurs doit probablement se dire "Oh non ! Je
   n'ai pas de rpertoire /etc/pam.d ! Votre liste affirme que ma
   distribution intgre PAM, mais je ne retrouve pas ce rpertoire. Sans PAM,
   ma vie n'a plus de sens ! Que puis-je faire ?". Ne vous inquitez pas,
   tout n'est pas perdu. Si vous savez que votre distribution intgre PAM
   mais que vous n'avez aucun rpertoire /etc/pam.d/, alors votre
   configuration PAM est stocke dans /etc/pam.conf. Plutt que d'tre
   rpartie sur plusieurs fichiers, l'intgralit de votre configuration PAM
   est stocke dans un fichier unique. Cela modifie lgrement la
   configuration de PAM mais les ajustements adquats sont expliqus dans la
   section 3.3.4.

    Syntaxe de configuration

   Les fichiers de configuration PAM ont la syntaxe suivante :

   type  contrle  chemin-vers-le-module   arguments-du-module


   En prenant comme exemple le fichier de configuration de login (voir plus
   haut), regardons de plus prs cette syntaxe :

   Elments de configuration PAM

   type

           L'lment type prcise  PAM quel type d'authentification utiliser
           pour un module donn. Les modules de mme types peuvent tre
           chans, imposant ainsi  l'utilisateur de satisfaire  de
           multiples exigences pour pouvoir tre authentifi. PAM reconnat
           quatre types :

                account

                        Dtermine si l'utilisateur est autoris  accder au
                        service, si son mot de passe a expir, etc.

                auth

                        Dtermine si l'utilisateur est bien celui qu'il
                        prtend tre, gnralement via un mot de passe, mais
                        ventuellement via un moyen plus sophistiqu comme la
                        biomtrie.

                password

                        Fournit  l'utilisateur un mcanisme pour modifier
                        son authentification. Une fois encore il s'agit
                        gnralement de son mot de passe.

                session

                        Les actions  raliser avant et/ou aprs
                        l'authentification de l'utilisateur. Cela peut
                        inclure des choses comme monter/dmonter le
                        rpertoire personnel de l'utilisateur, journaliser la
                        connexion/dconnexion et restreindre les services mis
                         disposition de l'utilisateur.

           Dans le fichier de configuration de login, on trouve au moins une
           entre pour chacun de ces types. Comme il s'agit du programme qui
           permet  l'utilisateur de se connecter, il est comprhensible
           qu'il ncessite d'accder  tous les types d'authentification.

   contrle

           L'lment contrle indique  PAM ce qu'il faut faire lorsque
           l'authentification ralise par ce module choue. PAM reconnat
           quatre types de contrles :

                requisite

                        Tout chec retourn par le module implique le refus
                        immdiat de l'authentification.

                required

                        L'chec implique galement le refus de
                        l'authentification, mais PAM passe quand mme par
                        tous les autres modules lists pour ce service avant
                        de refuser dfinitivement l'authentification.

                sufficient

                        Si le retour du module est un succs, PAM accordera
                        l'authentification, mme si un module obligatoire
                        (contrle required) prcdent a chou.

                optional

                        Le fait que le module choue ou non n'a d'impact
                        uniquement dans le cas o il s'agit du seul module de
                        ce type configur pour le service.

           Dans le fichier de configuration de login, on retrouve
           pratiquement tous les types de contrles. pam_unix.so (le module
           principal d'authentification) est majoritaire parmi les modules
           requis (required), pam_securetty.so (qui s'assure que
           l'utilisateur se connecte) est le seul module obligatoire et
           pam_lastlog.so (qui rcupre les informations sur la connexion le
           plus rcente de l'utilisateur) est le seul module optionnel.

   chemin-vers-le-module

           Cet lment indique  PAM quel module utiliser et (ventuellement)
           o le trouver. La plupart des configurations contiennent
           uniquement le nom du module, comme c'est le cas dans notre fichier
           de configuration de login. Dans ce cas, PAM recherche les modules
           dans le rpertoire par dfaut des modules PAM, normalement
           /usr/lib/security. Cependant, si votre distribution Linux est
           conforme au standard FHS (Filesystem Hierarchy Standard), les
           modules PAM peuvent tre trouvs dans /lib/security.

   arguments-du-module

           Il s'agit des arguments  transmettre au module. Chaque module
           possde ses propres arguments. Par exemple, dans notre fichier de
           configuration de login, l'argument "nullok" ("null ok") pass au
           module pam_unix.so indique qu'un mot de passe vide ("null") est
           acceptable ("ok").

    Fichier de configuration pam.conf

   Si votre configuration PAM est stocke dans /etc/pam.conf plutt que dans
   /etc/pam.d/, les lignes de configuration sont un peu diffrentes. Plutt
   que d'avoir un fichier de configuration par service, toutes les
   configurations sont stockes dans /etc/pam.conf avec le nom du service
   comme premier lment de la ligne. Par exemple, la ligne suivante dans
   /etc/pam.d/login:

     auth    required    pam_unix.so nullok


   deviendra celle-ci dans /etc/pam.conf :

     login   auth    required    pam_unix.so nullok


   A part cette diffrence mineure, le reste de la syntaxe de configuration
   PAM s'applique.

  Obtenir de l'information complmentaire

   Pour plus d'information concernant la configuration de PAM et la rfrence
   complte des modules PAM, consultez le Guide administrateur systme
   Linux-PAM (version anglaise)
   [http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/pam.html]. Ce
   guide fait office de rfrence exhaustive et  jour au sujet de la
   configuration de PAM.

Scuriser l'authentification des utilisateurs

   De nombreuses distributions intgrent une authentification des
   utilisateurs qui n'est pas scurise de manire adquate. Cette section
   prsente certaines manires de scuriser cette authentification sur votre
   systme. Bien que faire ce qui est dcrit plus bas rende votre systme
   plus scuris, n'ayez cependant pas la navet de penser que cela vous
   rende pour autant invulnrable.

  Un fichier /etc/pam.d/other scuris

   Chaque fichier plac dans /etc/pam.d/ contient la configuration relative 
   un service donn. L'exception  la rgle est le fichier /etc/pam.d/other.
   Ce fichier contient la configuration  utiliser pour tout service ne
   disposant pas de son propre fichier de configuration. Par exemple, si le
   service (imaginaire) xyz tentait une authentification, PAM chercherait un
   fichier /etc/pam.d/xyz. N'en trouvant aucun, l'authentification pour xyz
   serait dtermine par le fichier /etc/pam.d/other. Comme /etc/pam.d/other
   est la configuration utilise en dernier recours, il est important qu'elle
   soit scurise. Nous allons tudier deux configurations de
   /etc/pam.d/other, l'une quasi-paranoaque et l'autre plus permissive.

    Une configuration paranoaque

   Voici une configuration paranoaque de /etc/pam.d/other :

     auth            required    pam_deny.so
     auth            required    pam_warn.so
     account         required    pam_deny.so
     account         required    pam_warn.so
     password    required        pam_deny.so
     password    required        pam_warn.so
     session         required    pam_deny.so
     session         required    pam_warn.so


   Dans cette configuration, lorsqu'un service inconnu tente d'accder 
   n'importe lequel des quatre types de configuration, PAM refuse d'abord
   l'authentification (via le module pam_deny.so) et journalise ensuite une
   alerte dans syslog (via le module pam_warn.so). A moins d'un bogue dans
   PAM, cette configuration est fortement scurise. Le seul problme est que
   cela peut causer des problmes si jamais vous effacez par accident le
   fichier de configuration d'un autre service. Si votre fichier
   /etc/pam.d/login est effac par erreur, plus personne ne pourra plus se
   connecter !

    Une configuration plus permissive

   Voici une configuration moins vicieuse :

     auth            required    pam_unix.so
     auth            required    pam_warn.so
     account         required    pam_unix.so
     account         required    pam_warn.so
     password    required        pam_deny.so
     password    required        pam_warn.so
     session         required    pam_unix.so
     session         required    pam_warn.so


   Cette configuration autorisera un service inconnu  authentifier (via le
   module pam_unix.so), sans pour autant l'autoriser  modifier le mot de
   passe de l'utilisateur. Bien que cela permette l'authentification par des
   services inconnus, une alerte est gnre dans le journal syslog  chaque
   fois qu'un tel service tente une authentification.

    Choix de la configuration /etc/pam.d/other

   A moins que vous ayez une trs bonne raison de ne pas le faire, je vous
   recommande fortement d'implmenter la premire configuration de
   /etc/pam.d/other. C'est un bon rflexe d'tre "scuris par dfaut". Si
   jamais vous avez vraiment besoin d'accorder  un nouveau service le droit
   d'authentification, vous pouvez tout simplement crer un nouveau fichier
   de configuration PAM pour ce service.

  Dsactiver la connexion des utilisateurs avec des mots de passes vides

   Sur la plupart des systmes Linux il existe un certain nombre de comptes
   utilisateurs "factices" utiliss pour attribuer des droits  des services
   systmes comme serveurs ftp, Web ou les passerelles de messagerie.
   Disposer de ces comptes permet  votre systme d'tre plus scuris car si
   ces services sont compromis, un utilisateur malveillant n'obtiendra que
   les droits limits du compte factice, plutt que les droits tendus d'un
   service systme tournant sous root. Cependant, donner le droit de
   connexion  ces comptes constitue une faille de scurit car ils ont
   gnralement des mots de passes vides. L'option de configuration qui
   active les mots de passes vides est l'argument "nullok" transmis au
   module. Vous prfrerez enlever cet argument de tous les modules de type
   "auth" des services autorisant les connexions. Il s'agit habituellement du
   service login, mais cela peut galement inclure des services comme rlogin
   et ssh. Ceci implique que la ligne suivante dans /etc/pam.d/login :

    auth         required        pam_unix.so     nullok


   doive tre transforme en :

    auth         required        pam_unix.so


  Dsactiver les services inutiliss

   En regardant les fichiers situs dans /etc/pam.d/, vous remarquerez
   probablement la prsence de fichiers de configuration pour un certain
   nombre de programmes que vous n'utilisez pas, voire mme certains dont
   vous n'avez jamais entendu parler. Bien que le fait d'accorder
   l'authentification  ces services ne cre probablement pas d'norme trou
   de scurit, vous feriez mieux de leur refuser ce droit. Le meilleur moyen
   de dsactiver l'authentification PAM pour ces programmes est de renommer
   ces fichiers. Ne trouvant pas le fichier nomm d'aprs le service, PAM
   appliquera la configuration par dfaut /etc/pam.d/other qui est, a priori,
   trs scurise. Si plus tard vous vous rendez compte avoir besoin d'un de
   ces programmes, vous pouvez tout simplement redonner au fichier son nom
   initial et tout fonctionnera comme c'est sens le faire.

  Outils de piratage de mots de passes

   Les outils de piratage de mots de passes peuvent certes tre utiliss par
   des utilisateurs malveillants pour mettre  mal un systme, mais peuvent
   aussi tre utiliss par les administrateurs systmes pour vrifier le
   niveau de scurit des mots de passes sur leurs systmes. Les deux outils
   de piratage de mots de passes les plus utiliss sont "crack" et "John the
   Ripper". "Crack" est probablement dj intgr  votre distribution
   favorite. "John the Ripper" peut tre tlcharg sur
   http://www.openwall.com/john/ [http://www.openwall.com/john/]. Lancez les
   outils sur votre base de mots de passes et vous serez probablement surpris
   par le rsultat.

   En outre, il existe un module PAM qui utilise la bibliothque de "crack"
   pour vrifier le niveau de scurit du mot de passe d'un utilisateur
   lorsqu'il est modifi. Lorsque ce module est install, l'utilisateur peut
   modifier son mot de passe uniquement lorsqu'il satisfait aux exigences
   minimales de scurit.

  Mots de passes Shadow et MD5

   Comme dj dit dans la premire section de ce document, les mots de passes
   Shadow et MD5 vous permettent de scuriser votre systme. Lors de la
   procdure d'installation, la plupart des distributions modernes vous
   demanderont si vous dsirez utiliser les mots de passes MD5 et/ou Shadow.
   A moins que vous ayez une bonne raison de ne pas le faire, vous devriez
   activer ces options. Le processus de conversion des mots de passe non MD5
   et non Shadow est compliqu et hors du primtre de ce document. Le Guide
   pratique des mots de passes Shadow (version anglaise)
   [http://www.tldp.org/HOWTO/Shadow-Password-HOWTO.html] n'est plus vraiment
    jour mais peut tout de mme s'avrer utile sur le sujet.

Exemple d'utilisation

   Dans cette section, je vais illustrer ce qui a t prsent dans la
   section prcdente  l'aide d'un exemple simple d'utilisation.

  Apache + mod_auth_pam

   A titre d'exemple, nous allons installer et configurer mod_auth_pam, un
   module Apache permet d'authentifier les utilisateurs de votre serveur Web
   en passant par PAM. Dans la suite de cet exemple je considrerai qu'Apache
   est dj install. Si ce n'est pas le cas, vous devriez tre capables de
   trouver les paquetages d'installation auprs de votre distributeur.

  Notre exemple

   L'objectif est de configurer sur notre serveur Web une zone prive, le
   rpertoire famille/, ncessitant une authentification des utilisateurs via
   PAM. Ce rpertoire contient des informations familiales rserves
   uniquement aux membres du groupe "famille".

  Installation de mod_auth_pam

   Tout d'abord, vous devez tlcharger mod_auth_pam depuis
   http://pam.sourceforge.net/mod_auth_pam/
   [http://pam.sourceforge.net/mod_auth_pam/]. Utilisez les commandes
   suivantes pour compiler mod_auth_pam (vous devez tre connects en tant
   que root) :

    ~# tar xzf mod_auth_pam.tar.gz
    ~# cd mod_auth_pam-1.0a
    ~/mod_auth_pam-1.0a# make
    ~/mod_auth_pam-1.0a# make install


   Si vous avec des problmes lors de l'installation du module mod_auth_pam,
   assurez-vous d'avoir bien install le paquetage apache-dev de votre
   distribution. Une fois le module install vous devrez redmarrer Apache.
   Cela est habituellement fait par la commande suivante (encore une fois
   vous devez tre root) :

    ~# /etc/init.d/apache restart


  Configuration de PAM

   La configuration PAM pour Apache est stocke dans /etc/pam.d/httpd. La
   configuration par dfaut (installe en mme temps que mod_auth_pam) est
   scurise mais utilise un module (pam_pwdb.so) qui est indisponible sur de
   nombreux systmes. (En outre, configurer ce module  partir de zro sera
   une vraie partie de plaisir !) En conclusion, effacez le fichier
   /etc/pam.d/httpd et crez en un nouveau.

    Dcider comment configurer PAM

   Si nous dsirons configurer comment PAM traitera les requtes
   d'authentification d'Apache, nous devons dterminer exactement ce que PAM
   va vrifier. Tout d'abord, nous voulons que PAM vrifie que le mot de
   passe de l'utilisateur est identique  celui stock au niveau du systme.
   Cela ressemble au type "auth" et au module pam_unix.so. Nous
   positionnerons le contrle du module  "required", ainsi
   l'authentification chouera en cas de mot de passe incorrect. Voici  quoi
   ressemblera la premire ligne de notre fichier /etc/pam.d/httpd :

      auth       required        pam_unix.so


   Ensuite, nous devons nous assurer que le compte de l'utilisateur est
   valide (i.e. son mot de passe n'a pas expir ou tout autre problme de ce
   genre). Il s'agit du type "account", qui est galement fourni par le
   module pam_unix.so. De mme, nous positionnerons le contrle du module 
   "required". Aprs avoir ajout cette ligne, notre fichier de configuration
   /etc/pam.d/httpd ressemble  ceci :

      auth       required        pam_unix.so
      account    required        pam_unix.so


   Ce n'est pas trs sophistiqu mais cela fonctionne. C'est une bonne base
   de dpart pour configurer des services PAM.

  Configuration d'Apache

   Maintenant que PAM est configur pour authentifier les requtes d'Apache,
   nous allons configurer Apache afin d'utiliser PAM pour grer l'accs au
   rpertoire famille/. Pour ce faire, ajoutez les lignes suivantes  votre
   fichier httpd.conf (habituellement stock dans le rpertoire /etc/apache/
   ou /etc/httpd) :

     <Directory /var/www/famille>
     AuthPAM_Enabled on
     AllowOverride None
     AuthName "Secrets de famille"
     AuthType "basic"
     require group famille
     </Directory>


   Il se peut que vous ayez  remplacer /var/www/ par l'emplacement par
   dfaut de vos documents Web, qui est souvent /home/httpd/. Quel que soit
   le rpertoire concern, vous devez y crer le sous rpertoire famille.

   Avant de tester notre configuration, je vais prendre quelques minutes pour
   expliquer la configuration Apache que vous venez de raliser. La directive
   <Directory> est utilise pour encapsuler des donnes de configuration pour
   ce rpertoire. A l'intrieur de cette directive, nous avons activ
   l'authentification PAM ("AuthPAM_enabled on"), dsactiv la surcharge de
   la configuration ("AllowOverride none"), nomm la zone d'authentification
   "Secrets de famille" (AuthName "Secrets de famille"), positionn le type
   de l'authentification HTTP (et non l'authentification PAM)  la valeur par
   dfaut ("AuthType "basic"") et restreint l'accs au groupe "famille"
   ("require group famille").

  Test de notre configuration

   Maintenant que tout est correctement configur, il est temps d'admirer
   notre succs. Lancez votre navigateur favori et rendez vous 
   http://votre-domaine/famille/ (en remplaant votre-domaine par votre nom
   de domaine). Ca y est, vous disposez dsormais d'un systme
   d'authentification des utilisateurs !

Ressources

   Il existe un certain nombre de ressources, en ligne ou pas, o vous
   pourrez trouver de l'information concernant l'authentification des
   utilisateurs. Si vous connaissez des ressources susceptibles d'tre
   ajoutes  cette liste, envoyez moi un message  l'adresse <petehern CHEZ
   yahoo POINT com>.

  PAM

     * Guide administrateur systme Linux-PAM (version anglaise)
       [http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/pam.html]

     * Manuel de dveloppement de module Linux-PAM (version anglaise)
       [http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/pam_modules.html]

     * Manuel de dveloppement d'application Linux-PAM (version anglaise)
       [http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/pam_appl.html]

  Scurit en gnral

     * linuxsecurity.com [http://www.linuxsecurity.com/]

     * securitywatch.com [http://www.securitywatch.com]

     * Guide pratique de la scurit
       [http://www.traduc.org/docs/howto/lecture/Security-HOWTO.html]

     * Packetstorm [http://www.packetstormsecurity.org]

  Pages man

   Beaucoup d'information peut tre recueillie dans les pages du manuel de
   votre systme. Ci suivent quelques pages man relatives 
   l'authentification des utilisateurs. Le nombre entre parenthses se rfre
    la section concerne de la page man. Par exemple, pour visualiser la
   page man passwd(5), vous devez entrer man 5 passwd.

     * passwd(5)

     * crypt(3)

     * pam.d(5)

     * group(5)

     * shadow(5)

Conclusion

   J'espre que vous avez trouv ce guide utile. Faites moi part de toute
   question, commentaire ou suggestion. Vous pouvez me contacter  l'adresse
   <petehern CHEZ yahoo POINT com>.

