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 freeradiusConfigurer 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.confclient 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.confproxy_requests = yes
$INCLUDE ${confdir}/proxy.confEnfin, 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.confMaintenant, démarrez Freeradius :
service radiusd startConfigurer 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/sshdAllez à 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-authLe 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/serverSous la ligne :
127.0.0.1 secret 1Ajoutez cette ligne :
localhost shared_secret 1Enfin, je me suis assuré que l’authentification par clé publique était désactivée dans /etc/sshd/sshd_config :
PubkeyAuthentication noConfigurer 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 :

Entrez le PIN :

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 :

Maintenant, ssh vers votre boîte Freeradius :
ssh user@freeradius_serverLorsque 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 2J’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 = shadowEnsuite, j’ai dû donner des permissions shadow pour /etc/passwd :
chgrp shadow /etc/shadow
chmod g+r /etc/shadowMaintenant, 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.
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.