freeradius-3.0.x
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
freeradius-3.0.x [2019/06/07 14:13] – arnaud.lauriou_renater.fr | freeradius-3.0.x [2023/02/23 14:49] (Version actuelle) – arnaud.lauriou@renater.fr | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ===== Configuration FreeRADIUS 3.0.X ===== | + | ===== Configuration FreeRADIUS 3.0.X et 3.2.Y ===== |
- | + | <WRAP important 70%> | |
- | ==== README | + | Si vous procédez à une montée de version majeure, par exemple le passage de FreeRADIUS 2 à FreeRADIUS 3, ne reprenez pas vos anciens fichiers de configs tels quels, utilisez les nouveaux fichiers fournis par défaut avec la nouvelle version comme base de configuration. |
- | Fichiers testés | + | </ |
+ | ==== README | ||
+ | **Configurations testées | ||
Rôles : SP + IdP | Rôles : SP + IdP | ||
Ligne 10: | Ligne 12: | ||
EAP : PEAP/ | EAP : PEAP/ | ||
- | Attribut : Operator-Name. | + | Ajout de l' |
Annuaire : Absent, à configurer pour votre site dans mods-enable/< | Annuaire : Absent, à configurer pour votre site dans mods-enable/< | ||
Ligne 17: | Ligne 19: | ||
* Vos secrets | * Vos secrets | ||
* MONREALM : votre realm | * MONREALM : votre realm | ||
- | * ETABLISSEMENT.TLD : peut être le même que MONREALM ou à défaut votre domaine | + | * ETABLISSEMENT.TLD : peut être le même que MONREALM ou à défaut votre domaine |
- | * Dans eap.conf : certificat | + | * Dans eap.conf : certificats |
==== clients.conf ==== | ==== clients.conf ==== | ||
< | < | ||
+ | # eduroam.fr | ||
client rad1.eduroam.fr { | client rad1.eduroam.fr { | ||
- | ipaddr | + | ipaddr |
netmask | netmask | ||
secret | secret | ||
Ligne 33: | Ligne 35: | ||
} | } | ||
client rad2.eduroam.fr { | client rad2.eduroam.fr { | ||
- | ipaddr | + | ipaddr |
netmask | netmask | ||
secret | secret | ||
Ligne 41: | Ligne 43: | ||
require_message_authenticator = yes | require_message_authenticator = yes | ||
} | } | ||
- | client | + | # Mon site |
+ | client | ||
ipaddr | ipaddr | ||
netmask | netmask | ||
secret | secret | ||
- | shortname | + | shortname |
nastype | nastype | ||
virtual_server | virtual_server | ||
require_message_authenticator = yes | require_message_authenticator = yes | ||
+ | Operator-Name | ||
+ | # locaux (borne, contrôleur) offrant le | ||
+ | # service Wi-Fi. Doit commencer par ' | ||
+ | } | ||
+ | client WLC01.ETABLISSEMENT.TLD { | ||
+ | ipaddr | ||
+ | netmask | ||
+ | secret | ||
+ | shortname | ||
+ | nastype | ||
+ | virtual_server | ||
+ | require_message_authenticator = yes | ||
+ | Operator-Name | ||
+ | # locaux (borne, contrôleur) offrant le | ||
+ | # service Wi-Fi. Doit commencer par ' | ||
} | } | ||
</ | </ | ||
Ligne 58: | Ligne 76: | ||
home_server rad1.eduroam.fr { | home_server rad1.eduroam.fr { | ||
type = auth | type = auth | ||
- | ipaddr | + | ipaddr |
port = 1812 | port = 1812 | ||
secret | secret | ||
- | require_message_authenticator = yes | ||
response_window = 20 | response_window = 20 | ||
zombie_period | zombie_period | ||
Ligne 70: | Ligne 87: | ||
home_server rad2.eduroam.fr { | home_server rad2.eduroam.fr { | ||
type = auth | type = auth | ||
- | ipaddr | + | ipaddr |
port = 1812 | port = 1812 | ||
secret | secret | ||
- | require_message_authenticator = yes | ||
response_window = 20 | response_window = 20 | ||
zombie_period | zombie_period | ||
Ligne 95: | Ligne 111: | ||
} | } | ||
</ | </ | ||
- | ==== serveur virtuel par defaut | + | ==== serveur virtuel par défaut |
< | < | ||
server eduroam { | server eduroam { | ||
Ligne 108: | Ligne 124: | ||
port = 0 | port = 0 | ||
} | } | ||
+ | |||
| | ||
authorize { | authorize { | ||
+ | # Force le format de l' | ||
+ | # syntaxe des @MAC quelque soit le NAS (ou client) envoyant la requête | ||
+ | rewrite_calling_station_id | ||
+ | | ||
+ | # Quelques filtres sanitaire sur le User-Name : pas d' | ||
filter_username | filter_username | ||
- | if (" | + | |
- | | + | # Ajout de l' |
- | | + | # ayant la variable 'Operator-Name' déclarée (voir clients.conf) |
- | } | + | |
- | | + | |
auth_log | auth_log | ||
suffix | suffix | ||
+ | | ||
+ | # Rejet des authentifications sans realm | ||
if (Realm == " | if (Realm == " | ||
update request { | update request { | ||
Ligne 124: | Ligne 148: | ||
reject | reject | ||
} | } | ||
+ | | ||
+ | # On accepte uniquement EAP. ie: les demandes d' | ||
+ | # (PAP, CHAP, MSCHAP) ne sont pas acceptées | ||
eap | eap | ||
} | } | ||
+ | |||
authenticate { | authenticate { | ||
+ | # Uniquement le module eap | ||
eap | eap | ||
} | } | ||
+ | |||
preacct { | preacct { | ||
suffix | suffix | ||
} | } | ||
+ | |||
accounting { | accounting { | ||
} | } | ||
+ | |||
post-auth { | post-auth { | ||
Ligne 144: | Ligne 176: | ||
} | } | ||
} | } | ||
+ | |||
pre-proxy { | pre-proxy { | ||
Ligne 151: | Ligne 184: | ||
} | } | ||
} | } | ||
+ | |||
post-proxy { | post-proxy { | ||
Ligne 165: | Ligne 199: | ||
auth_log | auth_log | ||
eap | eap | ||
- | files # pour le compte de test eduroam.fr | + | files # pour le compte de test eduroam.fr |
mschap | mschap | ||
pap | pap | ||
Ligne 189: | Ligne 223: | ||
} | } | ||
</ | </ | ||
- | Rendez accessibles ces 2 serveurs virtuels | + | \\ |
+ | Rendez accessibles ces 2 serveurs virtuels. Si votre service | ||
+ | Pour activer ces serveurs virtuels | ||
< | < | ||
cd sites-enabled; | cd sites-enabled; | ||
</ | </ | ||
- | ==== EAP : mods-available/ | + | ==== Module |
< | < | ||
eap { | eap { | ||
- | default_eap_type = peap | + | # Informations générales communes aux méthodes EAP utilisées |
+ | default_eap_type = peap # Méthode EAP par défaut | ||
timer_expire | timer_expire | ||
ignore_unknown_eap_types = no | ignore_unknown_eap_types = no | ||
Ligne 202: | Ligne 239: | ||
max_sessions = ${max_requests} | max_sessions = ${max_requests} | ||
tls-config tls-common { | tls-config tls-common { | ||
+ | # La clée privée de votre certificat | ||
private_key_file = ${certdir}/< | private_key_file = ${certdir}/< | ||
+ | | ||
+ | # Votre certificat | ||
| | ||
+ | | ||
+ | # La chaîne de certification de l' | ||
+ | # certificat. svp lire https:// | ||
+ | # Exemple avec l'AC TCS Sectigo version courte qui a 1 certificat intermédiaire et | ||
+ | # 1 certificat racine. | ||
+ | # La chaîne de certification "< | ||
+ | # C = NL, O = GEANT Vereniging, CN = GEANT OV RSA CA 4 | ||
+ | # | ||
+ | # Coté supplicant, on déploie le certificat racine sur tous les terminaux : | ||
+ | # C = US, ST = New Jersey, L = Jersey City, O = The USERTRUST Network, | ||
+ | # CN = USERTrust RSA Certification Authority | ||
+ | # | ||
ca_file = ${cadir}/< | ca_file = ${cadir}/< | ||
- | | + | |
- | random_file = / | + | # Si OpenSSL >= 1.1.0, le paramètre dh_file est inutile, sinon décommenter la ligne suivante |
+ | #dh_file = ${certdir}/ | ||
ca_path = ${cadir} | ca_path = ${cadir} | ||
- | cipher_list = " | + | |
+ | # La liste des suites de chiffrement utilisables entre OpenSSL et le supplicant. | ||
+ | # Cette liste est variable en fonction des distributions, | ||
+ | # la liste DEFAULT que l'on peut limiter en excluant certaines suites | ||
+ | # comme SSLv3 et celles de type ' | ||
+ | # cipher_list = " | ||
+ | # Vous pouvez comparer ces listes avec les commandes : openssl ciphers -v '< | ||
+ | # | ||
+ | # Note : Si vous acceptez TLS < 1.2 (voir + bas) alors, avec une version d'OS récente, | ||
+ | # il faudra peut être préciser à OpenSSL d' | ||
+ | # cipher_list = " | ||
+ | # cipher_list = " | ||
+ | # | ||
+ | cipher_list = " | ||
+ | |||
+ | # On laisse OpenSSL gérer les courbes elliptiques utilisées | ||
+ | ecdh_curve = "" | ||
+ | |||
+ | # Si votre serveur utilise OpenSSL >= 1.1.0 alors il faut définir les paramètres | ||
+ | # tls_min_version et tls_max_version. | ||
+ | # Les choix possibles sont : 1.0, 1.1, 1.2 et 1.3 (1.3 à partir de freeRADIUS >= 3.0.19). | ||
+ | # | ||
+ | # Il est fortement recommandé d' | ||
+ | # | ||
+ | # Sachez cependant que certains périphériques anciens utilisent encore la version 1.0 pour | ||
+ | # leur supplicant EAP (même s'il ne l' | ||
+ | # tls_min_version est donc à adapter à votre parc de clients. | ||
+ | # | ||
+ | # tls_max_version doit être à 1.2 (TLS 1.3 est uniquement supporté par certains supplicants pour | ||
+ | # EAP-TLS (certificats personnels), | ||
+ | # Sans la définition de ce paramètre, freeRADIUS utilisera la version TLS la plus | ||
+ | # haute proposée par la librairie OpenSSL : 1.3 avec OpenSSL >= 1.1.1 | ||
+ | # | ||
+ | # Exemple pour accepter uniquement les méthodes EAP avec TLS en version 1.2 : | ||
+ | tls_min_version = " | ||
+ | tls_max_version = "1.2" | ||
+ | |||
+ | # Vous pouvez valider le cache si vous souhaitez avoir des re-authentifications EAP | ||
+ | # plus rapides (voir doc freeRADIUS à ce sujet), il est désactivé dans cet exemple. | ||
cache { | cache { | ||
enable = no | enable = no | ||
Ligne 218: | Ligne 310: | ||
} | } | ||
} | } | ||
+ | |||
+ | # Déclaration des méthodes EAP utilisées, dans cet exemple : TTLS/PAP et PEAP/ | ||
+ | # Surtout ne pas indiquer d' | ||
+ | # les méthodes obsolètes comme LEAP (retirée de freeRADIUS depuis la version 3.0.22) et MD5 ne | ||
+ | # doivent pas être listées. | ||
ttls { | ttls { | ||
tls = tls-common | tls = tls-common | ||
- | default_eap_type = pap | + | |
copy_request_to_tunnel = yes | copy_request_to_tunnel = yes | ||
use_tunneled_reply = yes | use_tunneled_reply = yes | ||
Ligne 227: | Ligne 324: | ||
peap { | peap { | ||
tls = tls-common | tls = tls-common | ||
- | default_eap_type = mschapv2 | + | |
copy_request_to_tunnel = yes | copy_request_to_tunnel = yes | ||
use_tunneled_reply = yes | use_tunneled_reply = yes | ||
Ligne 237: | Ligne 334: | ||
</ | </ | ||
==== Attributs ==== | ==== Attributs ==== | ||
- | Dans mods-config/ | + | Dans mods-config/ |
< | < | ||
DEFAULT | DEFAULT | ||
... | ... | ||
+ | User-Name =* ANY, | ||
+ | EAP-Message =* ANY, | ||
+ | Message-Authenticator =* ANY, | ||
+ | NAS-IP-Address =* ANY, | ||
+ | NAS-Identifier =* ANY, | ||
+ | State =* ANY, | ||
+ | Proxy-State =* ANY, | ||
Calling-Station-Id =* ANY, | Calling-Station-Id =* ANY, | ||
+ | Called-Station-Id =* ANY, | ||
Operator-Name =* ANY, | Operator-Name =* ANY, | ||
Chargeable-User-Identity =* ANY, | Chargeable-User-Identity =* ANY, | ||
... | ... | ||
</ | </ | ||
- | Dans mods-config/ | + | Dans mods-config/ |
< | < | ||
DEFAULT | DEFAULT | ||
Ligne 254: | Ligne 359: | ||
... | ... | ||
</ | </ | ||
+ | ==== radiusd.conf ==== | ||
+ | Très peu de modifications sont nécessaires dans ce fichier, on ajoute juste des traces pour les authentifications car elles peuvent contenir des infos intéressantes.\\ | ||
+ | Assurez vous aussi que le paramètre // | ||
+ | < | ||
+ | log { | ||
+ | ... | ||
+ | auth = yes | ||
+ | } | ||
+ | security { | ||
+ | ... | ||
+ | | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ==== Traces (section optionnelle) ==== | ||
+ | Si vous voulez des traces supplémentaires, | ||
+ | Exemple pour un site fournisseur d' | ||
+ | Créer le fichier mods-available/ | ||
+ | < | ||
+ | linelog eduroam_inner_log { | ||
+ | # | ||
+ | filename = ${logdir}/ | ||
+ | permissions = 0640 | ||
+ | format = "" | ||
+ | reference = " | ||
+ | inner_auth_log { | ||
+ | Access-Accept = "%t : eduroam-inner-auth (%n) # | ||
+ | Access-Reject = "%t : eduroam-inner-auth (%n) # | ||
+ | } | ||
+ | } | ||
+ | # < | ||
+ | # %t : horodatage de la trace | ||
+ | # %n : numéro de requête, il sera identique à celui contenu dans les logs par défaut | ||
+ | </ | ||
+ | Activer ce module : | ||
+ | < | ||
+ | cd mods-enabled; | ||
+ | </ | ||
+ | Enfin il faut appeler le module, puisque dans cet exemple on veut l' | ||
+ | < | ||
+ | post-auth { | ||
+ | ... | ||
+ | | ||
+ | ... | ||
+ | | ||
+ | ... | ||
+ | | ||
+ | ... | ||
+ | } | ||
+ | ... | ||
+ | } | ||
+ | </ | ||
==== Chargeable-User-Identity ==== | ==== Chargeable-User-Identity ==== | ||
[[freeradius-cui-3.0.X|Configuration]] pour cet attribut. | [[freeradius-cui-3.0.X|Configuration]] pour cet attribut. |