Vous êtes sur la page 1sur 8

IUT des Pays de lAdour

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 lutiliser des fins
dauthentification et de comptabilit depuis un routeur Cisco.

2 Architecture de travail

Ayant la ncessit de disposer des droits dadministrateurs, vous devrez travailler sur les machines
virtuelles. Un seul PC est nanmoins suffisant qui pourra servir (dans des fentres distinctes), de
terminal, de client telnet et de serveur Radius.

Vrifiez AVANT TOUT que vous disposiez bien dun PC sous Linux UBUNTU et que le package
freeradius soit bien install. Pour cela, vrifiez par exemple la prsence du programme excutable
/usr/sbin/freeradius. Si ce nest pas le cas, vrifiez votre connexion internet et faites le avec :
aptitude install freeradius . Si cela ne marche pas vrifiez :
o Que le cache est configur
o Que le dpt tierce partie est activ dans les dpts utilisables
ou utilisez l'interface graphique !

Mettez en place larchitecture suivante en utilisant des adresses IP en correspondance avec les adresses
qui sont affectes 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 rpertoire /etc/freeradius/


De nombreux fichiers de configuration apparaissent dans ce rpertoire, mais en ralit, le seul fichier pris en
compte est le fichier radiusd.conf . Nanmoins, d'autres fichiers de configuration vont tre utiliss depuis
radiusd.conf par des directives include . Particulirement, la fin du fichier, vous pourrez remarquer une
directive include de tous les fichiers se trouvant dans le rpertoire /etc/freeradius/sites-enabled . Pour ceux qui
sont habitus la syntaxe d'Apache2, il s'agit du mme 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

IUT des Pays de lAdour

Licence PRO ASUR

radiusd.conf est assez pnible apprhender quelques explications simposent.

3 Fichier de configuration radiusd.conf


3.1 Section Directives gnrales
La premire partie comporte un certain nombre de directives gnrales (qui ne sont pas sans rappeler les
directives du fichier httpd.conf dApache, pour ceux qui connaissent). La plupart des directives sont assez
explicites, et quoi quil en soit sont commentes. Lobjectif de ce TP nest pas de dtailler ici toutes les
fonctionnalits de freeradius, mais den comprendre le fonctionnement gnral.

3.2 Section instanciation (de modules)


Freeradius est conu de faon extrmement modulaire, ce qui permet de linterfacer facilement avec tout autre
type de matriel ou service. Quelques exemples de modules :

unix , qui permet dutiliser les fichiers au format /etc/password, group et shadow dUnix, comme
base de donnes du serveur RADIUS

eap , qui permet dutiliser ce type dauthentification avec le NAS

ldap , qui permet dinterfacer RADIUS avec un serveur ldap externe, contenant les bases
dauthentification, voire de comptabilit,

realm , (en franais : royaume) permettant de relayer les requtes sur un autre serveur RADIUS
(fonctionnalit de proxy-radius ).

Cette section permet donc dinstancier tout module , c'est dire en quelque sorte de le charger en mmoire en
tenant compte de ses paramtres de configuration (voir section suivante: modules). Il est important de noter, que
l'instanciation d'un module n'est pas obligatoire ICI en effet, un module sera de toute faon
AUTOMATIQUEMENT instanci au moment de son utilisation. A quoi sert donc cette section ? Certains
modules sont capricieux. Pour des raisons techniques, ils doivent tre instancis avant certains autres qui les
utilisent. Cette section permet donc d'viter ce genre de comportement particulier en faisant une instanciation
manuelle. Inutile de dire que dans la grande majorit des cas, il n'est pas ncessaire de modifier quoi que ce soit
ici ...

3.3 Section Modules


3.3.1 Gnralits
Cette section permet de dfinir les paramtres de configuration de chaque module. Vous la reprerez grce la
directive de dbut de bloc modules { . Jetez un coup d'il, et vous comprendrez vite son intrt. Les
paramtres sont bien entendu spcifiques chaque module.

3.3.2 Modules utiliser pour le TP


Dans le cadre de notre TP, pour gagner en lisibilit, il vous est possible de nettoyer quelque peu cette section
et de ne conserver que les modules qui vont nous intresser, savoir :
preprocess : ce module (quasi indispensable) est appliqu avant tous les autres. Il a pour rle de rcrire dans
un format aujourdhui standard (essentiellement les attributs), les requtes issues de NAS anciens ou pas
parfaitement conforme aux dernires spcifications.
files : module qui nous permettra dutiliser une base de donnes dauthentification sous forme de fichier local
au serveur RADIUS. Mme si cette utilisation est rare dans un contexte de production, (ou on prfrera une base
de donnes SQL ou LDAP) elle est largement plus simple mettre en uvre dans le cadre de ce TP et permet de
nous affranchir de tout problme dinstallation dun serveur de BD, hors sujet aujourdhui.
acct_unique : module ddi au service de comptabilit. Il permet de gnrer un identification unique de
session, identique pour toutes les requtes de comptabilit reues par le serveur entre un start et un stop .
Mme si un identificateur semblable (gr par lattribut 44 : Acct_Session_IDest cens exister, ce module
permet de concevoir un numro didentification plus fiable, quil est prfrable dutiliser.

2
V 2.0

IUT des Pays de lAdour

Licence PRO ASUR

3.4 Sections dapplication de modules


REMARQUE: Depuis la version 2.0 de Freeradius, les sections suivantes, spcifiques chaque serveur virtuel,
sont contenues dans les fichiers du dossier sites-available (dans ce TP, le fichier default ).

3.4.1 Principe gnral


3.4.1.1 LeconceptdeFreeradius
Chacune des sections suivantes correspond une tape (dans la chane de traitement des messages, par le code
de freeradius), pendant lequel les modules seront appliqus sur les messages. Par exemple, il est intuitivement
facile de comprendre que la section preacct correspond ltape situe APRES rception dun message de
comptabilit, et AVANT son traitement proprement dit. Cest donc dans cette section quil est particulirement
indiqu dinvoquer le module preprocess expliqu plus haut. De mme, les sections accounting preproxy et post-proxy ont des noms assez loquents
Autant vous avertir tout de suite, on en a fini avec lintuitif et lloquent pour bien comprendre les trois
sections (TRES SPECIFIQUES A LIMPLANTATION FREERADIUS ET ABSOLUMENT PAS GENERALES
AU CONCEPT RADIUS) authorize authenticate et post-auth , il faut un certain nombre de
connaissances pralables lies la structure de donnes utilise par le code de Freeradius. Allons y donc :
Freeradius gre en interne 3 tables distinctes, quil appelle Request , Check et Reply formalises dans
le tableau ci-dessous :
Request>
Check
Reply

3.4.1.2 Etapeauthorize
Lors de la rception dune requte dAUTHENTIFICATION de la part du NAS, Freeradius excute ltape
correspondant la section maladroitement appele AUTHORIZE dans le fichier de configuration. APRES
application des modules contenus dans cette section (typiquement preprocess ), il enregistre dans la table
Request les attributs reus dans la requte (et ventuellement modifis par leffet de ces diffrents modules).
La table Request contient gnralement au moins un attribut User-Name et un attribut User-Password
(notez que dans le cadre dun change CHAP avec le NAS, la place de lattribut User-password vous
pouvez trouver les attributs CHAP-Password et CHAP-Challenge ).
Toujours dans la mme tape, Freeradius rcupre dans la base de donnes dauthentification (dans notre cas,
dans le fichier), les attributs correspondant au User-Name spcifi, et enregistre ces nouveaux attributs dans
la table Check . Cette table contient maintenant des attributs sur lesquels on peut faire la mme remarque que
ci-dessus, en ce qui concerne le mot de passe.

3.4.1.3 Etapeauthenticate
Aprs quoi, Freeradius excute ltape correspondant la section AUTHENTICATE du fichier de
configuration. Au cours de cette tape, il excute les modules lui permettant de comparer intelligemment les
attributs de la premire table et de la seconde pour procder lauthentification proprement dite.
intelligemment veut dire quil va invoquer les modules (configurs dans cette section), lui permettant de
mettre ventuellement en forme les attributs dune table pour les rendre comparables ceux de lautre table. Ce
peut tre le cas pour comparer un mot de passe transmis en chiffr, avec un mot de passe rcupr en clair dans
les bases dauthentification.

3.4.1.4 Etapepost-auth
Enfin, aprs avoir confirm ou infirm lauthentification, Freeradius construit la rponse Accept-Reject ou
Access-Accept , et passe ltape correspondant la section post-auth , dans laquelle il excute les
modules configurs dans cette section afin de modifier ventuellement les attributs renvoys au NAS.

3.4.1.5 FAQ
Q : Pourquoi une telle usine gaz ?
R : parce quen adoptant ce principe, absolument TOUTE mise en forme des messages peut tre applique
TOUS les stades de leur traitement par Freeradius, ce qui le rend parfaitement adaptable tout NAS, SGBD ou
autre quipement tiers, sur simple vocation de module (existant ou cr par vos soins). Il est de plus trs facile
dcrire un module sous freeradius (enfin a a nengage que Tony ).
Mieux vaut une bonne explication sur ces diffrents points, quun long et obscur discours : si certains aspects
vous drangent encore, demandez donc votre enseignant de vous clairer !
[]
Maintenant que tout est bien compris, regardons ces sections en dtail :

3
V 2.0

IUT des Pays de lAdour

Licence PRO ASUR

3.4.2 Section authorize


Cette section permet dappeler des modules qu vont uvrer dans le sens de crer et mettre en forme des valeurs
dans la table Check de Freeradius. Typiquement, on trouvera dans cette section, lappel au module
preprocess , suivi de lappel au module dinterfaage avec la base de donnes dauthentification (dans notre
cas files ).

3.4.3 Section authenticate


Cette section permet dappeler des modules qu vont uvrer dans le sens de comparer ( des fins
dauthentification) les valeurs des attributs des tables Request et Check de Freeradius. Elle peut tout fait
tre vide (par exemple si les deux attributs contenant le mot de passe ont les deux mmes valeurs dans les deux
tables), comme elle peut appeler un module de chiffrement (par exemple pour comparer un mot de passe chiffr
dans une table et en clair dans lautre table). Cette section restera vide dans le cadre de notre TP.

3.4.4 Section post-auth


Cette section permet dappeler des modules applicables aux attributs contenus dans la rponse que renverra
FreeRadius au NAS. Ici encore, il peut sagit de pure mise en forme, ajout ou suppression dattributs, comme des
informations sur une adresse IP attribuer au client, ou un numro de vlan. Cette section restera galement vide
dans le cadre de notre TP.

3.4.5 Autres sections


Les autres sections proposes dans le fichier de configuration de Freeradius correspondent des tapes de la
chane de traitement des messages qui sont plus faciles apprhender que les trois prcdentes. Elles sont
commentes dans le fichier de configuration et expliques dans la doc de Freeradius. Nous ne les utiliserons pas
dans le cadre de ce TP.

3.5 Exemple de fichier de configuration


Un exemple de fichier simplifi pour notre TP est fourni en annexe, nettoy de tout commentaires, modules et
sections superflues.

4 Fichier de base de donnes dauthentification


4.1 Gnralits
Comme nous lavons dit prcdemment, pour ce TP, nous utiliserons une base de donnes dauthentification sur
fichier local au serveur Freeradius. De ce fait, le module invoqu pour linterprtation de ce fichier (module
files ) est inclus dans le code de Freeradius. Il convient donc de respecter prcisment la syntaxe de ce fichier
afin que ce module fonctionne correctement.
A titre de remarque entre parenthse : en utilisant le module unix la place du module file la syntaxe
utiliser pour ce fichier aurait t diffrente, elle aurait d correspondre par exemple celle du fichier
/etc/shadow.
Le fichier de BD dauthentification que va utiliser freeradius est configurable dans radiusd.conf , dans le
module files , par le truchement de la variable usersfile . Par dfaut, cette variable est initialise la valeur
${confdir}/users qui correspond pour nous /etc/freeradius/users.
Vous pouvez laisser cette variable telle quelle pour la suite, ou la modifier si cela vous dmange

4.2 Syntaxe du fichier


AVANT de le modifier, faites une sauvegarde du fichier users exemple propos dans la distribution
Un bon exemple valant mieux que deux longues explications, regardons celui ci-dessous :
DEFAULT
Tunnel-Type = VLAN,
Fall-Through = 1
DEFAULT
Nas-Port == 10, Nas-IP-Address == 12.12.12.12
Idle-Timeout = 300,
Fall-Through = 1

4
V 2.0

IUT des Pays de lAdour

Licence PRO ASUR

anthony
User-Password := "tony"
Tunnel-Private-Group-Id = 3,
jjb

User-Password := "sesame"
Tunnel-Private-Group-Id = 4,

Les tabulations sont essentielles pour le bon fonctionnement du fichier, veillez les respecter !
Le fichier est structur en rubriques , chacun dentre elles correspondant une condition. Dans lexemple cidessus, quatre rubriques sont formalises. La premire ligne correspond au User-Name et aux conditions.

DEFAULT correspond toute valeur de User-Name , et il ny a pas de condition. Cette rubrique sera
donc toujours prise en compte, quelque soit lutilisateur. Les lignes suivantes correspondent aux
attributs qui seront renvoys Freeradius. Dans ce cas il ny en a quun : on indique que lutilisateur
sera plac dans un vlan (Tunnel-Type = VLAN). Normalement, ds lors quune rubrique est prise en
compte, le reste du fichier est ignor. La directive suivante (Fall-Trough = 1) permet dinvalider ce
postulat. Dans cet exemple, le reste du fichier sera galement analys.

DEFAULT Nas-Port == 10, Nas-IP-Address == 12.12.12.12 dfinit deux conditions. Cette rubrique
sapplique tous les utilisateurs, dont le Nas-port est le numro 10 (typiquement le numro de port dun
switch), et ladresse IP est 12.12.12.12. Dans ce cas, un attribut de valeur maximale dinactivit sera
renvoy au serveur Freeradius. Ici encore, la ligne Fall-Through = 1 permet de continuer lanalyse des
autres rubriques.

Si lattribut User-Name dont dispose Freeradius est gal anthony laction suivante sera
excute : lattribut User-Password sera affect la valeur tony . Le vlan 3 sera attribu (renvoi
de lattribut correspondant : Tunnel-Private-group-Id). Cette fois, on arrte danalyser la suite du fichier.

Si lattribut User-Name dont dispose Freeradius est gal jjb laction suivante sera excute :
lattribut User-Password sera affect la valeur sesame . Le vlan 4 sera attribu (renvoi de
lattribut correspondant : Tunnel-Private-group-Id). Ici encore, le reste du fichier ne sera pas analys.
Dans les deux cas prcdents, notez que lon exploite la possibilit de faire une action sur la ligne
condition (ici une affectation). La valeur boolenne dune affectation est VRAI . La rubrique sera donc
toujours prise en compte avec une affectation qui sera effectue pendant la phase de test, par effet de bord. On
ne procde donc aucune vrification lors de ltape authorize , on se contente daffecter une valeur
lattribut User-Password qui sera enregistr dans la colonne Check de la table interne de Freeradius. Le
contrle de mot de passe sera donc fait lors de ltape suivante authenticate .
Le fichier dictionary vous permettra de dcouvrir beaucoup plus dattributs que ce dont vous naurez jamais
os rver !!!

5 Fichier clients.conf
Facile comprendre cette fois ce fichier comporte des informations sur les divers NAS avec qui votre serveur
va traiter.
Entre autres, cest dans ce fichier que vous configurez la ou les adresses IP des clients (NAS) autoriss
interroger votre serveur, ainsi que le secret partag avec chacun deux.

5
V 2.0

IUT des Pays de lAdour

Licence PRO ASUR

6 Manipulations
6.1 A pour Authentification
6.1.1 Configuration du serveur freeradius

Mettez en place un fichier de configuration radiusd.conf minimal, tout en conservant les modules
expliqus plus haut et en appelant les modules dans les sections concernes. Vous pouvez bien entendu
vous inspirer du fichier exemple, fourni en annexe.

Lancez votre serveur freeradius par la commande /usr/sbin/freeradius x . Loption x vous permettra dobtenir quelques messages intressants au lancement (surtout sil ne se lance pas
). Noubliez pas que chaque modification du fichier de configuration ne sera prise en compte quen
arrtant et en relanant le service. Si vous lancez le serveur par la commande ci-dessus, vous ne
rcuprerez pas la main mais cest plus pratique pour larrter !

Crez un fichier dutilisateurs simple, ressemblant celui propos en exemple.

A laide de la commande radtest depuis le client radius (NAS) de test, interrogez votre serveur
radius et visualisez les attributs renvoys. Testez cette manipulation sur plusieurs noms dutilisateurs, et
analysez les rsultats selon les diffrents cas. Nhsitez pas modifier le fichier users (piochez des
ides dans le fichier dictionary afin de multiplier vos tests ). Sachez aussi que sur la ligne
condition, part == ou := , vous pouvez aussi essayer des > , >= , != ,

6.1.2 Configuration du client radius (NAS)


Pour illustrer cette rubrique, nous allons utiliser un routeur Cisco comme client Radius.

Configurez votre routeur en attribuant une adresse linterface Ethernet dans la plage prvue sur le
schma.

Vrifiez votre connectivit avec le serveur radius (ping).

Activez le modle dauthentification AAA sur le routeur : aaa new-model

Crez un utilisateur BOB local au routeur avec la commande username <name> secret <mdp>

Essayez de vous connecter en telnet sur votre routeur. Essayez de passer en mode enable rectifiez
ventuellement le problme si a ne marche pas en configurant toto comme mot de passe
administrateur (commande enable secret toto )

Crez maintenant un schma dauthentification. Dans ce schma vous indiquez le type de source que le
routeur va utiliser comme base de donnes dauthentification. Dans un premier temps, vous nutiliserez
pas le serveur radius, mais la simple base de donnes locale au routeur (donc lutilisateur BOB que vous
venez de crer). Pour ce faire, utilisez la commande :
aaa authentication login <schma> local , dans laquelle <schma> est remplacer
par le nom de schma de votre choix.

Appliquez ce schma aux 5 vty (de 0 4), la place du login local habituel (vitez de lappliquer
laccs console, si a bugge cest ballot)

Essayez de vous connecter par telnet sur votre routeur. Pour vous la diffrence nest pas bien grande
avec un telnet traditionnel, mais en interne, le routeur ne procde pas de la mme faon (si,si, je vous
jure !)

Crez maintenant un nouveau schma dauthentification, mais cette fois indiquez lui que la source des
donnes provient dun serveur Radius (utilisez le ? pour trouver comme des grands )

Configurez les divers paramtres du serveur Radius grce la commande radius-server .


ATTENTION, dans cette commande, vous devez IMPERATIVEMENT spcifier les ports 1812
(authentification) et 1813 (autorisation/comptabilt) et ne surtout pas laisser les valeurs par dfaut qui
ne sont pas les bonnes chez Cisco (anciennes valeurs, aujourdhui obsoltes).

Appliquez ce nouveau schma dauthentification aux 5 vty

Ajoutez un nouveau client (le routeur) dans le fichier de configuration clients.conf de Freeradius (et
relancez Freeradius )

6
V 2.0

IUT des Pays de lAdour

Licence PRO ASUR

Testez une connexion telnet en utilisant un compte de la base radius. En cas de problme, mfiez vous
quand mme des attributs superflus (Tunnel-Type, ) de la manip prcdente, que pourrait renvoyer le
freeradius un routeur Cisco mal lun

6.2 A pour Autorisation


Si vous tes ici, cest que votre connexion telnet marche correctement. Il vous serait possible maintenant
dappliquer ce schma dauthentification au port console sans trop de risque, mais a ne prsente quun intrt
trs limit.
En revanche, vous avez sans doute remarqu que vous vous retrouvez (comme dhabitude) connects en user
mode , c'est--dire en privilge 1 et que vous devez passer manuellement en mode de privilge 15 (enable) par
la commande du mme nom. Nous allons maintenant configurer le service dautorisations, qui vous permettra de
donner automatiquement un utilisateur un niveau de privilge prdfini dans son profil.
Pour cela nous allons utiliser un attribut spcifique au matriel Cisco : Service-Type auquel vous essayerez
de faire prendre les deux valeurs Administrative-User et Login-User .

Modifiez le fichier users du serveur Freeradius pour configurer deux utilisateurs diffrents. Ajoutez
lattribut ci-dessus leur profil, mais donnez leur une valeur diffrente chacun. Relancez le server
Freeradius

Sur le routeur, crez un schma dautorisation interrogeant un serveur radius. Le principe est le mme
que pour un schma dauthentification, cela prs que le mot cl authentication devient
authorization , et que exec remplace login . Evitez de lui donner le mme nom de schma que
le schma dauthentification.

Appliquez ce schma dautorisation aux 5 vty

Essayez de vous connecter sous les deux identits pour tester la diffrence.

6.3 A pour Comptabilt


Dernire tape du TP, nous allons maintenant enregistrer des donnes permettant de mettre en place un procd
de facturation. Pour cela, nous allons activer le service de comptabilit :

Sur le routeur, crez un schma de comptabilit interrogeant un serveur radius. Vous avez maintenant
lhabitude, la commande est la mme que pour le schma dautorisation en remplaant authorization
par accounting . Choisissez loption start-stop . Ici encore, choisissez un nom de schma diffrent
des deux premiers, pour viter les conflits inutiles.

Appliquez ce schma de comptabilit aux 5 vty

Connectez vous par telnet, et analysez les traces qui passent sur la fentre principale du serveur radius.

Dconnectez vous et faites de mme.

Les traces ne passent malheureusement que sur lcran, sans tre enregistres sur aucun fichier ni base
de donnes. Nous allons remdier cela, en utilisant un fichier local (comme pour lauthentification).
Le module qui soccupe de cela nest plus le module file comme ctait le cas prcdemment, mais
un module spcifique au service de comptabilit appel detail .

Regardez la syntaxe de configuration de ce module dans le fichier de radiusd.conf et cherchez le


nom et lemplacement du fichier de trace que le module dtail va crer (sections dclaration de
variables, au dbut et dclaration de modules, juste aprs).

Rajoutez maintenant lappel au module detail dans la section accounting .

Relancez le serveur et testez le fonctionnement de ce nouveau fichier de comptabilit.

Enfin, vous constaterez que lattribut Acct-Session-Id est un peu rudimentaire. Un module appel
acct_unique permet de forger un numro didentification plus fiable. Mettez ce module en activit
en linstantiant dans la section preacct et testez le rsultat. La diffrence nest visible que dans le
fichier enregistr et pas dans les traces consoles. Voyez vous pourquoi ?

7
V 2.0

IUT des Pays de lAdour

Licence PRO ASUR

7 Annexe : Exemple de fichier de configuration


#
#
#
#

DANS LE CADRE DE CE TP, CE FICHIER CORRESPOND AU DEFAULT QUI SE


TROUVE DANS LE DOSSIER SITES-AVAILABLE .
NOTEZ QUE DANS LA PRATIQUE, 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.0