Guide pratique de l'authentification des utilisateurs

Version française de : User Authentication HOWTO

Version : 0.9.fr.0.1

17 février 2005

Historique des versions
Version 0.9.fr.0.12005-02-17rcs
Adaptation française. Passage de SGML DocBook à XML DocBook.
Version 0.92004-04-03fl
Mise à jour des liens externes. Updated external links
Version 0.82003-02-20fl
Modifications de langage et diverses corrections mineures. Language changes, various small fixes
Version 0.52000-05-15ph
Ajout d'une section sur la sécurisation de PAM et d'une autre sur les ressources. Added section on securing pam, added resources section
Version 0.12000-05-02ph
Version initiale. Initial version

Résumé

Ce guide pratique explique comment l'information sur les utilisateurs et les groupes est stockée, comment les utilisateurs sont authentifiés sur un système Linux (PAM) et comment sécuriser l'authentification des utilisateurs sur votre système.


Table des matières

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 stockée sur votre système
/etc/passwd
Mots de passes Shadow
/etc/group et /etc/gshadow
Mots de passes encryptés par MD5
Organiser le désordre
PAM (Modules enfichables d'authentification ou Pluggable Authentication Modules)
Le pourquoi
Le quoi
Le comment
Obtenir de l'information complémentaire
Sécuriser l'authentification des utilisateurs
Un fichier /etc/pam.d/other sécurisé
Désactiver la connexion des utilisateurs avec des mots de passes vides
Désactiver les services inutilisés
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
Sécurité en général
Pages man
Conclusion

Merci de faire parvenir en anglais à l'auteur vos questions et commentaires relatifs à la version originale de ce document à l'adresse .

N'hésitez pas à faire parvenir tout commentaire relatif à la version française de ce document à en précisant sont titre, sa date et sa version.

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 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.

Les modules enfichables d'authentification sont au cœur de toute distribution moderne de Linux.

Voici un extrait du Guide administrateur système Linux-PAM (version anglaise) : "Le projet Linux-PAM a pour objet de séparer le développement de logiciels d'autorisation de celui de méthodes d'authentification sécurisées. Ceci est réalisé en fournissant une bibliothèque 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 bibliothèque contenant les fonctions appropriées à la méthode d'authentification utilisée. Comme cette bibliothèque est chargée dynamiquement, le changement de méthode d'authentification peut être réalisé 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 authentifiés, pour émettre des notifications lorsque certains programmes tentent de réaliser une authentification ou même pour priver tous les utilisateurs du droit de se connecter. La conception modulaire de PAM vous donne le contrôle total sur comment sont authentifiés les utilisateurs.

Assez parlé, rentrons dans le vif du sujet.

Les fichiers de configuration PAM ont la syntaxe suivante :

  type  contrôle  chemin-vers-le-module   arguments-du-module
  

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

Eléments de configuration PAM

type

L'élément type précise à PAM quel type d'authentification utiliser pour un module donné. Les modules de même types peuvent être chaînés, imposant ainsi à l'utilisateur de satisfaire à de multiples exigences pour pouvoir être authentifié. PAM reconnaît quatre types :

Dans le fichier de configuration de login, on trouve au moins une entrée pour chacun de ces types. Comme il s'agit du programme qui permet à l'utilisateur de se connecter, il est compréhensible qu'il nécessite d'accéder à tous les types d'authentification.

contrôle

L'élément contrôle indique à PAM ce qu'il faut faire lorsque l'authentification réalisée par ce module échoue. PAM reconnaît quatre types de contrôles :

Dans le fichier de configuration de login, on retrouve pratiquement tous les types de contrôles. 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 récupère les informations sur la connexion le plus récente de l'utilisateur) est le seul module optionnel.

chemin-vers-le-module

Cet élément 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 répertoire par défaut 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 trouvés dans /lib/security.

arguments-du-module

Il s'agit des arguments à transmettre au module. Chaque module possède 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").

De nombreuses distributions intègrent une authentification des utilisateurs qui n'est pas sécurisée de manière adéquate. Cette section présente certaines manières de sécuriser cette authentification sur votre système. Bien que faire ce qui est décrit plus bas rende votre système plus sécurisé, n'ayez cependant pas la naïveté de penser que cela vous rende pour autant invulnérable.

Chaque fichier placé dans /etc/pam.d/ contient la configuration relative à un service donné. L'exception à la règle 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 déterminée par le fichier /etc/pam.d/other. Comme /etc/pam.d/other est la configuration utilisée en dernier recours, il est important qu'elle soit sécurisée. Nous allons étudier deux configurations de /etc/pam.d/other, l'une quasi-paranoïaque et l'autre plus permissive.

Les outils de piratage de mots de passes peuvent certes être utilisés par des utilisateurs malveillants pour mettre à mal un système, mais peuvent aussi être utilisés par les administrateurs systèmes pour vérifier le niveau de sécurité des mots de passes sur leurs systèmes. Les deux outils de piratage de mots de passes les plus utilisés sont "crack" et "John the Ripper". "Crack" est probablement déjà intégré à votre distribution favorite. "John the Ripper" peut être téléchargé sur http://www.openwall.com/john/. Lancez les outils sur votre base de mots de passes et vous serez probablement surpris par le résultat.

En outre, il existe un module PAM qui utilise la bibliothèque de "crack" pour vérifier le niveau de sécurité 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 sécurité.

Dans cette section, je vais illustrer ce qui a été présenté dans la section précédente à l'aide d'un exemple simple d'utilisation.

Tout d'abord, vous devez télécharger mod_auth_pam depuis http://pam.sourceforge.net/mod_auth_pam/. Utilisez les commandes suivantes pour compiler mod_auth_pam (vous devez être connectés 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 problèmes 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 redémarrer Apache. Cela est habituellement fait par la commande suivante (encore une fois vous devez être root) :

   ~# /etc/init.d/apache restart
   

La configuration PAM pour Apache est stockée dans /etc/pam.d/httpd. La configuration par défaut (installée en même temps que mod_auth_pam) est sécurisée mais utilise un module (pam_pwdb.so) qui est indisponible sur de nombreux systèmes. (En outre, configurer ce module à partir de zéro sera une vraie partie de plaisir !) En conclusion, effacez le fichier /etc/pam.d/httpd et créez en un nouveau.

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 ajoutées à cette liste, envoyez moi un message à l'adresse .

J'espère que vous avez trouvé ce guide utile. Faites moi part de toute question, commentaire ou suggestion. Vous pouvez me contacter à l'adresse .

mirror server hosted at Truenetwork, Russian Federation.