17.5. Configuration de FreeRADIUS pour authentifier les clients du réseau en toute sécurité à l'aide d'EAP
FreeRADIUS prend en charge différentes méthodes du protocole d'authentification extensible (EAP). Cependant, pour un réseau sécurisé, configurez FreeRADIUS pour qu'il prenne en charge uniquement les méthodes d'authentification EAP sécurisées suivantes :
- EAP-TLS (transport layer security) utilise une connexion TLS sécurisée pour authentifier les clients à l'aide de certificats. Pour utiliser EAP-TLS, vous avez besoin de certificats clients TLS pour chaque client du réseau et d'un certificat serveur pour le serveur. Notez que les certificats doivent être émis par la même autorité de certification (AC). Utilisez toujours votre propre autorité de certification pour créer des certificats, car tous les certificats clients émis par l'autorité de certification que vous utilisez peuvent s'authentifier auprès de votre serveur FreeRADIUS.
- EAP-TTLS (tunneled transport layer security) utilise une connexion TLS sécurisée et authentifie les clients à l'aide de mécanismes tels que le protocole d'authentification par mot de passe (PAP) ou le protocole d'authentification par challenge handshake (CHAP). Pour utiliser EAP-TTLS, vous avez besoin d'un certificat de serveur TLS.
- EAP-PEAP (protected extensible authentication protocol) utilise une connexion TLS sécurisée comme protocole d'authentification externe pour établir le tunnel. L'authentificateur authentifie le certificat du serveur RADIUS. Ensuite, le demandeur s'authentifie par le biais du tunnel crypté en utilisant le protocole d'authentification Microsoft challenge handshake version 2 (MS-CHAPv2) ou d'autres méthodes.
Les fichiers de configuration par défaut de FreeRADIUS servent de documentation et décrivent tous les paramètres et directives. Si vous souhaitez désactiver certaines fonctionnalités, commentez-les au lieu de supprimer les parties correspondantes dans les fichiers de configuration. Cela vous permet de préserver la structure des fichiers de configuration et la documentation incluse.
Conditions préalables
-
Vous avez installé le paquetage
freeradius
. -
Les fichiers de configuration du répertoire
/etc/raddb/
sont inchangés et fournis par le paquetagefreeradius
. Les fichiers suivants existent sur le serveur :
-
Clé privée TLS de l'hôte FreeRADIUS :
/etc/raddb/certs/server.key
-
Certificat de serveur TLS de l'hôte FreeRADIUS :
/etc/raddb/certs/server.pem
-
Certificat d'autorité de certification TLS :
/etc/raddb/certs/ca.pem
Si vous stockez les fichiers à un autre endroit ou s'ils portent des noms différents, définissez les paramètres
private_key_file
,certificate_file
etca_file
dans le fichier/etc/raddb/mods-available/eap
en conséquence.-
Clé privée TLS de l'hôte FreeRADIUS :
Procédure
Si le site
/etc/raddb/certs/dh
avec les paramètres Diffie-Hellman (DH) n'existe pas, créez-en un. Par exemple, pour créer un fichier DH avec une primauté de 2048 bits, entrez :openssl dhparam -out /etc/raddb/certs/dh 2048
# openssl dhparam -out /etc/raddb/certs/dh 2048
Copy to Clipboard Copied! Pour des raisons de sécurité, n'utilisez pas un fichier DH avec moins de 2048 bits. Selon le nombre de bits, la création du fichier peut prendre plusieurs minutes.
Définissez des autorisations sécurisées pour la clé privée TLS, le certificat du serveur, le certificat de l'autorité de certification et le fichier contenant les paramètres DH :
chmod 640 /etc/raddb/certs/server.key /etc/raddb/certs/server.pem /etc/raddb/certs/ca.pem /etc/raddb/certs/dh chown root:radiusd /etc/raddb/certs/server.key /etc/raddb/certs/server.pem /etc/raddb/certs/ca.pem /etc/raddb/certs/dh
# chmod 640 /etc/raddb/certs/server.key /etc/raddb/certs/server.pem /etc/raddb/certs/ca.pem /etc/raddb/certs/dh # chown root:radiusd /etc/raddb/certs/server.key /etc/raddb/certs/server.pem /etc/raddb/certs/ca.pem /etc/raddb/certs/dh
Copy to Clipboard Copied! Modifiez le fichier
/etc/raddb/mods-available/eap
:Définissez le mot de passe de la clé privée dans le paramètre
private_key_password
:eap { ... tls-config tls-common { ... private_key_password = key_password ... } }
eap { ... tls-config tls-common { ... private_key_password = key_password ... } }
Copy to Clipboard Copied! En fonction de votre environnement, définissez le paramètre
default_eap_type
de la directiveeap
en fonction du type d'EAP primaire que vous utilisez :eap { ... default_eap_type = ttls ... }
eap { ... default_eap_type = ttls ... }
Copy to Clipboard Copied! Pour un environnement sécurisé, utilisez uniquement
ttls
,tls
oupeap
.Commentez les directives
md5
pour désactiver la méthode d'authentification non sécurisée EAP-MD5 :eap { ... # md5 { # } ... }
eap { ... # md5 { # } ... }
Copy to Clipboard Copied! Notez que, dans le fichier de configuration par défaut, les autres méthodes d'authentification EAP non sécurisées sont commentées par défaut.
Modifiez le fichier
/etc/raddb/sites-available/default
et mettez en commentaire toutes les méthodes d'authentification autres queeap
:authenticate { ... # Auth-Type PAP { # pap # } # Auth-Type CHAP { # chap # } # Auth-Type MS-CHAP { # mschap # } # mschap # digest ... }
authenticate { ... # Auth-Type PAP { # pap # } # Auth-Type CHAP { # chap # } # Auth-Type MS-CHAP { # mschap # } # mschap # digest ... }
Copy to Clipboard Copied! Seule l'option EAP est activée et les méthodes d'authentification en texte clair sont désactivées.
Modifiez le fichier
/etc/raddb/clients.conf
:Définissez un mot de passe sécurisé dans les directives client
localhost
etlocalhost_ipv6
:client localhost { ipaddr = 127.0.0.1 ... secret = client_password ... } client localhost_ipv6 { ipv6addr = ::1 secret = client_password }
client localhost { ipaddr = 127.0.0.1 ... secret = client_password ... } client localhost_ipv6 { ipv6addr = ::1 secret = client_password }
Copy to Clipboard Copied! Si des clients RADIUS, tels que des authentificateurs de réseau, sur des hôtes distants doivent pouvoir accéder au service FreeRADIUS, ajoutez les directives client correspondantes pour eux :
client hostapd.example.org { ipaddr = 192.0.2.2/32 secret = client_password }
client hostapd.example.org { ipaddr = 192.0.2.2/32 secret = client_password }
Copy to Clipboard Copied! Le paramètre
ipaddr
accepte les adresses IPv4 et IPv6, et vous pouvez utiliser la notation facultative CIDR (classless inter-domain routing) pour spécifier des plages. Toutefois, vous ne pouvez définir qu'une seule valeur pour ce paramètre. Par exemple, pour accorder l'accès à une adresse IPv4 et IPv6, ajoutez deux directives client.Utilisez un nom descriptif pour la directive client, tel qu'un nom d'hôte ou un mot décrivant l'endroit où la plage IP est utilisée.
Si vous souhaitez utiliser EAP-TTLS ou EAP-PEAP, ajoutez les utilisateurs au fichier
/etc/raddb/users
:example_user Cleartext-Password := "user_password"
example_user Cleartext-Password := "user_password"
Copy to Clipboard Copied! Pour les utilisateurs qui doivent utiliser l'authentification par certificat (EAP-TLS), n'ajoutez aucune entrée.
Vérifier les fichiers de configuration :
radiusd -XC
# radiusd -XC ... Configuration appears to be OK
Copy to Clipboard Copied! Activez et démarrez le service
radiusd
:systemctl enable --now radiusd
# systemctl enable --now radiusd
Copy to Clipboard Copied!
Vérification
Résolution de problèmes
Arrêtez le service
radiusd
:systemctl stop radiusd
# systemctl stop radiusd
Copy to Clipboard Copied! Démarrer le service en mode débogage :
radiusd -X
# radiusd -X ... Ready to process requests
Copy to Clipboard Copied! -
Effectuer les tests d'authentification sur l'hôte FreeRADIUS, comme indiqué dans la section
Verification
.
Prochaines étapes
- Désactivez les méthodes d'authentification qui ne sont plus nécessaires et les autres fonctions que vous n'utilisez pas.