I Introduction
L’objectif est de pouvoir centraliser les comptes sur un serveur dédié et faire faire l’authentification des identifiants sur les routeurs par ce serveur.
Nous partons de l’architecture suivante dans laquelle nous ajoutons un serveur sur le VLAN 30 :

Ce serveur debian virtuel sous virtual box aura comme adresse IP 192.168.30.100. Il assurera la fonction serveur Radius
II Serveur Radius
II.1 Installation
Une distribution débian sera utilisée pour cet exemple. Une fois installée et paramétrée au niveau du réseau le serveur Radius qui va être utilisé sera free radius
apt-get install freeradius
Pour vérifier si le serveur est bien installé : freeradius -v

Puis indiquer que ce service fonctionne à chaque démarrage :
systemctl enable freeradius

II.2 Déclaration du routeur qui va communiquer avec FreeRadius
Dans un premier temps il faut indiquer à FreeRadius qui peut communiquer avec lui : dans notre cas ce sera l’adresse IP du routeur.
Pour cela il faut modifier le fichier clients.conf dont le chemin complet est le suivant : /etc/freeradius/3.0/clients.conf.
Ainsi pour accepter les requetes du routeur R3 il faudra ajouter ces lignes par exemple :
...
client 192.168.30.254 {
secret = test
nastype = cisco
shortname = routeur3
}
...
Pour que le routeur communique avec FreeRadius, il faudra de son côté le configurer. Ce qui sera vu après ce chapitre
II.3 Déclaration des identifiants
Il faut maintenant déclarer des utilisateurs. Cette partie est renseignée dans le fichier /etc/freeredius/3.0/users.
Ainsi pour ajouter un utilisateur, ci-dessous un exemple simple à ajouter :
....
test Cleartext-password :="motdepasse"
Service-Type = NAS-Prompt-User,
cisco-avpair = "shell:priv-lvl=15"
....
Remarque : ne pas oublier la « , ». Sinon le service ne redémarrera pas 🙂
Enfin, pour la prise en compte de ce nouveau compte, on relance le service :
systemctl restart freeradius
A ce stade, la configuration minimal est effectuée du côté du serveur Radius.
III Routeur : identification des comptes via Radius
III.1 Déclaration d’un modèle d’authentification et déclaration d’un serveur Radius
Nous allons configurer le routeur R3 pour qu’il puisse communiquer avec le serveur radius.
Il faut dans un premier temps activer « aaa »
R3#conf t
R3(config)#aaa new-model
Ce qui a pour effet de débloquer les commande de configuration du serveur radius. Ainsi nous allons maintenant configurer l’accès à un serveur radius
R3(config)#radius-server host 192.168.30.100 auth-port 1812 acct-port 1813
3 paramètres :
- l’@IP du serveur Radius (notre serveur débian) : host 192.168.30.100
- le port d’écoute pour l’authentification : auth-port 1812
- le port d’écoute pour l’accounting : acct-port 1813
Enfin il faut indiquer le « secret » entre les 2 appareils :
R3(config)#radius-server key test
A ce stade la déclaration du serveur radius est terminée. Il est conseillé de sauvegarder la configuration.
III.2 Activation du modèle d’authentification
Il faut maintenant indiquer le mode d’authentification au routeur.
aaa authentication login default group radius local
A ce niveau seul une authentification par le serveur Radius est possible. Un gros problème peut arriver si le serveur Radius ne fonctionne plus. Il faut donc pouvoir se connecter avec un compte local
R3#conf t
R3(config)#aaa authentication login localauth local
et créer ce compte :
R3(config)#username admin nopassword
En temps normal il faut un mot de passe ! Ce compte ne sera utilisable que si et seulement si l’authentification Radius ne peut se faire. C’est une sorte de voie de secours.
III.3 Test
Pour tester, il faut maintenant quitter l’environnement de l’utilisateur
exit
exit
...
et attendre l’écran d’accueil :
R3 con0 is now available
Press RETURN to get started.
Ensuite renseigner les identifiants :
User Access Verification
Username: test
Password:
R3#
Dans le cas ou les identifiants seraient incorrects :
User Access Verification
Username:
Username: test1
Password:
% Authentication failed
Username:
On s’apercçoit que le compte admin ne fonctionne pas :
Username: admin
Password:
% Authentication failed
Username:
Ce qui est normal car ce compte n’est pas déclaré dans Radius.
En revanche, si Radius n’est pas joignable,

et après quelques longues secondes :
User Access Verification
Username: admin
Password:
R3#
La connexion est possible.
III.4 Mode debug
Il est possible d’activer le mode debug pour essayer de comprendre certains dysfonctionnements. Pour cela :
R3#debug radius
Radius protocol debugging is on
Radius protocol brief debugging is off
Radius protocol verbose debugging is off
Radius packet hex dump debugging is off
Radius packet protocol debugging is on
Radius elog debugging debugging is off
Radius packet retransmission debugging is off
Radius server fail-over debugging is off
Radius elog debugging debugging is off
Ainsi lors d’une connexion il est possible de voir les échanges entre le routeur et le serveur Radius :
Username: admin
Password:
*Mar 1 01:12:31.495: RADIUS/ENCODE(0000000C): ask "Password: "
*Mar 1 01:12:31.495: RADIUS/ENCODE(0000000C): send packet; GET_PASSWORD
*Mar 1 01:12:33.995: RADIUS/ENCODE(0000000C):Orig. component type = EXEC
*Mar 1 01:12:33.995: RADIUS: AAA Unsupported Attr: interface [157] 4
*Mar 1 01:12:33.999: RADIUS: 74 74 [tt]
*Mar 1 01:12:33.999: RADIUS/ENCODE(0000000C): dropping service type, "radius-server attribute 6 on-for-login-auth" is off
*Mar 1 01:12:33.999: RADIUS(0000000C): Config NAS IP: 0.0.0.0
*Mar 1 01:12:33.999: RADIUS/ENCODE(0000000C): acct_session_id: 12
*Mar 1 01:12:34.003: RADIUS(0000000C): sending
*Mar 1 01:12:34.003: RADIUS/ENCODE: Best Local IP-Address 192.168.30.254 for Radius-Server 192.168.30.100
*Mar 1 01:12:34.007: RADIUS(0000000C): Send Access-Request to 192.168.30.100:1812 id 1645/13, len 76
*Mar 1 01:12:34.007: RADIUS: authenticator D2 06 6B B6 63 DE 41 24 - A1 63 E4 1E C9 F8 B3 99
*Mar 1 01:12:34.007: RADIUS: User-Name [1] 7 "admin"
*Mar 1 01:12:34.011: RADIUS: User-Password [2] 18 *
*Mar 1 01:12:34.011: RADIUS: NAS-Port [5] 6 0
*Mar 1 01:12:34.011: RADIUS: NAS-Port-Id [87] 6 "tty0"
*Mar 1 01:12:34.011: RADIUS: NAS-Port-Type [61] 6 Async [0]
*Mar 1 01:12:34.015: RADIUS: Calling-Station-Id [31] 7 "async"
*Mar 1 01:12:34.015: RADIUS: NAS-IP-Address [4] 6 192.168.30.254
*Mar 1 01:12:38.995: RADIUS: no sg in radius-timers: ctx 0x6575B19C sg 0x0000
*Mar 1 01:12:38.995: RADIUS: Retransmit to (192.168.30.100:1812,1813) for id 1645/13
*Mar 1 01:12:43.555: RADIUS: no sg in radius-timers: ctx 0x6575B19C sg 0x0000
*Mar 1 01:12:43.555: RADIUS: Retransmit to (192.168.30.100:1812,1813) for id 1645/13
*Mar 1 01:12:48.459: RADIUS: no sg in radius-timers: ctx 0x6575B19C sg 0x0000
*Mar 1 01:12:48.459: RADIUS: Retransmit to (192.168.30.100:1812,1813) for id 1645/13
R3#
*Mar 1 01:12:52.931: RADIUS: no sg in radius-timers: ctx 0x6575B19C sg 0x0000
*Mar 1 01:12:52.931: RADIUS: No response from (192.168.30.100:1812,1813) for id 1645/13
*Mar 1 01:12:52.935: RADIUS/DECODE: No response from radius-server; parse response; FAIL
*Mar 1 01:12:52.935: RADIUS/DECODE: Case error(no response/ bad packet/ op decode);parse response; FAIL
Les log montrent une impossibilité de se connecter sur le serveur Radius.
Dans un cas qui fonctionne, les log pourront ressembler à ceux-ci :
User Access Verification
Username: test
*Mar 1 01:14:30.395: RADIUS/ENCODE(0000000D): ask "Username: "
*Mar 1 01:14:30.395: RADIUS/ENCODE(0000000D): send packet; GET_USER
Username: test
Password:
*Mar 1 01:14:35.215: RADIUS/ENCODE(0000000D): ask "Password: "
*Mar 1 01:14:35.215: RADIUS/ENCODE(0000000D): send packet; GET_PASSWORD
R3#
*Mar 1 01:14:38.039: RADIUS/ENCODE(0000000D):Orig. component type = EXEC
*Mar 1 01:14:38.039: RADIUS: AAA Unsupported Attr: interface [157] 4
*Mar 1 01:14:38.043: RADIUS: 74 74 [tt]
*Mar 1 01:14:38.043: RADIUS/ENCODE(0000000D): dropping service type, "radius-server attribute 6 on-for-login-auth" is off
*Mar 1 01:14:38.043: RADIUS(0000000D): Config NAS IP: 0.0.0.0
*Mar 1 01:14:38.043: RADIUS/ENCODE(0000000D): acct_session_id: 13
*Mar 1 01:14:38.047: RADIUS(0000000D): sending
*Mar 1 01:14:38.047: RADIUS/ENCODE: Best Local IP-Address 192.168.30.254 for Radius-Server 192.168.30.100
*Mar 1 01:14:38.051: RADIUS(0000000D): Send Access-Request to 192.168.30.100:1812 id 1645/14, len 75
*Mar 1 01:14:38.051: RADIUS: authenticator 2F B9 F4 58 79 8F 83 A8 - 44 85 07 3B 3B 3D FA 9B
*Mar 1 01:14:38.051: RADIUS: User-Name [1] 6 "test"
*Mar 1 01:14:38.055: RADIUS: User-Password [2] 18 *
*Mar 1 01:14:38.055: RADIUS: NAS-Port [5] 6 0
*Mar 1 01:14:38.055: RADIUS: NAS-Port-Id [87] 6 "tty0"
*Mar 1 01:14:38.055: RADIUS: NAS-Port-Type [61] 6 Async [0]
*Mar 1 01:14:38.059: RADIUS: Calling-Station-Id [31] 7 "async"
*Mar 1 01:14:38.059: RADIUS: NAS-IP-Address [4] 6 192.168.30.254
*Mar 1 01:14:38.091: RADIUS: Received from id 1645/14 192.168.30.100:1812, Access-Accept, len 51
*Mar 1 01:14:38.091: RADIUS: authenticator D1 8E 1C BB EB 53 5A 95 - E4 DE BE AE C0 26 F8 3D
*Mar 1 01:14:38.095: RADIUS: Service-Type [6] 6 NAS Prompt [7]
*Mar 1 01:14:38.095: RADIUS: Vendor, Cisco [26] 25
*Mar 1 01:14:38.095: RADIUS: Cisco AVpair [1] 19 "shell:priv-lvl=15"
*Mar 1 01:14:38.099: RADIUS(0000000D): Received from id 1645/14
ou à ceux-ci si les identifiants sont incorrects :
User Access Verification
Username: te
*Mar 1 01:15:42.479: RADIUS/ENCODE(0000000E): ask "Username: "
*Mar 1 01:15:42.479: RADIUS/ENCODE(0000000E): send packet; GET_USER
Username: test1
Password:
*Mar 1 01:15:46.343: RADIUS/ENCODE(0000000E): ask "Password: "
*Mar 1 01:15:46.343: RADIUS/ENCODE(0000000E): send packet; GET_PASSWORD
*Mar 1 01:15:48.579: RADIUS/ENCODE(0000000E):Orig. component type = EXEC
*Mar 1 01:15:48.583: RADIUS: AAA Unsupported Attr: interface [157] 4
*Mar 1 01:15:48.583: RADIUS: 74 74 [tt]
*Mar 1 01:15:48.583: RADIUS/ENCODE(0000000E): dropping service type, "radius-server attribute 6 on-for-login-auth" is off
*Mar 1 01:15:48.583: RADIUS(0000000E): Config NAS IP: 0.0.0.0
*Mar 1 01:15:48.587: RADIUS/ENCODE(0000000E): acct_session_id: 14
*Mar 1 01:15:48.587: RADIUS(0000000E): sending
*Mar 1 01:15:48.591: RADIUS/ENCODE: Best Local IP-Address 192.168.30.254 for Radius-Server 192.168.30.100
*Mar 1 01:15:48.591: RADIUS(0000000E): Send Access-Request to 192.168.30.100:1812 id 1645/15, len 76
*Mar 1 01:15:48.595: RADIUS: authenticator 12 F9 15 8B 42 25 94 2E - E3 AA 87 CE E8 F7 BB 75
*Mar 1 01:15:48.595: RADIUS: User-Name [1] 7 "test1"
*Mar 1 01:15:48.595: RADIUS: User-Password [2] 18 *
*Mar 1 01:15:48.595: RADIUS: NAS-Port [5] 6 0
*Mar 1 01:15:48.595: RADIUS: NAS-Port-Id [87] 6 "tty0"
*Mar 1 01:15:48.599: RADIUS: NAS-Port-Type [61] 6 Async [0]
*Mar 1 01:15:48.599: RADIUS: Calling-Station-Id [31] 7 "async"
*Mar 1 01:15:48.599: RADIUS: NAS-IP-Address [4] 6 192.168.30.254
*Mar 1 01:15:49.043: RADIUS: Received from id 1645/15 192.168.30.100:1812, Access-Reject, len 20
*Mar 1 01:15:49.043: RADIUS: authenticator 4F 02 6A 6B 0D 5E ED 7D - 3D 66 B6 91 6B F0 1F EE
*Mar 1 01:15:49.047: RADIUS(0000000E): Received from id 1645/15
% Authentication failed
Username:
*Mar 1 01:15:51.055: RADIUS/ENCODE(0000000E): ask "Username: "
*Mar 1 01:15:51.055: RADIUS/ENCODE(0000000E): send packet; GET_USER
Username:
Et pour désactiver le mode debug :
R3#no debug radius
Radius protocol debugging is off
Radius protocol brief debugging is off
Radius protocol verbose debugging is off
Radius packet hex dump debugging is off
Radius packet protocol debugging is off
Radius elog debugging debugging is off
Radius packet retransmission debugging is off
Radius server fail-over debugging is off
Radius elog debugging debugging is off
IV Authentification de PC Windows avec Radius
Dans notre cas pratique nous allons déplacer le PC Windows 10 sur le routeur R3 comme suivant :

Le PC aura l’@IP 192.168.30.1 et le serveur Radius garde la même adresse Ip : 192.168.30.100.
IV.1 Configuration routeur
IV.1.1 Cas des terminaux n’ayant pas le client Radius
L’appareil à authentifier se nomme « supplicant ». Le routeur peut se mettre en mode « supplicant » notemment dans le cas d’imprimantes à authentifier. Ces dernières ne peuvent ne pas avoir de client radius et donc communiquer avec un serveur Radius. Ainsi le routeur prend le relais et c’est lui qui va communiquer avec le serveur radius à la place de l’imprimante et si l’authentification (par @MAC) est authorisé bascule l’interface dans le VLAN choisi. Pour utiliser ce type de service, CISCO pour le « MAC Authentication Bypass Deployment » ou « MAB ».
Ce mode particulier ne peut être simuler avec GNS3. Il ne sera donc pas vu. Cependant les spécifications techniques sont ici : https://www.cisco.com/c/en/us/products/collateral/ios-nx-os-software/identity-based-networking-services/config_guide_c17-663759.html
IV.1.2 Cas des terminaux ayant un client radius
Sur le routeur R3 nous allons définir de nouvelles règles aaa :
aaa authentication dot1x default group radius
aaa authorization network default group radius
Ensuite il faut activer le service global d’authentification par radius pour les interfaces
dot1x system-auth-control
Puis sur l’interface où est connecté le PC, déclarer le mode d’authentification par Radius.
interface FastEthernet1/14
switchport access vlan 30
dot1x pae authenticator
dot1x port-control auto
A ce stade, le port est en écoute de requete radius en provenant du PC. Le Port n’est pas activé car le PC ne s’est pas authenfié:
R3#show ip interface brief
Interface IP-Address OK? Method Status Protocol
FastEthernet0/0 unassigned YES NVRAM administratively down down
FastEthernet0/1 unassigned YES NVRAM administratively down down
FastEthernet1/0 192.168.101.2 YES NVRAM up up
FastEthernet1/1 192.168.102.2 YES NVRAM up up
FastEthernet1/2 unassigned YES unset up down
FastEthernet1/3 unassigned YES unset up down
FastEthernet1/4 unassigned YES unset up down
FastEthernet1/5 unassigned YES unset up down
FastEthernet1/6 unassigned YES unset up down
FastEthernet1/7 unassigned YES unset up down
FastEthernet1/8 unassigned YES unset up down
FastEthernet1/9 unassigned YES unset up down
FastEthernet1/10 unassigned YES unset up down
FastEthernet1/11 unassigned YES unset up down
FastEthernet1/12 unassigned YES unset up down
FastEthernet1/13 192.168.103.1 YES NVRAM up up
FastEthernet1/14 unassigned YES unset up down
FastEthernet1/15 unassigned YES unset up up
Vlan1 unassigned YES NVRAM up down
Vlan30 192.168.30.254 YES NVRAM up up
L’interface 14 est tout de même dans le VLAN 30 car cela avait défini manuellement apparavant. Il n’est pas utile d’en préciser car lors de l’authentification, le serveur Radius indequera dans quel VLAN mettre cette interface.
A ce stade, le routeur est configuré.
IV.2 Configuration FreeRadius
Il faut maintenant renseigner le serveur radius sur le compte et mot de passe à vérifier. Nous allons choisir une authentification de type compte de session.
Pour cela il faut ajouter dans le fichier /etc/freeradius/3.0/users les lignes suivantes pour déclarer le compte « Xavior » et son mot de passe :

Enfin pour que le paramètre VLAN soit renvoyé il faut modifier le fichier /etc/freeradius/3.0/mods-avalaible/eap.conf. Dans les rubriques peap et/ou ttls il faut ces valeurs comme suivant (définie par défaut à « no ») :
copy_request_to_tunnel = yes
use_tunneled_reply = yes
Une fois fait, il faudra redémmarer le service.
A ce stade le serveur Radius est prêt.
Pour visualiser les log de connection il faut modifier les paramètres du serveur radius. Pour cela aller dans le fichier radiusd.conf et faire en sorte que les lignes ci-dessous apparaissent :
auth = yes
auth_badpass = yes
auth_goodpass = yes
Après avoir redémarrer le service, il sera possible de visualiser les authentification réussies ou rejetées en direct par la commande suivante :
tail -f /var/log/freeradius/radius.log
Ce qui donnera un exemple suivant :

Dans cet exemple on voit que le PC a déjà essayé de s’authentifier sans succès. On voit aussi que la requête vient du routeur R3 et de l’interface 1/14
IV.3 Configuration PC Windows 10
Part défaut les cartes réseau filaires n’ont pas d’authentification Radius d’activé. Il faut pour cela lancer le service « configuration automatique de réseau câblé » comme suivant :

Ensuite il faut configurer la carte réseau : aller dans « centre réseau et partage » puis « Modifier les paramètres de la carte » puis click droit sur la carte réseau en question et « Propriétés » :

Après l’apparation des propriétés de la carte, cliquer sur l’onglet « Authentification ».

Choisir le la métode d’authentification « Microsoft PEAP » et cliquer sur « Paramètres ». Une autre fenêtre apparait, déselectionner « Vérifier l’identité du serveur… », séléctionner « mot de passe sécurisé EAP… ». Puis cliquer sur « Configurer » et s’assurer que « Utiliser automatiquement mon nom et mot de passe … » soit coché.
Une fois fais, valider toutes les fenêtres.
A ce stade Windows est configuré pour envoyer une trame radius sur la carte réseau. Relancer Windows 10.
IV.4 Vérification du fonctionnement
Une fois le PC Windows 10, ouvrir une sesseion avec le compte utilisateur « Xavior ». On remarque que le serveur Radius donne l’authorisation

On remarque également sur le routeur R3 que l’interface 14 est débloquée :
R3#show ip interface brief
Interface IP-Address OK? Method Status Protocol
FastEthernet0/0 unassigned YES NVRAM administratively down down
FastEthernet0/1 unassigned YES NVRAM administratively down down
FastEthernet1/0 192.168.101.2 YES NVRAM up up
FastEthernet1/1 192.168.102.2 YES NVRAM up up
FastEthernet1/2 unassigned YES unset up down
FastEthernet1/3 unassigned YES unset up down
FastEthernet1/4 unassigned YES unset up down
FastEthernet1/5 unassigned YES unset up down
FastEthernet1/6 unassigned YES unset up down
FastEthernet1/7 unassigned YES unset up down
FastEthernet1/8 unassigned YES unset up down
FastEthernet1/9 unassigned YES unset up down
FastEthernet1/10 unassigned YES unset up down
FastEthernet1/11 unassigned YES unset up down
FastEthernet1/12 unassigned YES unset up down
FastEthernet1/13 192.168.103.1 YES NVRAM up up
FastEthernet1/14 unassigned YES unset up up
FastEthernet1/15 unassigned YES unset up up
Vlan1 unassigned YES NVRAM up down
Vlan30 192.168.30.254 YES NVRAM up up
Et enfin que le VLAN 30 a été attribué à cette interface :
R3# show vlan-switch brief
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active
30 VLAN0030 active Fa1/2, Fa1/3, Fa1/4, Fa1/5
Fa1/6, Fa1/7, Fa1/8, Fa1/9
Fa1/10, Fa1/11, Fa1/12, Fa1/14
Fa1/15
V Pour aller plus loin
V.1 Pistes à voir en détail
- étudier les champs radius dédiés aux routeurs en profondeur
- déclarer plusieurs serveurs Radius sur les routeurs
- effectuer une authentification de compte AD :
- en passant par freeRadius et un AD,
- en utilisant Microsoft NPS et un AD,
- Mise en place de VLAN invité et métier. Voir comment gérer le VLAN invité d’un point de vue infra serveur…
V.2 Documentation
V.2.1 Cisco et Radius
Ensemble de documentations utiles sur le net :
- doc officielle cisco : https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst2960cx_3650cx/software/release/15-2_3_e/configuration/guide/b_1523e_consolidated_2960cx_3560cx_cg/b_consolidated_152ex_2960-X_cg_chapter_0100101.pdf
- doc FreeRadius pour connecter des appareils CISCO : https://wiki.freeradius.org/vendor/Cisco
- en français, implémentation avec OpenClassRooms : https://openclassrooms.com/fr/courses/2557196-administrez-une-architecture-reseau-avec-cisco/5135511-gerez-vos-acces-reseau-grace-au-serveur-radius
V.2.2 Cisco et TACACS
TACACS est une solution CISCO pour effectuer une centralisation des droits au mêm titre que Radius.
Liens utiles pour découvrir :
- https://www.cisco.com/c/fr_ca/support/docs/security-vpn/terminal-access-controller-access-control-system-tacacs-/10368-basictacacs.pdf
- https://blog.marquis.co/configuring-tacacs-server-on-ubuntu-14-04lts/
https://doc.rero.ch/record/31225/files/TDIG_68.pdf
https://www.reseaucerta.org/sites/default/files/Authentification-802.1x-V1.0.pdf
http://idum.fr/spip.php?article335
https://blog.clemanet.com/linux/freeradius-2-802-1x.html