Vous êtes sur la page 1sur 8

IUT des Pays de l’Adour

Licence PRO ASUR

Configuration
AAA/RADIUS sur Cisco/Linux

1 Objectifs
Le but de ce TP est de mettre en place un serveur RADIUS sous Linux et de l’utiliser à des fins
d’authentification et de comptabilité depuis un routeur Cisco.

2 Architecture de travail

Ayant la nécessité de disposer des droits d’administrateurs, vous devrez travailler sur les machines
virtuelles. Un seul PC est néanmoins suffisant qui pourra servir (dans des fenêtres distinctes), de
terminal, de client telnet et de serveur Radius.

Vérifiez AVANT TOUT que vous disposiez bien d’un PC sous Linux UBUNTU et que le package
freeradius soit bien installé. Pour cela, vérifiez par exemple la présence du programme exécutable
/usr/sbin/freeradius. Si ce n’est pas le cas, vérifiez votre connexion à internet et faites le avec :
« aptitude install freeradius ». Si cela ne marche pas vérifiez :
o Que le cache est configuré
o Que le dépôt « tierce partie » est activé dans les dépôts utilisables
ou utilisez l'interface graphique !

Mettez en place l’architecture suivante en utilisant des adresses IP en correspondance avec les adresses
qui sont affectées à vos machines virtuelles.

18.X / 24
PC 1 (Linux
UBUNTU)

RZO : 10.2.18.0 / 24
Switch Central (Huguette ou
Hortense)

18.Y / 24
PC 2 (Linux
UBUNTU)

18.Z

Les fichiers de configuration de freeradius se trouvent sous le répertoire /etc/freeradius/
De nombreux fichiers de configuration apparaissent dans ce répertoire, mais en réalité, le seul fichier pris en
compte est le fichier « radiusd.conf ». Néanmoins, d'autres fichiers de configuration vont être utilisés depuis
« radiusd.conf » par des directives « include ». Particulièrement, à la fin du fichier, vous pourrez remarquer une
directive include de tous les fichiers se trouvant dans le répertoire « /etc/freeradius/sites-enabled ». Pour ceux qui
sont habitués à la syntaxe d'Apache2, il s'agit du même principe permettant de configurer des serveurs virtuels.
Dans le cadre de ce TP, vous n'aurez nul besoin de modifier « radiusd.conf ». Seul le fichier « default » se
trouvant dans le dossier « /etc/freeradius/sites-available » devra être modifié.
Mais AVANT de modifier quoi que ce soit dans ce fichier, FAITES EN UNE COPIE sous « default.orig » !!!

1
V 2.0

Il a pour rôle de réécrire dans un format aujourd’hui standard (essentiellement les attributs). qui permet d’interfacer RADIUS avec un serveur ldap externe.. group et shadow d’Unix. les requêtes issues de NAS anciens ou pas parfaitement conforme aux dernières spécifications.1 Généralités Cette section permet de définir les paramètres de configuration de chaque module. que l'instanciation d'un module n'est pas obligatoire ICI … en effet. ce module permet de concevoir un numéro d’identification plus fiable. il n'est pas nécessaire de modifier quoi que ce soit ici . L’objectif de ce TP n’est pas de détailler ici toutes les fonctionnalités de freeradius. La plupart des directives sont assez explicites.0 . et quoi qu’il en soit sont commentées. 3 Fichier de configuration « radiusd. identique pour toutes les requêtes de comptabilité reçues par le serveur entre un « start » et un « stop ». Les paramètres sont bien entendu spécifiques à chaque module.  … Cette section permet donc d’instancier tout module . Vous la repèrerez grâce à la directive de début de bloc « modules { ».3. Même si un identificateur semblable (géré par l’attribut 44 : Acct_Session_ID°est censé exister.3.conf » d’Apache. c'est à dire en quelque sorte de le charger en mémoire en tenant compte de ses paramètres de configuration (voir section suivante: modules). contenant les bases d’authentification. Jetez un coup d'œil. un module sera de toute façon AUTOMATIQUEMENT instancié au moment de son utilisation.2 Modules à utiliser pour le TP Dans le cadre de notre TP. il vous est possible de « nettoyer » quelque peu cette section et de ne conserver que les modules qui vont nous intéresser. 3. 2 V 2. ce qui permet de l’interfacer facilement avec tout autre type de matériel ou service. « acct_unique » : module dédié au service de comptabilité.conf » est assez pénible à appréhender … quelques explications s’imposent.1 Section « Directives générales » La première partie comporte un certain nombre de directives générales (qui ne sont pas sans rappeler les directives du fichier « httpd. « files » : module qui nous permettra d’utiliser une base de données d’authentification sous forme de fichier local au serveur RADIUS. Quelques exemples de modules :  « unix ». à savoir : « preprocess » : ce module (quasi indispensable) est appliqué avant tous les autres. Pour des raisons techniques. pour ceux qui connaissent).conf » 3. A quoi sert donc cette section ? Certains modules sont … capricieux. Inutile de dire que dans la grande majorité des cas. Même si cette utilisation est rare dans un contexte de production. Il permet de générer un identification unique de session. hors sujet aujourd’hui. qui permet d’utiliser les fichiers au format /etc/password. mais d’en comprendre le fonctionnement général.2 Section « instanciation » (de modules) Freeradius est conçu de façon extrêmement modulaire.3 Section « Modules » 3. et vous comprendrez vite son intérêt. ils doivent être instanciés avant certains autres qui les utilisent. (ou on préfèrera une base de données SQL ou LDAP) elle est largement plus simple à mettre en œuvre dans le cadre de ce TP et permet de nous affranchir de tout problème d’installation d’un serveur de BD. 3. qu’il est préférable d’utiliser. 3. comme base de données du serveur RADIUS  « eap ».. qui permet d’utiliser ce type d’authentification avec le NAS  « ldap ». Il est important de noter.IUT des Pays de l’Adour Licence PRO ASUR « radiusd. Cette section permet donc d'éviter ce genre de comportement particulier en faisant une instanciation manuelle. voire de comptabilité. (en français : royaume) permettant de relayer les requêtes sur un autre serveur RADIUS (fonctionnalité de « proxy-radius »).  « realm ». pour gagner en lisibilité.

et passe à l’étape correspondant à la section « post-auth ». le fichier « default »). 3. regardons ces sections en détail : 3 V 2.2 Etape « authorize » Lors de la réception d’une requête d’AUTHENTIFICATION de la part du NAS. dans laquelle il exécute les modules configurés dans cette section afin de modifier éventuellement les attributs renvoyés au NAS. à la place de l’attribut « User-password » vous pouvez trouver les attributs « CHAP-Password » et « CHAP-Challenge »). APRES application des modules contenus dans cette section (typiquement « preprocess »). SGBD ou autre équipement tiers. il est intuitivement facile de comprendre que la section « preacct » correspond à l’étape située APRES réception d’un message de comptabilité. sont contenues dans les fichiers du dossier « sites-available » (dans ce TP.1. De même. « Check » et « Reply » formalisées dans le tableau ci-dessous : « Request> « Check » « Reply » 3. La table « Request » contient généralement au moins un attribut « User-Name » et un attribut « User-Password » (notez que dans le cadre d’un échange CHAP avec le NAS. il exécute les modules lui permettant de comparer « intelligemment » les attributs de la première table et de la seconde pour procéder à l’authentification proprement dite. 3. Il est de plus très facile d’écrire un module sous freeradius (enfin ça … ça n’engage que Tony  ).5 FAQ… Q : Pourquoi une telle usine à gaz ? R : parce qu’en adoptant ce principe. 3.4. pendant lequel les modules seront appliqués sur les messages. après avoir confirmé ou infirmé l’authentification. qu’il appelle « Request ».4.1. avec un mot de passe récupéré en clair dans les bases d’authentification.1.4. les sections suivantes. et AVANT son traitement proprement dit.4 Etape « post-auth » Enfin.0 de Freeradius.4. on en a fini avec l’intuitif et l’éloquent … pour bien comprendre les trois sections (TRES SPECIFIQUES A L’IMPLANTATION FREERADIUS ET ABSOLUMENT PAS GENERALES AU CONCEPT RADIUS…) « authorize » « authenticate » et « post-auth ». Freeradius exécute l’étape correspondant à la section maladroitement appelée « AUTHORIZE » dans le fichier de configuration. Au cours de cette étape. Cette table contient maintenant des attributs sur lesquels on peut faire la même remarque que ci-dessus. dans le fichier).0 . ce qui le rend parfaitement adaptable à tout NAS. il enregistre dans la table « Request » les attributs reçus dans la requête (et éventuellement modifiés par l’effet de ces différents modules). absolument TOUTE mise en forme des messages peut être appliquée à TOUS les stades de leur traitement par Freeradius.IUT des Pays de l’Adour Licence PRO ASUR 3. les sections « accounting » « preproxy » et « post-proxy » ont des noms assez éloquents… Autant vous avertir tout de suite.4 Sections d’application de modules REMARQUE: Depuis la version 2. Freeradius récupère dans la base de données d’authentification (dans notre cas. 3. demandez donc à votre enseignant de vous éclairer ! […] Maintenant que tout est bien compris. « intelligemment » veut dire qu’il va invoquer les modules (configurés dans cette section). C’est donc dans cette section qu’il est particulièrement indiqué d’invoquer le module « preprocess » expliqué plus haut.3 Etape « authenticate » Après quoi.4. lui permettant de mettre éventuellement en forme les attributs d’une table pour les rendre comparables à ceux de l’autre table. Ce peut être le cas pour comparer un mot de passe transmis en chiffré.1.1 Le concept de Freeradius Chacune des sections suivantes correspond à une étape (dans la chaîne de traitement des messages. Toujours dans la même étape. Allons y donc : Freeradius gère en interne 3 tables distinctes. les attributs correspondant au « User-Name » spécifié. spécifiques à chaque serveur virtuel.1. Par exemple. et enregistre ces nouveaux attributs dans la table « Check ». Freeradius exécute l’étape correspondant à la section « AUTHENTICATE » du fichier de configuration. en ce qui concerne le mot de passe. il faut un certain nombre de connaissances préalables liées à la structure de données utilisée par le code de Freeradius. qu’un long et obscur discours : si certains aspects vous dérangent encore.1 Principe général 3.4. sur simple évocation de module (existant ou créé par vos soins). Freeradius construit la réponse « Accept-Reject » ou « Access-Accept ». par le code de freeradius). Mieux vaut une bonne explication sur ces différents points.

dans le module « files ». l’appel au module « preprocess ».3 Section « authenticate » Cette section permet d’appeler des modules qu vont œuvrer dans le sens de comparer (à des fins d’authentification) les valeurs des attributs des tables « Request » et « Check » de Freeradius. modules et sections superflues. Le fichier de BD d’authentification que va utiliser freeradius est configurable dans « radiusd. Il convient donc de respecter précisément la syntaxe de ce fichier afin que ce module fonctionne correctement. 3. nous utiliserons une base de données d’authentification sur fichier local au serveur Freeradius. Elles sont commentées dans le fichier de configuration et expliquées dans la doc de Freeradius. ou un numéro de vlan. suivi de l’appel au module d’interfaçage avec la base de données d’authentification (dans notre cas « files »). faites une sauvegarde du fichier « users » exemple proposé dans la distribution Un bon exemple valant mieux que deux longues explications.conf ».IUT des Pays de l’Adour Licence PRO ASUR 3.4. Fall-Through = 1 DEFAULT Nas-Port == 10. 3. Fall-Through = 1 4 V 2. 3.1 Généralités Comme nous l’avons dit précédemment. Nas-IP-Address == 12.5 Autres sections Les autres sections proposées dans le fichier de configuration de Freeradius correspondent à des étapes de la chaîne de traitement des messages qui sont plus faciles à appréhender que les trois précédentes. on trouvera dans cette section. regardons celui ci-dessous : DEFAULT Tunnel-Type = VLAN. Ici encore. Vous pouvez laisser cette variable telle quelle pour la suite. comme elle peut appeler un module de chiffrement (par exemple pour comparer un mot de passe chiffré dans une table et en clair dans l’autre table). A titre de remarque entre parenthèse : en utilisant le module « unix » à la place du module « file » la syntaxe à utiliser pour ce fichier aurait été différente. Nous ne les utiliserons pas dans le cadre de ce TP. Cette section restera vide dans le cadre de notre TP.2 Syntaxe du fichier AVANT de le modifier. ou la modifier si cela vous démange … 4. 4 Fichier de base de données d’authentification 4. Par défaut.12 Idle-Timeout = 300.2 Section « authorize » Cette section permet d’appeler des modules qu vont œuvrer dans le sens de créer et mettre en forme des valeurs dans la table « Check » de Freeradius. De ce fait. le module invoqué pour l’interprétation de ce fichier (module « files ») est inclus dans le code de Freeradius. elle aurait dû correspondre par exemple à celle du fichier /etc/shadow. cette variable est initialisée à la valeur « ${confdir}/users » qui correspond pour nous à /etc/freeradius/users.4.12. comme des informations sur une adresse IP à attribuer au client. ajout ou suppression d’attributs.4.12. par le truchement de la variable « usersfile ». Cette section restera également vide dans le cadre de notre TP. Typiquement.0 . Elle peut tout à fait être vide (par exemple si les deux attributs contenant le mot de passe ont les deux mêmes valeurs dans les deux tables).4 Section « post-auth » Cette section permet d’appeler des modules applicables aux attributs contenus dans la réponse que renverra FreeRadius au NAS. 3.5 Exemple de fichier de configuration Un exemple de fichier simplifié pour notre TP est fourni en annexe. nettoyé de tout commentaires. pour ce TP. il peut s’agit de pure mise en forme.4.

le reste du fichier ne sera pas analysé. le reste du fichier sera également analysé. Le fichier « dictionary » vous permettra de découvrir beaucoup plus d’attributs que ce dont vous n’aurez jamais osé rêver !!! 5 Fichier « clients. on arrête d’analyser la suite du fichier.  Si l’attribut « User-Name » dont dispose Freeradius est égal à « jjb » l’action suivante sera exécutée : l’attribut « User-Password » sera affecté à la valeur « sesame ».  DEFAULT correspond à toute valeur de « User-Name ».12 définit deux conditions.  Si l’attribut « User-Name » dont dispose Freeradius est égal à « anthony » l’action suivante sera exécutée : l’attribut « User-Password » sera affecté à la valeur « tony ». Les tabulations sont essentielles pour le bon fonctionnement du fichier. Nas-IP-Address == 12. le reste du fichier est ignoré.12. La première ligne correspond au « User-Name » et aux conditions. 5 V 2. notez que l’on exploite la possibilité de faire une « action » sur la ligne « condition » (ici une affectation). la ligne Fall-Through = 1 permet de continuer l’analyse des autres rubriques. on se contente d’affecter une valeur à l’attribut « User-Password » qui sera enregistré dans la colonne « Check » de la table interne de Freeradius. Entre autres. et il n’y a pas de condition. Ici encore. Dans ce cas il n’y en a qu’un : on indique que l’utilisateur sera placé dans un vlan (Tunnel-Type = VLAN). Dans l’exemple cidessus. par effet de bord. Le vlan 4 sera attribué (renvoi de l’attribut correspondant : Tunnel-Private-group-Id). Normalement. Dans ce cas. La directive suivante (Fall-Trough = 1) permet d’invalider ce postulat. dès lors qu’une rubrique est prise en compte. Le contrôle de mot de passe sera donc fait lors de l’étape suivante « authenticate ». quelque soit l’utilisateur. On ne procède donc à aucune vérification lors de l’étape « authorize ». Cette fois. dont le Nas-port est le numéro 10 (typiquement le numéro de port d’un switch). chacun d’entre elles correspondant à une condition. Le vlan 3 sera attribué (renvoi de l’attribut correspondant : Tunnel-Private-group-Id). un attribut de valeur maximale d’inactivité sera renvoyé au serveur Freeradius. La rubrique sera donc toujours prise en compte … avec une affectation qui sera effectuée pendant la phase de test.IUT des Pays de l’Adour Licence PRO ASUR anthony User-Password := "tony" Tunnel-Private-Group-Id = 3.12.12. ainsi que le secret partagé avec chacun d’eux.12. Cette rubrique sera donc toujours prise en compte.conf » Facile à comprendre cette fois … ce fichier comporte des informations sur les divers NAS avec qui votre serveur va traiter. Les lignes suivantes correspondent aux attributs qui seront renvoyés à Freeradius.  DEFAULT Nas-Port == 10. jjb User-Password := "sesame" Tunnel-Private-Group-Id = 4.0 . quatre rubriques sont formalisées. Cette rubrique s’applique à tous les utilisateurs. Dans cet exemple. La valeur booléenne d’une affectation est « VRAI ». c’est dans ce fichier que vous configurez la ou les adresses IP des clients (NAS) autorisés à interroger votre serveur. Dans les deux cas précédents. veillez à les respecter ! Le fichier est structuré en « rubriques ».12. et l’adresse IP est 12. Ici encore.

mais cette fois indiquez lui que la source des données provient d’un serveur Radius (utilisez le ? pour trouver comme des grands …)  Configurez les divers paramètres du serveur Radius grâce à la commande « radius-server ». ressemblant à celui proposé en exemple.  Appliquez ce nouveau schéma d’authentification aux 5 vty  Ajoutez un nouveau client (le routeur) dans le fichier de configuration « clients. vous n’utiliserez pas le serveur radius.0 .  Vérifiez votre connectivité avec le serveur radius (ping). si ça bugge … c’est ballot)  Essayez de vous connecter par telnet sur votre routeur. à part « == » ou « := ».IUT des Pays de l’Adour Licence PRO ASUR 6 Manipulations 6. aujourd’hui obsolètes). tout en conservant les modules expliqués plus haut et en appelant les modules dans les sections concernées. nous allons utiliser un routeur Cisco comme client Radius.1 A pour Authentification 6. dans cette commande. Testez cette manipulation sur plusieurs noms d’utilisateurs. Essayez de passer en mode « enable » … rectifiez éventuellement le problème si ça ne marche pas en configurant « toto » comme mot de passe administrateur (commande « enable secret toto »)  Créez maintenant un schéma d’authentification. le routeur ne procède pas de la même façon … (si. « != ». Pour vous la différence n’est pas bien grande avec un telnet traditionnel. … 6. Sachez aussi que sur la ligne condition.  A l’aide de la commande « radtest » depuis le client radius (NAS) de test. Dans un premier temps. mais la simple base de données locale au routeur (donc l’utilisateur BOB que vous venez de créer). Vous pouvez bien entendu vous inspirer du fichier exemple. je vous jure !)  Créez maintenant un nouveau schéma d’authentification.1. ATTENTION. N’oubliez pas que chaque modification du fichier de configuration ne sera prise en compte qu’en arrêtant et en relançant le service. interrogez votre serveur radius et visualisez les attributs renvoyés. vous pouvez aussi essayer des « > ». « >= ».  Appliquez ce schéma aux 5 vty (de 0 à 4). Pour ce faire.  Activez le modèle d’authentification AAA sur le routeur : « aaa new-model »  Créez un utilisateur BOB local au routeur avec la commande username <name> secret <mdp>  Essayez de vous connecter en telnet sur votre routeur.conf » minimal. mais en interne. Si vous lancez le serveur par la commande ci-dessus. Dans ce schéma vous indiquez le type de source que le routeur va utiliser comme base de données d’authentification.2 Configuration du client radius (NAS) Pour illustrer cette rubrique.  Configurez votre routeur en attribuant une adresse à l’interface Ethernet dans la plage prévue sur le schéma. vous ne récupèrerez pas la main … mais c’est plus pratique pour l’arrêter !  Créez un fichier d’utilisateurs simple. utilisez la commande : « aaa authentication login <schéma> local ». à la place du « login local » habituel (évitez de l’appliquer à l’accès console.1. vous devez IMPERATIVEMENT spécifier les ports 1812 (authentification) et 1813 (autorisation/comptabilté) et ne surtout pas laisser les valeurs par défaut qui ne sont pas les bonnes chez Cisco (anciennes valeurs.1 Configuration du serveur freeradius  Mettez en place un fichier de configuration « radiusd. N’hésitez pas à modifier le fichier « users » (piochez des idées dans le fichier « dictionary »afin de multiplier vos tests …). dans laquelle <schéma> est à remplacer par le nom de schéma de votre choix. et analysez les résultats selon les différents cas. L’option « x » vous permettra d’obtenir quelques messages intéressants au lancement (surtout s’il ne se lance pas …).  Lancez votre serveur freeradius par la commande « /usr/sbin/freeradius –x » .si.conf » de Freeradius (et relancez Freeradius …) 6 V 2. fourni en annexe.

qui vous permettra de donner automatiquement à un utilisateur un niveau de privilège prédéfini dans son profil. Relancez le server Freeradius  Sur le routeur. Un module appelé « acct_unique » permet de forger un numéro d’identification plus fiable. mais ça ne présente qu’un intérêt très limité. Le module qui s’occupe de cela n’est plus le module « file » comme c’était le cas précédemment.  Modifiez le fichier « users » du serveur Freeradius pour configurer deux utilisateurs différents. La différence n’est visible que dans le fichier enregistré et pas dans les traces consoles. Le principe est le même que pour un schéma d’authentification. mais un module spécifique au service de comptabilité appelé « detail ».IUT des Pays de l’Adour  Licence PRO ASUR Testez une connexion telnet en utilisant un compte de la base radius. sans être enregistrées sur aucun fichier ni base de données. pour éviter les conflits inutiles. créez un schéma d’autorisation interrogeant un serveur radius. et que « exec » remplace « login ». au début et déclaration de modules.  Relancez le serveur et testez le fonctionnement de ce nouveau fichier de comptabilité. méfiez vous quand même des attributs superflus (Tunnel-Type. c’est que votre connexion telnet marche correctement. nous allons maintenant enregistrer des données permettant de mettre en place un procédé de facturation. …) de la manip précédente. choisissez un nom de schéma différent des deux premiers.  Les traces ne passent malheureusement que sur l’écran.  Regardez la syntaxe de configuration de ce module dans le fichier de « radiusd. Ici encore.  Appliquez ce schéma d’autorisation aux 5 vty  Essayez de vous connecter sous les deux identités pour tester la différence.  Appliquez ce schéma de comptabilité aux 5 vty  Connectez vous par telnet.3 A pour Comptabilté … Dernière étape du TP.2 A pour Autorisation Si vous êtes ici. que pourrait renvoyer le freeradius à un routeur Cisco mal luné … 6.conf » et cherchez le nom et l’emplacement du fichier de trace que le module « détail » va créer (sections déclaration de variables. Evitez de lui donner le même nom de schéma que le schéma d’authentification.  Enfin. Pour cela nous allons utiliser un attribut spécifique au matériel Cisco : « Service-Type » auquel vous essayerez de faire prendre les deux valeurs « Administrative-User » et « Login-User ». Choisissez l’option « start-stop ». Vous avez maintenant l’habitude. nous allons activer le service de comptabilité :  Sur le routeur. Nous allons maintenant configurer le service d’autorisations.  Déconnectez vous et faites de même. En cas de problème. Pour cela. vous constaterez que l’attribut « Acct-Session-Id » est un peu … rudimentaire. en utilisant un fichier local (comme pour l’authentification). 6. Voyez vous pourquoi ? 7 V 2. et analysez les traces qui passent sur la fenêtre principale du serveur radius. Mettez ce module en activité en l’instantiant dans la section « preacct » et testez le résultat. Nous allons remédier à cela. juste après). la commande est la même que pour le schéma d’autorisation en remplaçant « authorization » par « accounting ». Ajoutez l’attribut à ci-dessus à leur profil.  Rajoutez maintenant l’appel au module « detail » dans la section « accounting ». c'est-à-dire en privilège 1 et que vous devez passer manuellement en mode de privilège 15 (enable) par la commande du même nom.0 . Il vous serait possible maintenant d’appliquer ce schéma d’authentification au port console sans trop de risque. mais donnez leur une valeur différente à chacun. vous avez sans doute remarqué que vous vous retrouvez (comme d’habitude) connectés en « user mode ». En revanche. créez un schéma de comptabilité interrogeant un serveur radius. à cela près que le mot clé « authentication » devient « authorization ».

NOTEZ QUE DANS LA PRATIQUE. CE FICHIER CORRESPOND AU « DEFAULT » QUI SE TROUVE DANS LE DOSSIER « SITES-AVAILABLE ».0 .IUT des Pays de l’Adour Licence PRO ASUR 7 Annexe : Exemple de fichier de configuration # # # # DANS LE CADRE DE CE TP. UN TEL FICHIER DOIT ETRE MIS EN PLACE POUR CHAQUE SERVEUR FREERADIUS VIRTUEL authorize { preprocess files } authenticate { } preacct { preprocess files } accounting { } session { } post-auth { } pre-proxy { } post-proxy { } 8 V 2.