Authentification Radius sur switch Cisco
>>> Debian 8.7 & Freeradius 2.2.x & Cisco IOS 15.0
Version PDF

Le but de cette article est de mettre en place un serveur freeradius. Dans un deuxième, temps cette article abordera comment configurer un switch Cisco en IOS 15.0 afin de s’authentifier via le serveur freeradius.


Sommaire :

I) Introduction
II) Installation de freeradius
III) Configuration
1) Configuration de radius.conf
2) Configuration de clients.conf
3) Configuration du fichier users
4) Derniere étape
IV) Configuration du switch
1) Configuration de base du switch
2) Déclaration du serveur radius
3) Configuration aaa
V) Authentification par adresse MAC
1) Modification du fichier users
2) Modification du switch
3) Authentification MAC et VLAN


I) Introduction

Haut de page

freeradius est un serveur Radius libre permettant de s’authentifier. Le protocole radius permet de se connecter via un échange de paquets UDP, généralement sur le port 1812. Radius intègre également un module d’accounting, permettant par exemple de la facturation. Radius permet de s’authentifier via divers moyens comme une authentification en clair, par adresse MAC, via base MySQL/PgSQL, protocole MSCHAPv1 et MSCHAPv2 ou encore annuaire LDAP.

Radius gère également le 802.1X avec l’authentification via tunnel EAP (PEAP/TLS/TTLS).

freeradius s’appuie sur un système de modules qui sont activés/désactivés lors des phases d’autorisation et d’authentification. Le service peut gérer différents serveurs virtuels, afin de pouvoir gérer plusieurs types d’authentifications conflictuelles, des tunnels internes ou encore des requêtes de proxy radius (en cas de chaînage de différents serveurs radius).

La phase d’autorisation (authorization) définit les modules qui vont intervenir pour autoriser l’utilisateur à utiliser la connexion. La phase d’authentification va s’appuyer sur différents modules pour authentifier l’utilisateur, via son mot de passe ou son adresse MAC par exemple.

AAA (Authentication, Authorization and Accounting) est un protocole qui permet de gérer :

  • Authentication : Authentification consiste à déterminer si l’utilisateur ou l’équipement est bien celui qu’il prêtant être, cela se fait grâce à une authentification nom d’utilisateur/ mot de passe, ou grâce à un certificat.
  • Authorization : Autorisation consiste à déterminer les droits de l’utilisateur sur les différentes ressources.
  • Accounting : Compte permet de garder des informations sur l’utilisation des ressources par l’utilisateur.

Voici les informations de notre maquette :

  • Le serveur radius :
    • Hostname : Deb-Idum-LAB4
    • Adresse IP : 172.16.1.17/24
    • Port d’auth du service Radius : 1812
    • Port accounting du service Radius : 1813
  • Le switch :
    • Hostname : sw-Idum-LAB
    • Adresse IP : 172.16.1.253/24
    • Type de switch : WS-C2960-8TC-L
    • Version IOS : 15.0(2)SE4
    • Key radius : bonjour

II) Installation de freeradius

Haut de page

 Commencez par installer le paquet freeradius.

aptitude install freeradius

III) Configuration

Haut de page

Allez dans le répertoire "/etc/freeradius/" pour trouver l’ensemble des fichiers de configuration. Sous freeradius 2.x (celle qui sera utilisée tout au long de ce tutoriel) la configuration est répartie en dossiers de manière à simplifier l’administration.

Les différents dossiers sont :

  • certs : les certificats nécessaires pour le 802.1X
  • modules : l’ensemble des modules avec chacun un fichier de configuration séparée
  • sites-available/sites-enabled : a l’instar d’Apache, les différents serveurs virtuels radius
  • sql (si vous avez installé l’un des modules SQL) : fichiers de configuration des différentes bases SQL

La configuration principale est lue à partir du fichier radiusd.conf, contenant la définition et les liens vers les modules et les serveurs virtuels.

1) Configuration de radius.conf

 Éditez le fichier "radius.conf".

vim /etc/freeradius/radius.conf

 Recherchez et modifiez la ligne "auth_badpass" et "auth_goodpass", afin de mettre la valeur à "yes".

        auth_badpass = yes
        auth_goodpass = yes

 Pour accélérer les réponses de votre serveur radius, désactiver la résolution de nom. (Pas obligatoire)

hostname_lookups = no

2) Configuration de clients.conf

Les clients radius ne sont pas les utilisateurs, mais les services/binaires qui vont permettre d’authentifier l’utilisateur, comme par exemple : le client d’une borne Wifi, le mod_auth_xradius d’Apache et bien d’autres encore. Ouvrez le fichier clients.conf.

vim /etc/freeradius/clients.conf

Ce fichier contient les différents clients, identifiés par leur adresse IP ou adresse réseau. Chaque client utilise un secret afin de savoir s’il peut utiliser le serveur radius, et utilise un NASType, option bien souvent inutile ou obsolète. Il est conseillé de la positionner à other, par exemple si vous utilisez des bornes WiFi CISCO.

 Modifiez la clef du serveur radius :

client localhost {
        secret          = coucou

Note sur la sécurité : La sécurité du protocole RADIUS dépend COMPLÈTEMENT de cette clef ! Nous vous recommandons d’utiliser une clef complexe composée de :

  • Lettres majuscule
  • Lettres minuscules
  • Nombres
  • Symboles

 Ajoutez les lignes ci-dessous pour créer le client "switch".

client 172.16.1.253 {
        secret          = bonjour
        shortname       = sw-idum-lab
        nastype         = other
}

3) Configuration du fichier users

Dans la forme la plus simple de freeradius, vous pouvez utiliser le fichier "users" pour déclarer vos utilisateurs (login/password) qui seront autorisés à s’authentifier.
freeradius propose d’autre solution, comme évoqué dans l’introduction :

  • Base de données SQL
  • Serveur LDAP

 Éditez le fichier "users".

vim /etc/freeradius/users
  • Nous allons créer deux utilisateurs :
    • nsalmon avec le mot de passe "hello" et les droits de niveau 15
    • test-radius avec le mot de passe "hello" et les droits de niveau 2

 Ajoutez les lignes suivantes :

nsalmon Cleartext-Password := "hello"
       Service-Type = NAS-Prompt-User,
       Cisco-AVPair = "shell:priv-lvl=15"

test-radius Cleartext-Password := "hello"
       Service-Type = NAS-Prompt-User,
       Cisco-AVPair = "shell:priv-lvl=5"

4) Derniere étape

 Rechargez le service freeradius afin de prendre en compte les modifications.

service freeradius reload

IV) Configuration du switch

Haut de page

1) Configuration de base du switch

 Définissez un hostname :

conf t
hostname sw-idum-lab

 Définissez un domaine et le serveur de noms de votre réseau. (Dans notre LAB notre serveur radius est aussi serveur DNS)

ip domain-name idum.eu
ip name-server 172.16.1.17

 Définissez l’adresse IP de votre switch :

interface vlan 1
ip address 172.16.1.253 255.255.255.0
exit
ip default-gateway 172.16.1.254

 Générer la crypto key pour le SSH (taille 2048) :

crypto key generate rsa 

 Vous devez obtenir ceci :

The name for the keys will be: sw-idum-lab.idum.eu
Choose the size of the key modulus in the range of 360 to 4096 for your
  General Purpose Keys. Choosing a key modulus greater than 512 may take
  a few minutes.

How many bits in the modulus [512]: 2048
% Generating 2048 bit RSA keys, keys will be non-exportable...

 Activez la version 2 de SSH :

ip ssh vesion 2

 Autoriser les connexions SSH :

line vty 0 15
transport input ssh
exit

 Définissez un utilisateur local, avec les paramètres ci-dessous :

  • nom : admin
  • droit : 15
  • mot de passe : guten_tag
username admin privilege 15 secret guten_tag

 Création d’un privilège de niveau 5, autorisant seulement les commandes "show" ainsi que la commande "show running-config".

privilege exec all level 5 show running-config
privilege exec level 5 show

2) Déclaration du serveur radius

 Tapez les lignes suivantes, pour définir le serveur Radius :

radius server deb-idum-lab4
address ipv4 172.16.1.17 auth-port 1812 acct-port 1813
key bonjour
exit

 Si vous avez plusieurs interfaces IP de configurée sur le switch, vous devez définir l’interface source pour les requêtes radius.

ip radius source-interface vlan 1

 Rajoutez la ligne suivante, afin d’éviter des erreurs dans les logs :

radius-server attribute 6 on-for-login-auth

3) Configuration aaa

a) 1ére méthode

Cette première méthode est la plus simple. Nous modifions le type d’authentification par défaut afin qu’il interroge en premier la base locale puis le serveur radius.

 Définissez un nouveau model aaa.

aaa new-model

 Création de l’ensemble aaa authentication :

aaa authentication login default local group radius

 Création de l’ensemble aaa authorization :

aaa authorization exec default local group radius

 Lancez une nouvelle connexion SSH vers le switch, en essayant de vous authentifier avec les utilisateurs radius.
 Lancez une nouvelle connexion SSH vers le switch, en essayant de vous authentifier avec l’utilisateur local.

b) Deuxième méthode

Cette deuxième méthode, permet de déclarer plusieurs scénario d’authentification. Nous voulons par exemple que les connexions en console sur le switch, utilisent seulement les utilisateurs locaux du switch pour s’authentifier. Et nous voulons que les connexions en SSH utilisent les utilisateurs locaux et les utilisateurs radius.

 Définissez un nouveau model aaa

aaa new-model

 Même chose que dans la première méthode, création de l’ensemble aaa authentication. Mais cette fois nous remplaçons le terme Default par le terme AuthList1 :

aaa authentication login AuthList1 local group radius

 Même chose que dans la première méthode, création de l’ensemble aaa authorization. Mais cette fois nous remplaçons le terme Default par le terme AuthList1 :

aaa authorization exec AuthList1 local group radius

 Définissez un ensenble aaa authentication default comme ceci :

aaa authentication login default local

 Création de l’ensemble aaa authorization default comme ceci :

aaa authorization exec default local

 Ensuite dans les interfaces line vty, saisissez la liste AuthList1 :

line vty 0 15
login authentication AuthList1
authorization exec AuthList1
exit
line con 0
login authentication default
authorization exec default

 Lancez une nouvelle connexion SSH vers le switch, en essayant de vous authentifier avec les utilisateurs radius.
 Lancez une nouvelle connexion SSH vers le switch, en essayant de vous authentifier avec l’utilisateur local.

V) Authentification par adresse MAC

Haut de page

Nous allons maintenant voir comment authentifier une machine (PC, imprimante, ...) via son adresse MAC. Puis dans un deuxième temps, on fera en sorte qu’une fois authentifiée notre machine soit dans un Vlan particulier.

1) Modification du fichier users

 Editez le fichier freeradius "users".

vim /etc/freeradius/users

 Ajoutez un nouvel utilisateur avec les paramètres suivants :

  • nom : adresse_mac_du_PC
  • password : adresse_mac_du_PC
001c23582eae Cleartext-Password := "001c23582eae"
        Service-Type = Framed-User,

 Puis rechargez la configuration de freeradius.

service freeradius reload

2) Modification du switch

 Ajoutez les lignes suivantes :

aaa authentication dot1x default group radius
aaa authorization network default group radius local 

 Puis configurez l’interface que vous voulez sécuriser :

interface FastEthernet0/1
 switchport mode access
 switchport nonegotiate
 authentication port-control auto
 mab
 spanning-tree portfast

 Vous n’avez plus qu’à connecter votre PC.
 Vous pouvez observer que l’authentification fonctionne bien grâce à la commande :

debug radius

3) Authentification MAC et VLAN

Comme évoqué ci-dessus, nous allons faire en sorte qu’une fois authentifiée notre machine soit dans le vlan 10.

 Modifiez le fichier users.

001c23582eae Cleartext-Password := "001c23582eae"
        Service-Type = Framed-User,
        Tunnel-type = VLAN,
        Tunnel-Medium-Type = 6,
        Tunnel-private-Group-ID = 10

 Rechargez la configuration de freeradius.

service freeradius reload

 Puis n’oubliez de créer le Vlan sur le switch.

vlan 10
name test-radius

 Avant de connecter votre machine, tapez la commande "show vlan" afin de vérifier que l’interface fa0/1 est bien dans le Vlan par défaut :

sw-idum-lab#sh vlan 

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Fa0/1, Fa0/2, Fa0/3, Fa0/4, Fa0/5, Fa0/6, Fa0/7, Fa0/8, Gi0/1
10   test                             active    
1002 fddi-default                     act/unsup 
1003 token-ring-default               act/unsup 
1004 fddinet-default                  act/unsup 
1005 trnet-default                    act/unsup 

VLAN Type  SAID       MTU   Parent RingNo BridgeNo Stp  BrdgMode Trans1 Trans2
---- ----- ---------- ----- ------ ------ -------- ---- -------- ------ ------
1    enet  100001     1500  -      -      -        -    -        0      0   
10   enet  100010     1500  -      -      -        -    -        0      0   
1002 fddi  101002     1500  -      -      -        -    -        0      0   
1003 tr    101003     1500  -      -      -        -    -        0      0   
1004 fdnet 101004     1500  -      -      -        ieee -        0      0   
1005 trnet 101005     1500  -      -      -        ibm  -        0      0   

Remote SPAN VLANs
------------------------------------------------------------------------------


Primary Secondary Type              Ports
------- --------- ----------------- ------------------------------------------

 Connectez votre machine sur le port fa0/1, et retapez la commande afin de confirmer qu’elle est bien dans le vlan 10.

sw-idum-lab#sh vlan 

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Fa0/2, Fa0/3, Fa0/4, Fa0/5, Fa0/6, Fa0/7, Fa0/8, Gi0/1
10   test                             active    Fa0/1
1002 fddi-default                     act/unsup 
1003 token-ring-default               act/unsup 
1004 fddinet-default                  act/unsup 
1005 trnet-default                    act/unsup 

VLAN Type  SAID       MTU   Parent RingNo BridgeNo Stp  BrdgMode Trans1 Trans2
---- ----- ---------- ----- ------ ------ -------- ---- -------- ------ ------
1    enet  100001     1500  -      -      -        -    -        0      0   
10   enet  100010     1500  -      -      -        -    -        0      0   
1002 fddi  101002     1500  -      -      -        -    -        0      0   
1003 tr    101003     1500  -      -      -        -    -        0      0   
1004 fdnet 101004     1500  -      -      -        ieee -        0      0   
1005 trnet 101005     1500  -      -      -        ibm  -        0      0   

Remote SPAN VLANs
------------------------------------------------------------------------------


Primary Secondary Type              Ports
------- --------- ----------------- ------------------------------------------
 
 
 
 
 
Commentaires :