Protéger Linux OS avec MFA
Introduction
La protection des sessions de terminal basées sur Unix vers le shell sécurisé (SSH) et d'autres services peut être réalisée rapidement en introduisant IBM Verify Gateway for PAM. Ce module d'authentification s'exécute localement sur le système Unix et lance un appel sortant aux API IBM Security Verify afin d'obtenir des méthodes d'authentification à deux facteurs pour vérifier l'identité de l'utilisateur. Comme PAM est personnalisable, vous pouvez facilement ajouter le multi-facteur à d'autres services pour renforcer l'authentification chaque fois que cela est nécessaire. Ce guide est conçu pour vous guider dans la configuration de base d'un système CentOS qui utilise un utilisateur système local. Ubuntu est pris en charge

Prérequis
- Trouvez une machine CentOS, RHEL ou Fedora à utiliser pour cette démonstration (les machines virtuelles fonctionnent très bien)
- Téléchargez les derniers modules IBM Verify Gateway for PAM sur le système Linux.
- Décompressez les fichiers dans un nouveau dossier appelé
~/ibm
- Créez un client API et un secret à partir de votre portail Verify en utilisant la méthode Vous aurez besoin des permissions suivantes :
- Authentifier un utilisateur
- Gérer l'inscription à l'authentification à deux facteurs pour tous les utilisateurs
- Gérer les utilisateurs et les groupes
- Lire l'inscription à l'authentification à deux facteurs pour tous les utilisateurs
- Lire la configuration de la méthode d'authentification à deux facteurs
- Lire les utilisateurs et les groupes
- Identifier le nom d'utilisateur de l'utilisateur et créer l'utilisateur correspondant dans Verify.
- Pour obtenir les informations sur les utilisateurs de votre système Linux, exécutez la commande
getent passwd
. - Par défaut, le module IBM Verify PAM utilise le nom d'utilisateur de l'utilisateur, mais des configurations supplémentaires peuvent être ajoutées pour utiliser le numéro du champ
gecos
et analyser le champgecos
avec des séparateurs spécifiques.- Note : Pour ce blog, nous utiliserons des utilisateurs locaux à la fois dans le terminal et dans Verfy pour des raisons de simplicité. Les scénarios plus avancés utilisent un répertoire central pour les utilisateurs de Verify et de Linux.
- Pour obtenir les informations sur les utilisateurs de votre système Linux, exécutez la commande
Installation
Installez les RPM en exécutant les commandes suivantes avec sudo ou en tant que root. Selon la version que vous téléchargez, les noms des fichiers peuvent être différents.
Installer le module Authentication API
[root@localhost ibm]# rpm -i ibm-auth-api-1.0-0.x86_64.rpm
Installer le Daemon PAM
[root@localhost ibm]# rpm -i pam-ibm-auth-1.0-0.x86_64.rpm
Configurer le fichier JSON
Un fichier JSON a été créé pour vous, mais vous devrez le modifier. Comme ce fichier contient des informations sensibles sur la clé API, il est conseillé de vérifier les autorisations du fichier une fois la configuration terminée. Le fichier JSON se trouve à l'adresse suivante : /etc/pam_ibm_auth.json
. Le contenu du fichier contient l'identifiant du client, le secret du client et le nom du locataire Verify (hôte). L'identifiant et le secret du client sont les clés obtenues lors de la configuration de l'API dans le portail Verify. Le nom d'hôte de votre locataire est le sous-domaine de l' URL de votre locataire (par exemple, tenant.verify.ibm.com-> sample)Ce sont les trois seules variables que vous devez d'abord modifier. Cependant, il est conseillé de décommenter les journaux de trace pour un débogage supplémentaire. Toute modification de ce fichier après le démarrage du démon nécessitera un redémarrage du service.
{
"ibm-auth-api":{
"client-id":"********-****-****-****-************",
"client-secret":"**********",
"protocol":"https",
"host":"****.verify.ibm.com",
"port":"443",
"authd-port":12,
"max-handles":"16"
},
"ibm-authd":{
/* "trace-file":"/tmp/ibm_authd.log" */
},
"pam":{
/* "trace-file":"/tmp/pam_ibm_auth.log" */
}
}
Activer et démarrer le Daemon Auth
Si le système d'exploitation utilise systemd pour les services, un service “ibm_authd_64” est mis en place, mais n'est pas configuré pour fonctionner en tant que fichier /etc/pam_ibm_auth.json
. Il doit être configuré pour
pouvoir être exécuté. Après avoir configuré le fichier pam_ibm_auth.json
, utilisez les commandes suivantes :
[root@localhost ibm]# systemctl enable ibm_authd_64
[root@localhost ibm]# systemctl start ibm_authd_64
Connaître SELinux
SELinux peut empêcher les programmes qui utilisent le module PAM de se connecter à CIV ou à
ibm_authd
. Si vous rencontrez des problèmes de connectivité, utilisez l'outil sealert pour vérifier si SELinux refuse l'accès. J'ai désactivé SELinux pour ce blog, mais pour les systèmes de production, il est bon d'appliquer des listes blanches de sécurité aux domaines Verify ainsi qu'au service ibm_authd.
Configuration de PAM pour SSH Multi-Factor
Pour utiliser IBM Verify avec SSH, vous devez modifier la configuration PAM pour sshd
.
- Copier le fichier Password Auth
- Le fichier /etc/pam.d/sshd contrôle l'authentification SSH. Cependant, il utilise un fichier d'inclusion commun pour l'authentification, /etc/pam.d/password-auth. Exécutez la commande suivante :
cp /etc/pam.d/password-auth /etc/pam.d/civ-password-auth
- Le fichier /etc/pam.d/sshd contrôle l'authentification SSH. Cependant, il utilise un fichier d'inclusion commun pour l'authentification, /etc/pam.d/password-auth. Exécutez la commande suivante :
- Editer le nouveau fichier civ-password-auth
- À l'aide de votre éditeur préféré, apportez les modifications suivantes au fichier /etc/pam.d/civ-password-auth.
# Before:
auth sufficient pam_unix.so nullok try_first_pass
# After:
auth requisite pam_unix.so nullok try_first_pass
auth sufficient pam_ibm_auth.so auth_method=choice-then-otp transients_in_choice
Note : Dans PAM, la modification de pam_unix.so en "requisite" signifie que pour que pam_ibm_auth.so soit invoqué, il doit d'abord réussir.
Si un message du type "No second factor authentication enrollments are available" s'affiche lors de la tentative d'authentification, vous pouvez soit inclure transients_in_choice
et add_devices_to_choice
, soit utiliser accept_on_missing_auth_method si vous ne vous souciez pas des enrollments de l'utilisateur.
Configurations utiles
Utiliser l'adresse électronique et le numéro de téléphone du profil de l'utilisateur
auth sufficient pam_ibm_auth.so auth_method=choice-then-otp transients_in_choice
Pour utiliser le champ gecos et les informations du profil transitoire :
auth sufficient pam_ibm_auth.so auth_method=choice-then-otp transients_in_choice gecos_field=1
Exemple d'entrée utilisateur :
jessica:*:1002:1002:jessica:/home/jessica:/bin/bash
Pour utiliser un attribut spécifique du champ gecos donné comme séparateur :
Compte tenu d'une entrée utilisateur telle que jessica:*:1002:1002:jessica|bretton|jessica|[email protected]:/home/jessica:/bin/bash
Nous pouvons utiliser les éléments suivants :
auth sufficient pam_ibm_auth.so auth_method=choice-then-otp gecos_field=3 gecos_separator=|
Ajouter un domaine à un nom d'utilisateur :
auth sufficient pam_ibm_auth.so auth_method=choice-then-otp [email protected]
Remarque : Si vous utilisez un fournisseur d'identité 3rd, vous devez également ajouter le domaine au nom d'utilisateur. Par exemple, si le domaine du fournisseur d'identité 3rd tel que Verify Access ou ADFS, vous devrez vous assurer que votre attribut append correspond à la convention de nommage suivante : append=@domain (par exemple [email protected] )
Pour autoriser les enregistrements de périphériques IBM Verify push dans le choix
auth sufficient pam_ibm_auth.so auth_method=choice-then-otp transients_in_choice add_devices_to_choice
Modifier le protocole SSH (secure shell) PAM pour utiliser IBM Verify
Dans le fichier /etc/pam.d/sshd
, dans la strophe d' authentification uniquement, remplacez password-auth
par civ-password-auth
.

Tester la configuration
De retour dans la fenêtre du terminal, établissez une connexion SSH avec l'hôte local à l'aide de la commande suivante :
ssh testuser@localhost
Vous devriez d'abord être invité à saisir votre mot de passe local pour le système, puis un appel sera lancé à Verify pour obtenir les inscriptions 2FA pour l'utilisateur.
[root@localhost ~]# ssh testuser@localhost
Password:
1) 15125551012
2) [email protected]
? 2
Enter OTP ####-######
[testuser@localhost ~]$
Etapes supplémentaires
Que vous souhaitiez intégrer LDAP pour un accès à deux facteurs ou ajouter un accès conditionnel aux sous-packs PAM, IBM Verify PAM peut être facilement configuré et appliqué à vos systèmes Unix pour les protéger contre les accès à distance avec 2FA et Push Verification avec l'application IBM Verify. En fonction de votre configuration de Linux, vous pouvez également étendre cette 2FA pour effectuer des authentifications basées sur l'interface utilisateur graphique. La documentation complète du service IBM Verify PAM est disponible ici.
Updated about 1 month ago