Aller au contenu principal

Durcir l'Authentification avec PAM

Les Pluggable Authentication Modules, plus communément connus sous l'acronyme PAM, est un élément important de la gestion de l'authentification dans les environnements Linux. PAM est un ensemble de bibliothèques logicielles qui fournissent un mécanisme flexible et puissant pour l'authentification des utilisateurs sur les systèmes d'exploitation Linux. Il s'agit d'une interface standardisée permettant d'intégrer différentes méthodes d'authentification, allant des mots de passe classiques à des solutions plus complexes comme la biométrie ou les jetons d'authentification.

L'importance de PAM réside dans sa capacité à centraliser et à uniformiser le processus d'authentification sur un système. Cela permet aux administrateurs de systèmes de changer ou d'ajouter des méthodes d'authentification sans avoir à modifier les applications elles-mêmes. PAM offre ainsi une grande flexibilité et une meilleure gestion de la sécurité.

L'histoire et l'évolution de PAM

PAM a été initialement développé par Sun Microsystems dans les années 1990. Depuis, il est devenu un standard de facto dans les systèmes Unix et Linux, étant intégré dans de nombreuses distributions et utilisé par une multitude de services et d'applications.

Les composants de base de PAM

Pluggable Authentication Modules (PAM) est un système qui fournit des mécanismes pour intégrer de multiples technologies d'authentification dans un seul cadre cohérent. Les composants de base de PAM se répartissent en quatre catégories principales, chacune ayant un rôle spécifique dans le processus d'authentification et de gestion des sessions utilisateur. Comprendre ces catégories est essentiel pour appréhender le fonctionnement global de PAM.

Modules d'authentification

Les modules d'authentification sont le cœur de PAM. Ils sont responsables de la vérification de l'identité de l'utilisateur. Lorsqu'un utilisateur tente de se connecter à un système, ces modules vérifient les informations d'identification, comme les noms d'utilisateur et les mots de passe. Ils peuvent également intégrer des méthodes d'authentification plus avancées, telles que les empreintes digitales ou la reconnaissance faciale.

Modules de gestion de compte

Les modules de gestion de compte interviennent après l'authentification. Leur rôle est de vérifier que l'accès de l'utilisateur est autorisé. Par exemple, ils peuvent contrôler si un compte utilisateur est expiré, si l'utilisateur a le droit d'accéder à un service spécifique ou si des conditions d'accès particulières (comme des horaires spécifiques) sont respectées.

Modules de gestion de session

Après une authentification réussie, les modules de gestion de session entrent en jeu. Ils s'occupent de la préparation et de la fin de la session utilisateur. Ces modules peuvent exécuter des scripts ou des commandes spécifiques au démarrage ou à la fermeture d'une session, comme le montage de répertoires personnels ou la journalisation des activités de session.

Modules de gestion des mots de passe

Enfin, les modules de gestion des mots de passe sont impliqués lors de la création ou de la modification de mots de passe. Ils assurent que les mots de passe respectent les politiques de sécurité en vigueur, comme les critères de complexité et les règles de renouvellement. Ces modules peuvent également être utilisés pour synchroniser les mots de passe sur différents systèmes.

Fonctionnement de PAM

Pour comprendre le fonctionnement de PAM, il est essentiel de saisir comment les différents modules interagissent pour fournir un système d'authentification complet et sécurisé. Ce chapitre explore le processus d'authentification et la manière dont les modules PAM sont organisés et utilisés dans les systèmes Unix-like.

Processus d'authentification

Le processus d'authentification avec PAM commence lorsqu'un utilisateur tente de se connecter à un système ou d'accéder à un service. PAM agit comme un intermédiaire entre l'application demandant l'authentification (comme un serveur SSH ou un gestionnaire de connexion) et les modules d'authentification configurés.

Lors de cette tentative, PAM va consulter sa configuration pour déterminer quels modules doivent être utilisés et dans quel ordre. Cette configuration est spécifique à chaque service et est définie dans les fichiers de configuration de PAM, généralement situés dans /etc/pam.d/.

La chaîne de modules

PAM fonctionne sur la base d'une chaîne de modules, où chaque module est appelé à son tour selon la configuration spécifiée. Cette chaîne peut inclure divers types de modules, chacun accomplissant une tâche spécifique dans le processus d'authentification, de gestion de compte, de gestion de session ou de gestion des mots de passe.

Les modules dans une chaîne sont traités de manière séquentielle. Si un module échoue, PAM peut soit arrêter le processus d'authentification immédiatement, soit continuer avec les modules suivants, selon la configuration. Ce comportement est défini par les types de contrôle assignés à chaque module dans la configuration, tels que requisite, required, sufficient ou optional.

Exemples concrets

Prenons l'exemple d'une connexion SSH. Lorsqu'un utilisateur tente de se connecter via SSH, le service SSH fait appel à PAM. PAM va alors consulter le fichier de configuration /etc/pam.d/sshd pour déterminer quels modules utiliser. Cette configuration peut inclure un module pour vérifier le mot de passe, un autre pour contrôler l'accès en fonction de l'heure et un autre pour enregistrer la tentative de connexion.

Un autre exemple est l'ouverture de session sur un système de bureau. Le gestionnaire de connexion utilise PAM pour gérer l'authentification. Les modules configurés peuvent inclure des vérifications de mot de passe, de l'intégrité du compte utilisateur et des initialisations nécessaires à la session de l'utilisateur.

Configuration de PAM

La configuration des Pluggable Authentication Modules (PAM) est un élément central de la sécurisation et de la personnalisation des processus d'authentification et de gestion des sessions sur les systèmes basés sur Unix. Ce chapitre se penche en détail sur les mécanismes de configuration de PAM, en explorant la structure des fichiers de configuration, leur rôle dans la définition des politiques d'authentification et comment les ajuster pour répondre à des besoins spécifiques.

Comprendre la structure des fichiers de configuration

Les fichiers de configuration de PAM, localisés dans /etc/pam.d/, sont essentiels pour définir le comportement des modules d'authentification. Chaque service utilisant PAM, comme SSH (sshd) ou le gestionnaire de connexion (login), dispose de son propre fichier de configuration. Ces fichiers sont structurés en lignes, chacune représentant un module et sa configuration.

Un exemple de ligne dans un fichier de configuration PAM est le suivant :

type contrôle module_path arguments
  • Type : Catégorie du module (auth, account, password, session).
  • Contrôle : Réaction de PAM à l'issue du module (required, requisite, sufficient, optional).
  • Module_path : Chemin vers le fichier du module.
  • Arguments : Options spécifiques au module.

Définir les politiques d'authentification

Les fichiers de configuration PAM établissent les règles que les services doivent suivre pour l'authentification et la gestion des sessions. Ils permettent une grande flexibilité, autorisant des configurations allant de la simple vérification de mot de passe à des contrôles d'accès complexes basés sur le temps, l'emplacement ou d'autres critères.

L'ordre des lignes dans un fichier de configuration est déterminant. PAM traite chaque module dans l'ordre spécifié, ce qui signifie que l'ordre des modules peut influencer l'issue du processus d'authentification.

Exemples de configurations avancées

Pour illustrer la puissance de la configuration PAM, examinons quelques exemples avancés :

  1. Restriction d'accès en fonction de l'heure :

    account required pam_time.so
    

    Ce module peut être configuré pour restreindre l'accès à certaines heures.

  2. Limitation des tentatives de connexion :

    auth required pam_tally2.so onerr=fail deny=3 unlock_time=300
    

    Ici, pam_tally2.so est configuré pour bloquer un utilisateur après trois tentatives de connexion infructueuses.

  3. Intégration d'une authentification à deux facteurs :

    auth required pam_google_authenticator.so
    

    Ce module ajoute une couche d'authentification basée sur Google Authenticator.

Bonnes pratiques de configuration

Lors de la configuration de PAM, il est essentiel de suivre certaines bonnes pratiques pour maintenir la sécurité du système :

  • Testez les modifications en environnement de développement avant de les déployer en production.
  • Faites des sauvegardes des fichiers de configuration avant de les modifier.
  • Soyez prudent avec l'ordre des modules : un mauvais ordre peut entraîner des failles de sécurité ou empêcher les utilisateurs légitimes d'accéder au système.
  • Utilisez des modules bien compris et testés pour éviter les configurations erronées.

Cas pratiques d'utilisation de PAM

Les Pluggable Authentication Modules (PAM) sont extrêmement polyvalents et peuvent être utilisés dans une variété de scénarios pour améliorer la sécurité et la gestion des accès.

Pour cela, je vais m'appuyez cette fois sur OpenScap pour récupérer les recommandations définies par l'ANSSI.

Installation d'OpenScap

Pour ceux qui ne connaissent pas OpenScap, j'ai écrit une documentation expliquant tout sur ce formidable produit d'audit de sécurité. Pour installer OpenScap, j'ai écrit un rôle Ansible.

Dans un répertoire vide créer un fichier ansible.cfg avec ce contenu :

[defaults]
roles_path=./roles

Installation du rôle :

ansible-galaxy install stephrobert.openscap

Le playbook :

---
- name: Install Openscap on Client
  hosts: all
  pre_tasks:
    - name: Install packages
      ansible.builtin.package:
        name:
          - libopenscap8
          - python3-openscap
        state: present
      become: true
  roles:
    - role: stephrobert.openscap
      vars:
        - oscap_version: "1.3.9"
        - install_content: true
        - install_oscap: true
        - scan: true

Lancement de l'installation :

ansible-playbook -i locahost, -c local openscap.yml --ask-become-pass

Analyse du résultat du scan OpenScap

Au bout de quelques minutes, l'installation et le scan se termine. Vous devriez retrouver dans le répertoire un fichier html. Ouvrez-le dans votre navigateur web.

Dans le champ [Group rules by], sélectionnez ANSSI. N'afficher que les tests en [Fail]. Les règles sur PAM se trouve dans la section BP18R18.

Cliquez sur un des Fail et vous aurez toutes les explications.

Nous allons résoudre le problème [Ensure PAM Enforces Password Requirements - Minimum Digit Characters ].

  • Dans le fichier /etc/security/pwquality.conf on doit trouver une ligne contenant dcredit = -1.
  • Dans le fichier /etc/pam.d/common-password on doit trouver une ligne répondant à cette regexp ^\s*password\s+(?:(?:required)|(?:requisite))\s+pam_pwquality\.so.*$.

On modifie les fichiers :

  • /etc/security/pwquality.conf en ajoutant cette ligne : dcredit = -1.
  • /etc/pam.d/common-password en ajoutant cette ligne : password required pam_pwquality.so

On relance le scan :

ansible-playbook -i locahost, -c local openscap.yml --ask-become-pass

C'est passé !

Automatisation

astuce

Je vous conseille fortement de mettre en place un outil automatisant le déploiement des règles PAM sur l'ensemble de vos serveurs. Le plus simple est de recourir à l'outil Rudder qui automatise vérification et réapplique la configuration en cas de changement des paramètres. Ce contrôle est fait plusieurs fois par heure. Autre solution : Ansible

Sécurité et bonnes pratiques avec PAM

La sécurité est un aspect crucial dans la gestion des systèmes d'exploitation Unix-like et les Pluggable Authentication Modules (PAM) jouent un rôle essentiel dans ce domaine. Ce chapitre se concentre sur les enjeux de sécurité associés à PAM et offre des conseils sur les bonnes pratiques à adopter pour maintenir un haut niveau de sécurité.

Comprendre les enjeux de sécurité avec PAM

PAM est une interface puissante pour gérer l'authentification et les sessions utilisateurs, mais cette puissance s'accompagne de risques de sécurité potentiels. Une mauvaise configuration peut entraîner des vulnérabilités, comme des accès non autorisés ou des failles permettant l'escalade de privilèges. Il est donc impératif de comprendre ces risques pour les atténuer efficacement.

Bonnes pratiques en matière de configuration de PAM

Pour garantir une utilisation sécurisée de PAM, il est recommandé de suivre certaines pratiques :

  1. Maintenez le système à jour : Assurez-vous que les modules PAM et le système d'exploitation sont régulièrement mis à jour pour bénéficier des derniers correctifs de sécurité.

  2. Minimalisme dans les configurations : N'utilisez que les modules nécessaires et évitez les configurations excessivement complexes. Cela réduit la surface d'attaque potentielle.

  3. Contrôle d'accès strict : Limitez les accès aux fichiers de configuration de PAM aux administrateurs systèmes uniquement, en utilisant des permissions appropriées.

  4. Audit et surveillance : Mettez en place des systèmes d'audit pour surveiller les tentatives de connexion et les modifications apportées aux fichiers de configuration PAM. Cela peut aider à détecter des activités suspectes.

  5. Testez les configurations : Avant de déployer de nouvelles configurations en production, testez-les dans un environnement contrôlé pour s'assurer qu'elles fonctionnent comme prévu sans introduire de nouvelles vulnérabilités.

  6. Formation et sensibilisation : Assurez-vous que les personnes impliquées dans la gestion des systèmes sont bien formées et conscientes des pratiques de sécurité relatives à PAM.

Sécuriser les modules spécifiques

En plus des pratiques générales, il est important de prêter attention à la sécurité des modules spécifiques utilisés :

  • Authentification forte : Privilégiez les modules qui supportent l'authentification multifacteur pour renforcer la sécurité.
  • Gestion des mots de passe : Utilisez des modules qui imposent des politiques de mots de passe robustes, incluant la complexité et la rotation régulière des mots de passe.
  • Restrictions d'accès : Configurez des modules pour limiter l'accès basé sur des critères tels que l'heure, le lieu ou l'état du système.

Gestion des vulnérabilités

Enfin, restez informé des vulnérabilités connues affectant PAM et ses modules. Réagissez rapidement en appliquant les correctifs ou en ajustant les configurations pour atténuer les risques.

Conclusion

Nous avons exploré les différentes facettes des Pluggable Authentication Modules (PAM), allant de leur structure de base et fonctionnement jusqu'à un cas pratique et des conseils de sécurité. En conclusion, la maîtrise de PAM est un atout précieux pour tout administrateur système.

La vigilance, l'apprentissage continu et l'adaptation aux nouvelles menaces et technologies restent les clés pour exploiter efficacement les capacités de PAM et assurer la sécurité des systèmes d'information.