Sécurité · 7 min read · Dec 28, 2025

Configurer SSH pour utiliser Freeradius et WiKID pour l'authentification à deux facteurs

Configurer SSH pour utiliser Freeradius et WiKID pour l’authentification à deux facteurs

Radius est un excellent standard. Il est suffisamment puissant pour accomplir beaucoup de choses et assez simple pour être facile à gérer. Freeradius est un excellent serveur radius open source qui est livré avec de nombreuses variantes de Linux. Il est bien documenté et bien supporté. Le serveur d’authentification forte WiKID est un système d’authentification à deux facteurs commercial/open source qui utilise le cryptage par clé publique pour transmettre des PIN et des codes d’accès à usage unique de manière sécurisée vers des jetons logiciels fonctionnant sur des Blackberries, des téléphones portables, des Palms, des PocketPC ou, en utilisant le client J2SE, sur Linux, Mac et Windows PC. Vous pouvez penser à WiKID comme à des certificats, mais sans les tracas des listes blanches/noires et plus sécurisé - car le PIN est validé sur le serveur, empêchant les attaques par force brute hors ligne.

Les entreprises qui doivent répondre à des exigences, telles que PCI-DSS ou HIPAA, peuvent avoir besoin de sécuriser leurs réseaux avec une authentification à deux facteurs et un accès étroitement contrôlé. Combiner Freeradius et WiKID est un moyen très rentable d’y parvenir.

Dans cet exemple, j’installe Freeradius sur Fedora Core 7 et exécute les rpms 3.0RC2 de WiKID sur Centos5 (cependant, les mêmes instructions fonctionneront pour la version 2.0 de WiKID.) Nous allons tester avec SSH, cependant, la même configuration devrait fonctionner pour Apache, WebDAV, OpenVPN et toute autre application qui prend en charge PAM.

Installer et configurer Freeradius

Peu importe la variante de Linux que vous utilisez, il y a probablement un paquet pour Freeradius. Pour Fedora, l’installation via Yum est simple :

yum install freeradius

Configurer Freeradius est assez simple. Il y a beaucoup d’options, cependant. La clé est de ne changer que les éléments minimaux que vous comprenez. Les paramètres par défaut fonctionnent, donc faites de petits changements et testez-les. Nous allons modifier trois fichiers. Le fichier /etc/raddb/clients.conf indique à Freeradius quels clients accepter. Le fichier proxy.conf indique à Freeradius d’envoyer les paquets d’authentification au serveur WiKID et le fichier radiusd.conf configure le serveur Freeradius principal.

Tout d’abord, éditez le fichier /etc/raddb/clients.conf :

vi /etc/raddb/clients.conf
client 127.0.0.1 {
        secret          = shared_secret
        shortname       = localhost
        nastype     = other
}

Tout ce que vous devez changer pour l’instant est le secret partagé car nous allons nous connecter au serveur Freeradius via SSH pour notre test.

Ensuite, validez que les demandes peuvent être proxyées dans le fichier radiusd.conf. C’était le cas sur Fedora :

vi /etc/raddb/radiusd.conf
proxy_requests  = yes
$INCLUDE  ${confdir}/proxy.conf

Enfin, ajoutez le serveur d’authentification forte WiKID comme un proxy valide dans proxy.conf :

vi /etc/raddb/proxy.conf
#  Ce royaume est pour les demandes qui n'ont pas de préfixe ou de suffixe de royaume explicite
#  Les noms d'utilisateur comme "bob" correspondront à celui-ci.
#
realm NULL {
        type            = radius
        authhost        = WIKIDSERVER_IP:1812
#       accthost        = WIKIDSERVER_IP:1813
        secret          = shared_secret
}

Inutile de dire, changez WIKIDSERVER_IP et shared_secret par l’adresse IP de votre serveur WiKID et le secret partagé. Il devrait probablement être différent du secret partagé utilisé pour le client.

Pour une sécurité supplémentaire, vous devriez verrouiller la propriété de ces fichiers :

chmod a-rwx,u+r /etc/raddb/proxy.conf
chmod a-rwx,u+r /etc/raddb/clients.conf

Maintenant, démarrez Freeradius :

service radiusd start

Configurer PAM SSH

Tout d’abord, vous devez installer PAM Radius. Il y a une excellente documentation à ce sujet sur la page d’accueil de PAM Radius. Selon votre distribution, vous pourriez également trouver un binaire approprié. Je n’ai eu aucun problème à le compiler sur Fedora 7 :

# ./configure  
# make  
# make install

Éditez /etc/pam.d/sshd pour autoriser l’authentification Radius :

vi /etc/pam.d/sshd

Allez à la deuxième ligne du fichier, appuyez sur la touche Insert ou la touche i et insérez cette ligne :

auth     sufficient   /lib/security/pam_radius_auth.so 

juste au-dessus de cette ligne :

auth     required     pam_stack.so service=system-auth

Le tag “sufficient” indique que si l’authentification Radius réussit, aucune authentification supplémentaire ne sera requise. Cependant, si l’authentification Radius échoue, un nom d’utilisateur et un mot de passe du système fonctionneront. Utilisez “Required” pour exiger une authentification forte. Comme nous ne modifions que le fichier sshd, cela n’affectera pas les connexions terminal. PAM peut être très différent selon les variantes de Linux. Consultez la documentation spécifique pour votre OS.

Éditez ou créez votre fichier /etc/raddb/server :

vi /etc/raddb/server

Sous la ligne :

127.0.0.1   secret        1

Ajoutez cette ligne :

localhost   shared_secret     1

Enfin, je me suis assuré que l’authentification par clé publique était désactivée dans /etc/sshd/sshd_config :

PubkeyAuthentication no

Configurer le serveur WiKID

Maintenant, nous allons configurer le serveur WiKID pour traiter les mots de passe à usage unique de Freeradius. Nous supposons que vous devez également configurer un nouveau domaine WiKID. Si vous en avez déjà un, vous pouvez sauter cette partie. Une documentation d’installation supplémentaire de WiKID est disponible ici.

Connectez-vous au serveur WiKID et cliquez sur l’onglet Domaines.

Cliquez sur Créer un nouveau domaine.

Entrez les informations demandées. Le code du serveur de domaine est l’adresse IP du serveur WiKID avec des zéros en tête. Donc, si l’adresse IP externe est 216.239.51.99, le code du serveur WiKID serait 216239051099. Cliquez sur “Créer”. (Évidemment, si vous avez déjà un domaine configuré, vous pouvez sauter cette étape.)

Cliquez sur l’onglet Clients réseau et sur “Créer un nouveau client réseau”.

Entrez les informations demandées. Pour l’adresse IP, utilisez l’adresse IP du serveur Freeradius. Sélectionnez Radius et le domaine que vous venez de créer. Cliquez sur “Ajouter” lorsque vous avez terminé.

Sur la page suivante, entrez le secret partagé que vous avez entré dans le fichier /etc/raddb/proxy.conf du serveur Freeradius. Vous n’avez pas besoin d’entrer d’informations sous “Attributs de retour”.

Important : Depuis le terminal WiKID ou via SSH, vous devrez exécuter “wikidctl stop” puis “wikidcl start” pour charger la nouvelle configuration dans le serveur Radius WiKID. (Les utilisateurs de WiKID 2.0 exécutent simplement “stop” et “start”.)

Tester Freeradius avec des mots de passe à usage unique

Téléchargez et installez un client de jeton WiKID. Vous pouvez vous valider manuellement en tant qu’utilisateur depuis l’interface web WiKIDAdmin. Une fois validé, sélectionnez le domaine associé à la ressource Freeradius :

token1.jpg

Entrez le PIN :

token2.jpg

Et vous recevrez le code d’accès à usage unique. L’OTP est limité dans le temps, mais le temps peut être réglé sur le serveur WiKID à ce que vous voulez :

token3.jpg

Maintenant, ssh vers votre boîte Freeradius :

ssh user@freeradius_server

Lorsque vous y êtes invité, entrez le mot de passe à usage unique WiKID - il devrait avoir été automatiquement copié dans votre presse-papiers, donc ctrl-c ou shift-ins devraient fonctionner. Vous devriez obtenir l’accès. Si ce n’est pas le cas, il y a plusieurs journaux à consulter. Tout d’abord, vérifiez /var/log/secure sur votre serveur Freeradius pour voir pourquoi l’utilisateur a été rejeté. Si vous voyez “Tous les serveurs RADIUS ont échoué à répondre.”, assurez-vous que radiusd fonctionne sur le port 1812. Vérifiez les journaux de Freeradius à /var/log/radius/radius.log et le journal radius de WiKID à /opt/WiKID/log/radius.log sur le serveur WiKID.

Une configuration alternative : Freeradius comme sauvegarde

Un des avantages d’utiliser PAM Radius est que les serveurs peuvent être chaînés dans le fichier /etc/raddb/server. Si les serveurs supérieurs échouent à répondre, le serveur suivant essaiera d’authentifier l’utilisateur. Pour clarifier : si le premier serveur répond avec un échec d’authentification, l’utilisateur est rejeté. Ce n’est que s’il n’y a pas de réponse que le deuxième serveur radius sera vérifié. Cette capacité de sauvegarde peut être particulièrement utile si votre serveur WiKID est situé dans un centre de données distant. En configurant PAM pour communiquer directement avec WiKID et en revenant à Freeradius, vous créez une solution de basculement en cas de défaillance matérielle.

Tout d’abord, changez le fichier /etc/raddb/server pour pointer d’abord vers le serveur WiKID, puis vers le serveur Freeradius fonctionnant sur localhost :

# server[:port] shared_secret      timeout (s)
127.0.0.1:1812        shared_secret        1
WIKIDSERVER_IP:1812   shared_secret      3
localhost:1812        shared_secret          2

J’ai dû apporter quelques modifications mineures pour faire fonctionner Freeradius avec /etc/passwd. Tout d’abord, j’ai dû changer le groupe de radiusd dans /etc/raddb/radiusd.conf en shadow :

user = radiusd
group = shadow

Ensuite, j’ai dû donner des permissions shadow pour /etc/passwd :

chgrp shadow /etc/shadow
chmod g+r /etc/shadow

Maintenant, si le serveur WiKID échoue pour une raison quelconque, vous avez un retour automatique à votre fichier /etc/passwd.

Conclusion

Radius est un excellent standard pour l’authentification des utilisateurs distants. Combiner Freeradius avec WiKID Strong Authentication crée une solution puissante, flexible et sécurisée.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.