Académique Documents
Professionnel Documents
Culture Documents
Florian LASOWY
Cyril GUERIN
Cédric PFEIFFER
Protocole AAA
Principes et implantations
Introduction ................................................................................. 2
1) Les protocoles AAA................................................................ 3
1.1) Concepts .............................................................................................3
1.2) RADIUS...............................................................................................4
1.2.1) Description....................................................................................4
1.2.2) Format des paquets .......................................................................4
1.2.3) Diagramme de séquence ................................................................6
1.3) DIAMETER...........................................................................................7
1.3.1) Description....................................................................................7
1.3.2) Format des paquets .......................................................................8
1.3.3) Diagramme de séquence ..............................................................10
1.3.4) Exemple d’une application Mobile IPv6 pour Diameter ......................11
1.4) Différences entre RADIUS et DIAMETER ...............................................14
2) Mise en œuvre d’un FAI utilisant RADIUS.................................16
Introduction ................................................................................................16
2.1) PPPoE...............................................................................................17
2.2) Radius ..............................................................................................20
2.3) Scénarios ..........................................................................................22
Conclusion ..................................................................................................26
Références..................................................................................27
1
Introduction
2
1) Les protocoles AAA
1.1) Concepts
3
1.2) RADIUS
1.2.1) Description
Le protocole RADIUS est actuellement utilisé pour faire du AAA avec des
utilisateurs se connectant via des modems téléphoniques à Internet. L’utilisateur
utilise PPP pour accéder à un FAI via un serveur d’accès. Il envoie des informations
permettant de l’authentifier (typiquement login/password) au serveur d’accès. Celui-
ci les envoie alors à un serveur RADIUS qui se charge de l’authentifier. Si l’utilisateur
est correctement authentifié, le serveur RADIUS lui permet l’accès à Internet.
4
La communication RADIUS utilise le paradigme de requête-réponse, les
requêtes sont envoyées par le client au serveur, et les réponses sont envoyées
par le serveur au client. Les paires requête-réponse possibles sont:
5
1.2.3) Diagramme de séquence
6
o Session time, le nombre de secondes que le client s’est connecté.
o Input packets, le nombre de paquets reçus par le client.
o Output packets, le nombre de paquets envoyés par le client.
o Reason, la raison pour laquelle le client s’est déconnecté.
6. Le serveur RADIUS répond avec un message “accounting-response” lorsque
l’information de comptabilité est stockée.
1.3) DIAMETER
1.3.1) Description
Diameter a été conçu dans l’idée d’être facilement extensible. Pour cette
raison, le protocole de base est séparé de ses applications.
7
1.3.2) Format des paquets
• Radius PCC (1 octet), pour une compatibilité avec RADIUS, doit être
positionné à 254 qui signifie “paquet DIAMETER”
• Flags (3 bits), utilisé pour identifier les options
• A (1 bit), le package est seulement un acquittement, et ne contient pas de
requêtes.
• W (1 bit), positionné si les champs NS et NR sont présents (utilisé lorsque
UDP est le protocole de transport).
• Version (3 bits), indique la version, doit être positionné à 1.
• Packet length (2 octets), longueur totale du paquet.
• Identifier (4 octets), numéro de séquence utilise pour faire correspondre les
requêtes et leurs réponses.
• NS (2 octets), Next Send
• NR (2 octets), Next Received
o AVP code (4 octets), commande DIAMETER (256)
o AVP length (2 octets), longueur du AVP
o Cmd flags (6 bits), peut être utilisé comme commande spécifique, sinon
positionné à 0.
o Reserved (6 bits)
o Flag T (1 bit), Tag bit, utilisé pour grouper les AVPs
8
o Flag V (1 bit), Vendor-specific bit, indique si le champ optionnel
vendredi field est présent.
o Flag H (1 bit), Hop bit, indique que le AVP est crypté avec le cryptage
Hop-by-hop.
o Flag M (1 bit), Mandatory bit, indique si le support AVP est requis.
o Vendor id (4 octets, optional),
o Tag (4 octets, optional),
o Command code, contient l’id de la commande DIAMETER
§ diameter attributes (AVP's)
Commandes DIAMETER:
• Message-Reject-Ind (serveur->client)
• Device-Reboot-Ind (serveur->client)
• Device-Watchdog-Ind (serveur->client)
• AA-Request (client->serveur), requête d’authentification et/ou d’autorisation
pour un utilisateur.
Le serveur peut répondre à une “AA-Request” avec les messages suivants:
o aA-Answer (serveur->client), requête acceptée ou refusée par le
serveur.
o AA-Challenge-Ind (serveur->client), réponse à une “AA-request”, où le
serveur attend une réponse du client encapsulée dans une “AA-
request”.
9
1.3.3) Diagramme de séquence
10
1.3.4) Exemple d’une application Mobile IPv6 pour Diameter
Architecture
Fig. 3
Les informations contenues dans les messages échangés sont les suivantes :
11
L’architecture de l’application est constituée de deux serveurs Diameter :
• le serveur Diameter du domaine visité DLS (Diameter Local Server)
• le serveur Diameter du domaine mère DHS (Diameter Home Server)
Fonctionnement
12
4. Le DLS extrait le Network Access Identifier et transfère le message <AMR> au
serveur Diameter du domaine mère DHS s’occupant du domaine mentionné dans le
NAI.
7. Le DHS peut maintenant répondre au DLS par le message <AMA > (AA-MN-
Answer). Il l’informe du succès ou non de l’authentification et fournit aussi des
informations permettant la création d’associations de sécurité entre le mobile et son
agent mère et entre le mobile et le client Diameter.
8. Le DLS vérifie que le mobile est bien authentifié (grâce au Result Code (RC)) et
répond à son client Diameter en incluant ce que le DHS lui a envoyé.
Le mobile peut alors envoyer un message <BU> (Binding Update) authentifié à son
agent mère pour enregistrer sa nouvelle adresse.
13
1.4) Différences entre RADIUS et DIAMETER
Le protocole DIAMETER est conçu comme la génération suivante du protocole
RADIUS, puisqu’il résout les problèmes connus posés par RADIUS. Ci-dessous une
liste des problèmes connus de RADIUS et de comment DIAMETER les résout :
Radius a seulement un octet réservé pour la longueur du champ de données (max. 255) dans son
entête d’attributs.Diameter consacre deux octets pour la longueur de son champ de données
(max. 16535).
Radius a seulement un octet comme champ identificateur pour identifier les retransmissions. Cela
limite le nombre de requêtes qui peuvent être traitées (max. 255). Diameter a réservé quatre
octets dans ce but (max. 2^32).
Radius s’opère sur UDP et n’a pas de schémas standards pour réguler son flux de messages.
Diameter possède un schéma qui régule le flux des paquets UDP (windowing scheme).
Un client Radius attend un réponse positive ou négative après une requête, mais ne sait pas si la
requête a été reçue par le serveur. Un client Diameter attend un réponse positive ou négative ou
juste un acquittement de la requête reçue par le serveur.
Un serveur Radius qui reçoit des paquets qui ne contiennent pas l’information attendue ou qui
contient des erreurs les éliminent sans avertissements. Cela peut faire croire au client que le
serveur est inactif car il ne reçoit plus de réponse. Il va alors essayer de se connecter sur un autre
serveur. Un serveur Diameter peut envoyer un message d’erreur au client indiquant un problème.
Un serveur Radius n’a aucun moyen d’indiquer si il est inactif ou si il est disponible.
Diameter implante des messages Keep-alive qui indiquent que le serveur est en dérangement
depuis un certain temps.
En utilisant PPP CHAP , chaque client Radius peut générer une séquence d’essai de réponse qui
peut être interceptée par n’importe quel client Radius ou serveur proxy dans la chaîne . Cette
séquence peut être “rejouée” par un autre client Radius n’importe quand (en partie résolu par
l’extension Radius utilisant le protocole EAP). Avec Diameter, ces attributs d’essais de réponse
peuvent être sécurisés en utilisant un cryptage de bout-en-bout et une authentification.
14
8. Sécurité Hop-by-hop
Radius implante seulement la sécurité hop-by-hop , ce qui signifie que chaque saut peut aisément
modifier l’information, dont on ne sait plus quelle est l’origine. Diameter implante une sécurité de
bout-en-bout qui garantit que l’information ne peut être modifié sans avertissement.
Radius n’implante pas de commande spécifiques à l’utilisateur, mais seulement des attributs
spécifiques. Diameter ne possède pas de code pour les commandes spécifiques à l’utilisateur
Le protocole Radius n’impose pas d’obligations d’alignement, qui ajoutent une charge inutile sur la
plupart des processeurs. Le protocole Diameter possède une obligation d’alignement de 32 bits,
qui peut être plus facilement supportée par la plupart des processeurs.
15
2) Mise en œuvre d’un FAI utilisant RADIUS
Introduction
Cette partie concerne la mise en place, d’un point de vue pratique, des
protocoles AAA. Pour ce faire, nous avons réalisé, à petite échelle, une configuration
qui peut être utilisée par un fournisseur d’accès à un réseau (notamment Internet).
La configuration mise en pace est illustrée par le schéma ci-dessous.
Provider
Serveur de
Internet .254 .132 Connexion
à Internet Serveur AAA
.50
.78 .49
192.168.197.48/28
192.168.197.64/28
16
2.1) PPPoE
Produits
• FreeBSD
PPPoE peut être utilisé sur Unix. Nous avons travaillé sur la version 4.7 de
FreeBSD. L’utilisation de PPPoE sur cet environnement est assez simple. En effet, PPP
et PPPoE sont déjà implantés dans le noyau, ce qui ne nécessite aucune installation
supplémentaire, et, de plus, tous les modules nécessaires à son fonctionnement sont
chargés lors de son démarrage ; il n’est plus nécessaire d’inclure des options dans le
noyau.
options NETGRAPH
options NETGRAPH_PPPOE
options NETGRAPH_SOCKET
• Linux
Aussi nous avons téléchargé la version 3.5-1 du logiciel Roaring Penguin qui
contient un serveur PPPoE http://www.roaringpenguin.com/pppoe/.
17
Avec la version 2.4.1.2b de pppd, nous n’avons pas réussi à établir une
connexion PPPoE entre une machine serveur PPPoE sous Linux Mandrake 9.0 et une
autre client PPPoE sous FreeBSD 4.7. Après un première échange PPPoE, la machine
linux semble ne pas parvenir à envoyer ses paquets au client, elle affiche l’erreur :
« timeout sending message ».
/etc/ppp/ppp.conf
pppoe:
set device PPPoE:fxp0:pppoe-in
enable lqr
set cd 5
set dial
set login
set redial 0 0
set authname cyril
set authkey jesuisclient
enable pap chap
add default HISADDR # Add a (sticky) default route
enable dns # request DNS info (for resolv.conf)
/etc/rc.conf
ppp_enable="YES"
ppp_mode="ddial"
ppp_profile="pppoe" # nom d'étiquette de configuration dans le ppp.conf
18
Les paramètres du serveur sont les suivants :
/etc/ppp/ppp.conf
pppoe-in:
allow mode direct
enable lqr proxy # Enable LQR and proxy-arp
enable chap pap passwdauth # Force client authen
set ifaddr 192.168.197.78 192.168.197.65-192.168.197.77 # @IP accordée
accept dns # Allow DNS negotiation
set authname fai
set authkey jesuisfai
/etc/rc.conf
pppoed_enable="YES" # lance le démon PPPoE
pppoed_provider="pppoe-in" # étiquette de configuration dans ppp.conf
pppoed_flags="-P /var/run/pppoed.pid" # Flags to pppoed (if enabled).
pppoed_interface="fxp1" # interface réseau sur laquelle lancer pppoed
Authentification PPP
Les nom de login et mot de passe peuvent être inscrit dans le ppp.conf pour
l'utilisateur et s'écrivent dans le fichier /etc/ppp/ppp.secret pour les parties devant
s'identifier à la machine locale.
19
Dans notre cas, ces fichiers se composent comme suit pour le client et le serveur.
Le client :
/etc/ppp/ppp.secret
# Authname Authkey Peer's IP address Label Callback
fai jesuisfai
Le serveur :
/etc/ppp/ppp.secret
# Authname Authkey Peer's IP address Label Callback
cyril jesuisclient
2.2) Radius
Produits libre
• FreeRadius http://www.freeradius.org
o Développement original pour linux
o ports FreeBSD : /usr/ports/net/freeradius/work/freeradius-0.8.1/
o Semble le plus complet
• OpenRadius http://www.xs4all.nl/~evbergen/radius-pppd.html
L’installation sous Linux ou sous FreeBSD se passe sans problème. Nous n’avons pas
eu le temps de tenter de configurer. Sous Linux, par défaut la configuration se trouve
dans le répertoire /usr/local/etc/raddb/ et les fichiers importants sont radiusd.conf,
clients.conf, etc. La configuration standard ouvre le serveur sur les ports UDP 1812,
1813 et 1814.
Nous n’avons pas réussi à faire fonctionner le test. Il semble y avoir des problèmes
pour le chargement de modules notamment du module CHAP.
20
Installation de OpenRadius
Configuration du NAS
Afin que le serveur PPP puisse communiquer avec le serveur Radius, deux
manipulations sont à faire.
/etc/ppp/ppp.conf
…
set radius /etc/radius.conf
/etc/radius.conf
auth 192.168.197.50 1812
21
2.3) Scénarios
§ netstat -nr
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.197.254 UGSc 0 0 fxp0
127.0.0.1 127.0.0.1 UH 0 24 lo0
192.168.197 link#1 UC 1 0 fxp0
192.168.197.64/28 link#2 UC 1 0 fxp1
192.168.197.48/28 link#3 UC 1 0 fxp2
192.168.197.254 link#1 UHLW 1 0 fxp0
§ cat /etc/resolv.conf
domain esial.uhp-nancy.fr
nameserver 193.50.40.1
22
côté client
§ ifconfig
fxp0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
ether 00:d0:b7:8f:4f:0a
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
ppp0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x7
inet 127.0.0.1 netmask 0xff000000
§ netstat -nr
Internet:
Destination Gateway Flags Refs Use Netif Expire
127.0.0.1 127.0.0.1 UH 0 0 lo0
§ cat /etc/resolv.conf
#domain esial.uhp-nancy.fr
#nameserver 193.50.40.1
Coté Client
Résultat :
23
On obtient donc les configurations suivantes :
§ netstat -nr
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.197.254 UGSc 2 0 fxp0
127.0.0.1 127.0.0.1 UH 0 24 lo0
192.168.197 link#1 UC 1 0 fxp0
192.168.197.64/28 link#2 UC 1 0 fxp1
192.168.197.48/28 link#3 UC 1 0 fxp2
192.168.197.254 link#1 UHLW 1 0 fxp0
192.168.197.65 192.168.197.78 UH 0 0 tun0
côté client
§ ifconfig
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet6 fe80::2d0:b7ff:fe8f:4f0a%fxp0 prefixlen 64 scopeid 0x1
ether 00:d0:b7:8f:4f:0a
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
ppp0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x7
inet 127.0.0.1 netmask 0xff000000
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1492
inet6 fe80::2d0:b7ff:fe8f:4f0a%tun0 --> fe80::2d0:b7ff:fedd:1a77%tun0 prefixlen 128
scopeid 0x8
inet 192.168.197.65 --> 192.168.197.78 netmask 0xffffffff
Opened by PID 229
§ netstat -nr
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.197.78 UGSc 0 0 tun0
127.0.0.1 127.0.0.1 UH 0 0 lo0
192.168.197.78 192.168.197.65 UH 1 0 tun0
§ cat /etc/resolv.conf
#domain esial.uhp-nancy.fr
#nameserver 193.50.40.1
nameserver 255.255.255.255
nameserver 193.50.40.1
24
Avec le serveur Radius
Coté Client
Résultat :
25
Conclusion
26
Références
• Daemon News
http://www.daemonnews.org/200101/pppoe.html
• FreeBSD Handbook
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/index.html
http://www.freebsd-fr.org/doc/fr/books/handbook/ppp-and-slip.html
http://www.freebsd.org/handbook/pppoe.html
http://free.mine.nu/~squirrel/PPPoE/FreeBSD%20PPPoE%20Howto.htm
• FreeRadius
http://www.freeradius.org
• Protocole L2TP
Routage.org
http://www.routage.org/l2tp1.html
• Linux Mandrake
http://www.mandrakelinux.com
• RFC AAA
http://www.ietf.org/html.charters/aaa-charter.html
• Samba PPP
http://dp.samba.org/ppp/
27