Documente Academic
Documente Profesional
Documente Cultură
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
1
V 2.0
unix , qui permet dutiliser les fichiers au format /etc/password, group et shadow dUnix, comme
base de donnes du serveur RADIUS
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 ...
2
V 2.0
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
4
V 2.0
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
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 !
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 > , >= , != ,
Configurez votre routeur en attribuant une adresse linterface Ethernet dans la plage prvue sur le
schma.
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 )
Ajoutez un nouveau client (le routeur) dans le fichier de configuration clients.conf de Freeradius (et
relancez Freeradius )
6
V 2.0
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
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.
Essayez de vous connecter sous les deux identits pour tester la diffrence.
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.
Connectez vous par telnet, et analysez les traces qui passent sur la fentre principale du serveur radius.
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 .
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
authorize {
preprocess
files
}
authenticate {
}
preacct {
preprocess
files
}
accounting {
}
session {
}
post-auth {
}
pre-proxy {
}
post-proxy {
}
8
V 2.0