Intégrations · Linux SSH

2FA SSH sous Linux avec pam_radius et approbation sur le téléphone

Pour les équipes qui administrent des serveurs Linux en SSH et veulent que chaque shell, chaque sudo et chaque su exigent une approbation sur le téléphone en plus du mot de passe. Linux PAM dispose d’un module RADIUS standard : pointez-le vers l’auth-proxy Notakey, et tout votre parc rejoint la même configuration que votre VPN.

Comment s’établit la connexion

De PAM à RADIUS puis au proxy, rien d’autre sur le serveur

sshd et sudo s’authentifient via PAM. Le module pam_radius transmet le nom d’utilisateur et le mot de passe à l’auth-proxy Notakey via RADIUS ; le proxy confie la vérification du mot de passe à votre serveur RADIUS, envoie une demande d’approbation sur le téléphone de l’utilisateur et ne renvoie Access-Accept que si les deux réussissent. Le guide couvre Debian/Ubuntu avec libpam-radius-auth ; sur les distributions de la famille RHEL, le module est empaqueté sous le nom pam_radius et les fichiers PAM suivent la même arborescence /etc/pam.d/.

Le module étant déclaré sufficient, un Access-Accept connecte immédiatement l’utilisateur, et toute autre réponse renvoie à la vérification habituelle du mot de passe local. Votre administrateur de secours conserve un mot de passe purement local ; tous les autres comptes peuvent être créés sans. Leur seul moyen d’entrer passe alors par RADIUS et le proxy, c’est-à-dire mot de passe et approbation sur le téléphone, et il n’y a rien de local à attaquer par force brute.

Le proxy et le serveur RADIUS qui protègent déjà le VPN et l’administration du routeur desservent aussi le parc Linux. Rien ne change côté proxy.

À savoir avant de commencer

  • Le délai d’expiration par défaut du module est de 3 secondes. Réglez-le au moins sur le vpn_message_ttl du proxy (30 secondes) ; 60 laisse une marge confortable. Un échec instantané sans notification push trahit généralement un mauvais délai ou un mauvais secret partagé.
  • Les connexions SSH par clé publique sautent entièrement la phase auth de PAM : une connexion par clé ne déclenche donc aucune notification push. Pour combiner clé et approbation, définissez AuthenticationMethods publickey,keyboard-interactive et testez cette variante séparément.
  • Le mot de passe circule en PAP entre le serveur et le proxy. Gardez cette liaison sur un réseau d’administration, ou exécutez le proxy en conteneur sur l’hôte lui-même.
  • Le même nom d’utilisateur doit exister dans le serveur RADIUS de destination, dans le service Notakey avec un téléphone enrôlé, et comme compte local ou d’annuaire sur la machine Linux. PAM ne fait qu’authentifier ; l’utilisateur a toujours besoin d’un compte pour se connecter.
  • Protéger sudo signifie que chaque sudo sollicite le téléphone. La mise en cache des identifiants de sudo rend cela supportable.
  • sshd requiert UsePAM yes et KbdInteractiveAuthentication yes ; ce sont les valeurs par défaut sous Debian/Ubuntu.

De zéro à la première approbation

  1. 01

    Préparer d’abord l’issue de secours

    Avant de toucher à PAM, attribuez à root ou à un compte d’administration de secours dédié un mot de passe local robuste, et vérifiez-le sur la console. La configuration se replie toujours sur les mots de passe locaux : ce compte est votre moyen d’entrer si le proxy, RADIUS ou le réseau tombent.

  2. 02

    Installer pam_radius et le pointer vers le proxy

    Installez libpam-radius-auth, ajoutez à /etc/pam_radius_auth.conf une ligne contenant l’adresse du proxy, le secret partagé correspondant au vpn_secret_in du proxy et un délai de 60 secondes, puis verrouillez le fichier en mode 0600.

  3. 03

    L’activer dans PAM et tester depuis un second terminal

    Ajoutez auth sufficient pam_radius_auth.so au-dessus de l’inclusion common-auth dans /etc/pam.d/sshd (et pour sudo, su ou login si vous le souhaitez), ajoutez try_first_pass à la ligne pam_unix de common-auth, puis connectez-vous en SSH depuis un second terminal avec un nom d’utilisateur RADIUS et approuvez la notification push. Vérifiez que le compte de secours fonctionne toujours avant de fermer la session d’origine.

Questions fréquentes

Vais-je perdre l’accès si le proxy ou RADIUS tombe en panne ?
Pas si vous conservez un administrateur de secours doté d’un mot de passe local. pam_radius est déclaré sufficient : toute réponse autre qu’Access-Accept laisse la main à la vérification habituelle du mot de passe local.
Les connexions SSH par clé déclenchent-elles une notification push ?
Non. Les connexions par clé publique sautent entièrement la phase auth de PAM. Pour combiner clé et notification push, définissez AuthenticationMethods publickey,keyboard-interactive et testez cette variante séparément.
Quelles distributions Linux le guide couvre-t-il ?
Debian et Ubuntu, avec libpam-radius-auth. Sur les distributions de la famille RHEL, le module est empaqueté sous le nom pam_radius et les fichiers PAM suivent la même arborescence /etc/pam.d/.

Guides et documentation

Produits associés

← Toutes les intégrations

Votre première connexion sans mot de passe, dès cette semaine

30 minutes avec un ingénieur, pas une présentation commerciale. Ensemble, nous verrons comment lancer un pilote fonctionnel dans votre environnement VPN, SSO ou Windows.