La sécurité lors de la gestion des utilisateurs dans les environnements Linux est essentielle et nous devons toujours rechercher les meilleures options disponibles à cet effet, que ce soit en interne ou en externe.L'une des méthodes les plus sûres pour augmenter la sécurité des systèmes Linux est d'administrer de manière beaucoup plus efficace. façon dont les utilisateurs sont authentifiés dans le système, cela permet uniquement aux utilisateurs qui ont les informations d'identification correctes d'avoir accès au système.
Pour ce cas, nous avons une fonctionnalité appelée Linux-PAM (Modules d'authentification enfichables pour Linux - Modules d'authentification enfichables pour Linux) qui a été développée comme un ensemble de bibliothèques avec lesquelles il sera possible pour l'administrateur système de sélectionner la manière dont les applications authentifier les utilisateurs sur le réseau local.
Lors de la compilation d'une application compatible avec PAM, nous sommes capables de basculer entre les mécanismes d'authentification utilisés.
Pour comprendre un peu mieux ce concept, on peut analyser la manière dont les utilisateurs sont actuellement authentifiés, tout d'abord l'identité de l'utilisateur est vérifiée lors de la saisie du mot de passe attribué à l'utilisateur, ces mots de passe sont stockés dans le fichier /etc/passwd, alors le privilège est défini sous la forme d'un identifiant d'utilisateur personnel appelé UID et l'appartenance aux groupes, services et applications disponibles est disponible sur la base de l'identité personnelle et de groupe de chaque utilisateur.
La bibliothèque PAM est configurée localement dans le fichier système /etc/pam.conf ou dans une série de fichiers situés dans /etc/pam.d/ afin d'authentifier une requête utilisateur via les modules d'Authentification disponibles uniquement localement.
Les modules sont disponibles dans le répertoire /lib/security ou /lib64/security. La syntaxe du fichier de configuration /etc/pam.conf est constituée d'une liste de règles, et chaque règle se trouve sur une seule ligne, mais peut être étendue avec une ligne se terminant par « \ ». Les commentaires sont précédés de marques '#' et s'étendent jusqu'à l'extrémité suivante de la ligne sélectionnée.
Le format de chaque règle est une collection d'onglets séparés par des espaces, les trois premiers ne sont pas sensibles à la casse comme ceci :
type de service contrôle module-chemin module-argumentsLes paramètres utilisés sont :
ServiceC'est le vrai nom de l'application.
TaperC'est le type de module/contexte/interface.
ContrôlerFait référence au comportement de l'API PAM au cas où le module ne peut pas exécuter la tâche d'authentification
Chemin du moduleIl s'agit du nom de fichier absolu ou du chemin relatif du PAM.
arguments-moduleIndique une liste de jetons séparés par des espaces dans le but de contrôler le comportement du module.
La syntaxe de chaque fichier dans /etc/pam.d/ est identique et se compose de lignes avec la structure suivante :
type control-flag module module-argumentsPar exemple, une définition de règle (sans arguments de module) disponible dans le fichier /etc/pam.d/sshd, qui n'autorise pas les connexions non root lorsque /etc/nologin est disponible est :
compte requis pam_nologin.so
1. Comment gérer les contrôles et les groupes PAM sur Linux
Les tâches d'authentification PAM sont répertoriées dans quatre groupes d'administration distincts, chacun de ces groupes gérant différents aspects de la demande d'un utilisateur pour un service restreint.
Un module est associé à l'un de ces types de groupes d'administration de la manière suivante :
CompteCette valeur offre les services de vérification du compte avec des aspects tels que l'expiration du mot de passe de l'utilisateur ou si l'utilisateur est autorisé à accéder au service demandé.
authentificationAvec cette valeur, un utilisateur est authentifié et les informations d'identification de l'utilisateur peuvent être configurées.
le mot de passeIls permettent aux utilisateurs de mettre à jour les mots de passe et sont intégrés aux modules d'authentification PAM
sessionCelui-ci est chargé de gérer les actions menées en début et en fin de session.
Les fichiers objets PAM se trouvent dans le répertoire suivant /lib/security/ou /lib64/security selon l'architecture utilisée.
Les indicateurs de contrôle pris en charge dans PAM sont :
requisAvec cet indicateur, la panne rend instantanément le contrôle à l'application, indiquant la nature de la panne du premier module.
obligatoireIl est indiqué que tous les modules sont nécessaires pour que libpam s'exécute correctement et renvoie le succès à l'application
suffisantCe module entraîne un retour immédiat et correct de l'application, dans ce cas l'échec de ce module est ignoré.
optionnelLe succès ou l'échec de ce module n'est généralement pas enregistré dans cet indicateur
Il existe d'autres valeurs telles que:
comprendreIl inclut toutes les lignes du type basé sur le fichier de configuration spécifique comme argument pour ce contrôle.
sous-pileInclut toutes les lignes du type donné du fichier de configuration spécifié comme argument de ce contrôle spécifique.
2. Comment vérifier qu'un programme est compatible avec PAM sous Linux
Pour implémenter PAM dans une application, il doit avoir été écrit et compilé spécifiquement pour utiliser PAM, pour vérifier si cette application est compatible ou non, par exemple, SSH, nous exécuterons ce qui suit :
sudo ldd / usr / sbin / sshd | grep libpam.so
AGRANDIR
3. Comment restreindre l'accès root via SSH avec PAM sur Linux
PAM peut être utilisé pour désactiver l'accès de l'utilisateur root à un système via SSH et des programmes de connexion, ce qui contribue à augmenter les options de sécurité du système.
Si nous voulons faire cela, nous utiliserons le module /lib/security/pam_listfile.so qui nous donne la possibilité de limiter les privilèges de comptes spécifiques.
Étape 1
Pour effectuer cette action, nous allons accéder au fichier /etc/pam.d/ comme suit :
sudo nano /etc/pam.d/sshdOU ALORS
sudo nano /etc/pam.d/loginÉtape 2
Là, nous verrons ce qui suit :
AGRANDIR
Étape 3
Pour ce cas, nous ajouterons les lignes suivantes à la fin :
auth required pam_listfile.so \ onerr = success item = user sense = deny file = /etc/ssh/niedusers
AGRANDIR
Dans ce cas, les paramètres suivants ont été ajoutés :
authentificationC'est le type de module à utiliser
obligatoireC'est un indicateur de contrôle avec lequel, si le module est utilisé, il doit être passé ou le résultat global échouera quel que soit l'état des autres modules.
pam_listfile.soC'est un module avec lequel il est permis de refuser ou d'autoriser des services basés sur un fichier arbitraire.
onerr = réussirC'est l'argument du module.
élément = utilisateurC'est l'argument du module dans lequel il est indiqué ce qui est listé dans le fichier et qui doit être vérifié.
sens = nierIl fait référence à l'argument du module dans lequel l'action à effectuer est précisée s'il se trouve dans le fichier, sinon, l'action inverse est demandée.
fichier = /etc/ssh/niedusersC'est l'argument du module dans lequel un fichier contenant un élément par ligne est spécifié.
Nous enregistrons les modifications à l'aide des touches Ctrl + O et sortons de l'éditeur à l'aide de Ctrl + X.
Après cela, nous devons créer le fichier /etc/ssh/niedusers et y ajouter l'utilisateur root puis attribuer les autorisations respectives :
sudo chmod 600 / etc / ssh / niedusers
4. Comment configurer PAM de manière avancée sur Linux
Une valeur spéciale est la valeur par défaut dans PAM, donc toutes les valeurs ne sont pas explicitement mentionnées, par conséquent, la valeurN correspond au code de retour de la fonction invoquée dans le module pour lequel la ligne est définie.
L'action a des arguments tels que:
ignorerEn cas d'utilisation de cette action avec une pile de modules, l'état de retour du module ne génère pas de code retour de l'application.
mauvaisIndique que le code retour doit être considéré comme indicatif des défaillances du module utilisé.
mourirIl remplit la même fonction que bad, mais est capable de terminer la pile de modules et PAM retourne immédiatement à l'application.
d'accordCette valeur indique à PAM que l'administrateur système utilisera ce code de retour directement dans le code de retour de la pile complète de modules.
terminéRemplit le même rôle que Ok, mais peut terminer la pile de modules
N(un entier non signé) - Équivalent à ok, mais peut sauter par-dessus les N modules suivants sur la pile.
RéinitialiserL'utilisation de ce paramètre efface toute la mémoire d'état de la pile de modules et redémarre avec le module suivant empilé.
Chacun des mots de base PAM, requis ; requis; suffisant et facultatif, ont une expression équivalente en termes de syntaxe […], avec laquelle il sera possible d'écrire des règles plus complexes telles que :
obligatoire[success = ok new_authtok_reqd = ok ignore = ignore default = bad]
requis[success = ok new_authtok_reqd = ok ignore = ignore default = die]
suffisant[success = done new_authtok_reqd = done default = ignorer]
optionnel[success = ok new_authtok_reqd = ok default = ignorer]
Étape 1
Par exemple, dans CentOS 7, nous pouvons voir les règles du fichier PAM en exécutant :
sudo nano /etc/pam.d/postlogin
AGRANDIR
Étape 2
Si nous accédons au fichier :
sudo nano /etc/pam.d/smartcard-auth
AGRANDIR
Pour accéder à plus d'aide PAM, nous pouvons exécuter :
homme pam.dAvec PAM, il sera possible de créer ou d'éditer des règles pour une meilleure administration des processus d'authentification sous Linux.