Lycée Suzanne Valadon. Proposition de sécurisation d un réseau à l aide des protocoles 802.1X, EAP-TLS et d un firewall pfsense

Documents pareils
Pervasive Network (Thus0 / Petrus homepage)

AUTHENTIFICATION x FREERADIUS. Objectifs

Le protocole RADIUS. Objectifs. Ethernet Switch RADIUS RADIUS

CRI-IUT Serveur d'authentification pour la sécurité des réseaux Wi-Fi

INDUSTRIALISATION «802.1X» CONFIG : 802.1X PEAP MSCHAPV2

TD3 - Radius et IEEE 802.1x

Authentification sur réseau sans-fil Utilisation d un serveur radius Expérience du CENBG

freeradius Serveur RADIUS libre, performant et modulaire mais pas vraiment simple Aurélien Geron, Wifirst, 7 janvier 2011

! "# Exposé de «Nouvelles Technologies Réseaux»

Déploiement d OCS 1.02 RC2 sous Debian Etch 64

Contenu. Cocher : Network Policy and Access Services > Next > Next. Cocher : Network Policy Server > Next > Install

Imprimantes et partage réseau sous Samba avec authentification Active Directory

Configuration du matériel Cisco. Florian Duraffourg

Méthode 1 : Mise en place IPSEC

Serveur Linux : FTP. Mise en place d un service FTP sous Linux. Bouron Dimitri 20/04/2014

HAUTE DISPONIBILITÉ DE MACHINE VIRTUELLE AVEC HYPER-V 2012 R2 PARTIE CONFIGURATION OPENVPN SUR PFSENSE

InstallatIon et configuration d une Infrastructure réseau sans-fil. Avec. Interface de gestion utilisateurs

NOTE: Pour une meilleure sécurisation, nous vous recommandons de faire l installation des outils web à l intérieur d un serveur virtuel.

Sécurité des réseaux sans fil

Serveur de partage de documents. Étude et proposition d'une solution afin de mettre en place un serveur de partage de documents.

Projet PacketTracer en Labo, et Authentification Wi-Fi Serveur RADUIS (NPS)

Installation de la plate-forme Liberacces 2.0 «Intégrale» avec LiberInstall

Mise en place d un firewall d entreprise avec PfSense

Installation du point d'accès Wi-Fi au réseau

titre : CENTOS_CUPS_install&config Système : CentOs 5.7 Technologie : Cups Auteur : Charles-Alban BENEZECH

Le protocole RADIUS Remote Authentication Dial-In User Service

Installation GLPI-OCSNG-SSL Linux Debian Sarge

Les certfcats. Installation de openssl

Protocoles d'authentification réseau. Sans-fil et filaire

Réseaux Locaux Virtuels

INSTALLATION D UN PORTAIL CAPTIF PERSONNALISE PFSENSE

M2-RADIS Rezo TP13 : VPN

PROJET DE SYNTHÈSE V 2.5 TSGERI AFPA MARSEILLE ST-JEROME AUTHENTIFICATION

L installation a quelque peu changée depuis les derniers tutos, voici une actualisation.

Guide d installation de FreeRadius avec EAP-TLS + MySQL

Authentification réseau

INSTALLATION DE WINDOWS 2000 SERVER POUR BCDI3. par. G.Haberer, A.Peuch, P.Saadé

Installation UpdatEngine serveur (CentOs apache2 / MySQL)

WIFI sécurisé en entreprise (sur un Active Directory 2008)

Ocs Inventory et GLPI s appuie sur un serveur LAMP. Je vais donc commencer par installer les paquets nécessaires.

Les différentes méthodes pour se connecter

VXPERT SYSTEMES. CITRIX NETSCALER 10.1 et SMS PASSCODE 6.2. Guide d installation et de configuration pour Xenapp 6.5 avec SMS PASSCODE 6.

TUTORIEL RADIUS. I. Qu est-ce que RADIUS? II. Création d un groupe et d utilisateur

Pratique et administration des systèmes

1 Configuration des Fichiers Hosts, Hostname, Resolv.conf

VPN et tunnel au niveau de la couche 2

Installation d'un serveur FTP géré par une base de données MySQL

Installation d'un serveur RADIUS

Internet. Licence Pro R&S. TD 5 - Wifi / Radius. 1 Sur le réseau de distribution (DS) 1.1 Configuration des routeurs PC6

Protocoles utilisant des mécanismes d'authentification: TACACS+, RADIUS et Kerberos

1. Présentation de WPA et 802.1X

eduroam Journées Marwan juin 2007 Vincent CARPIER Comité Réseau des Universités Merci à Rok Papez d'arnes pour la partie eduroam in a box

SSH, le shell sécurisé

BTS SIO option SISR Lycée Godefroy de Bouillon Clermont-Ferrand

Procédure d'installation

Contrôle d accès Centralisé Multi-sites

Réalisation d un portail captif d accès authentifié à Internet

Mettre en place un accès sécurisé à travers Internet

Accès aux ressources informatiques de l ENSEEIHT à distance

Mise en place d un proxy Squid avec authentification Active Directory

Réaliser un inventaire Documentation utilisateur

EJBCA PKI Open Source

TP LINUX : MISE EN PLACE DU SERVEUR DE MESSAGERIE QMAIL

Exemple de configuration ZyWALL USG

Guide Utilisateur pour accès au réseau WiFi sécurisé 802.1X

II- Préparation du serveur et installation d OpenVpn :

vcenter Server 1. Interface Lancez le vsphere Client et connectez vous à vcenter Server. Voici la page d accueil de vcenter Server.

>#? " $: $A; 4% 6 $7 -/8 $+.,.,$9:$ ;,<=</.2,0+5;,/ ! " # $%!& *$$ $%!& *! # +$

Compte rendu d'activité PTI n 2

Installation d OwnCloud 8.0 sous Debian Avec connexion des utilisateurs active directory et mise en place de HTTPS

CONFIGURATION DE OPENVPN AVEC CLIENT FEDORA ET CLIENT WINDOWS. Distribution : Fedora 14 Noyau GNU/Linux : Version document : 1

Annexes. OpenVPN. Installation

comment paramétrer une connexion ADSL sur un modemrouteur

Table des matières. 1. Installation de VMware ESXI Pré-requis Installation... 3

Étude d une solution Radius

Olivier Mondet

Procédure d utilisation et de paramétrage (filtrage) avec IPFIRE

TP LINUX : LINUX-SAMBA SERVEUR DE FICHIERS POUR UTILISATEURS WINDOWS

Introduction au Wi-Fi sécurisé

Administration du WG302 en SSH par Magicsam

GOUTEYRON ALEXIS. SIO2 N candidat: UEpreuve E4. USituation professionnelle 2. serveurs de fichiers. Uen haute disponibilité

REPARTITION DE CHARGE LINUX

Classe et groupe : 1P 3 SEN TRI. Ubuntu : serveur Contrôleur de Domaine (PDC) avec SAMBA

windows. deb etch main deb-src etch main

POVERELLO KASONGO Lucien SIO 2, SISR SITUATION PROFESSIONNELLE OCS INVENTORY NG ET GLPI

Serveur de messagerie sous Debian 5.0

Sommaire. III : Mise en place :... 7

Installation et configuration d OCS/GLPI sur un Serveur Debian

Table des matières Nouveau Plan d adressage... 3

Sécurité du Système d Information. Mini PKI

But de cette présentation. Contrôleur de domaine avec Samba (rédigé pour Ubuntu Server) Introduction. Samba: principes

Utilisation des certificats X.509v3

Les réseaux /24 et x0.0/29 sont considérés comme publics

Installer et configurer un réseau local Ethernet commuté. Généralités 1 Utilisation d un Switch administrable D-Link DES-3226

PPE GESTION PARC INFORMATIQUE

Installation des outils OCS et GLPI

Transcription:

Lycée Suzanne Valadon Proposition de sécurisation d un réseau à l aide des protocoles 802.1X, EAP-TLS et d un firewall pfsense Loïc Laforet Dernière modification : 25 juin 2014

Table des matières I Travaux pratiques 3 I Introduction................................................. 3 II Préparation de nos environnements.................................... 4 III Installation du service Freeradius..................................... 4 IV Création d un portail captif......................................... 9 V Création des certificats........................................... 12 VI Intégration de la méthode EAP-TLS dans Freeradius.......................... 16 VII Configuration du switch HP2626..................................... 22 VIII Déploiement du serveur Mysql, et configuration de Freeradius.................... 23 IX Annexes.................................................... 29 2

Chapitre I Travaux pratiques I Introduction Lorsque nous devons sécuriser un réseau informatique, nous avons tendance à se focaliser sur les outils liés au firewalling afin de restreindre et définir explicitement les accès provenant de l extérieur vers nos réseaux et nos ressources internes. En dehors d un usage familial, il est cependant impératif de prendre en compte la sécurité des matériels, outils et usagers situés dans les réseaux internes, côté LAN. Avec la prolifération des ordinateurs et médias personnels portables, le risque qu un équipement inconnu tente d accéder aux ressources internes d un réseau peut devenir important, et nous nous devons de mettre en oeuvre les techniques, outils et procédures qui s imposent pour tenter au maximum de réduire les risques d intrusion, de rebond, de pollution... Si, parmi ces ressources, nous disposons également d un accès Wi-Fi, il convient égalment de s assurer que seules les personnes autorisées puissent s y connecter. Ce TP a pour but d apporter des ébauches de solutions pour réduire ces risques. Nous verrons ainsi comment authentifier de manière forte certains utilisateurs, tout en permettant aux autres un accès limité à certaines ressources. Nous nous baserons sur le firewall pfsense, sur l usage de vlan, sur une authentification Radius par les protocoles d authentification 802.1X et EAP-TLS. 1. Ressources disponibles Pour réaliser ce tp, votre binôme disposera des ressources suivantes : un firewall pfsense v-2.1.3 ; un serveur Debian 7.5, sur lequel nous allons déployer certains services comme Freeradius ; un switch niveau 3 (ou 2) avec 3 vlan ; un poste sous Windows 7 Pro pour l administration ; un poste sous Windows 7 Pro pour les tests ; 3

II. Préparation de nos environnements II Préparation de nos environnements Nous nous baserons sur l architecture illustrée par la figure I.1. Chaque binôme disposera ainsi des mêmes ressources pour lui permettre de déployer les différents éléments listés à la section 1. Les ports des actifs dédiés par binôme vous seront communiqués le jour du TP. Les deux machines virtuelles pfsense et Debian hébergeant le serveur d authentification Freeradius seront déja déployées et configurées dans vos réseaux virtuels respectifs. FIGURE I.1 Principe général de l environnement par binôme III Installation du service Freeradius La première opération consiste à déployer le service Freeradius sur votre serveur Debian. Pour cela, nous allons exploiter les dépôts mis à disposition par la communauté de cette distribution. Les étapes que nous devrons respecter concernent : Accéder par le protocole SSH sur votre serveur Debian (putty, winscp, SSH Secure Shell...) ; Passer en root ; Mettre à jour votre distribution à l aide de la commande apt-get update ; apt-get dist-upgrade ; Installer le paquet freeradius à l aide de la commande apt-get install ; root@srvm-freeradius-02:~# apt-get update ; apt-get dist-upgrade [...] root@srvm-freeradius-02:~# apt-get install freeradius Les paquets supplémentaires suivants seront installés : freeradius-common freeradius-utils libdbi-perl libfreeradius2 libltdl7 libnet-daemon-perl libpcap0.8 libperl5.14 libplrpc-perl libpython2.7 ssl-cert Paquets suggérés : freeradius-ldap freeradius-postgresql freeradius-mysql freeradius-krb5 openssl-blacklist 4

III. Installation du service Freeradius Les NOUVEAUX paquets suivants seront installés : freeradius freeradius-common freeradius-utils libdbi-perl libfreeradius2 libltdl7 libnet-daemon-perl libpcap0.8 libperl5.14 libplrpc-perl libpython2.7 ssl-cert 0 mis à jour, 12 nouvellement installés, 0 à enlever et 0 non mis à jour. Il est nécessaire de prendre 4 594 ko dans les archives. Après cette opération, 11,1 Mo d espace disque supplémentaires seront utilisés. Souhaitez-vous continuer [O/n]?O Une fois cette installation réalisée, attardons nous sur l arborescence de Freeradius, située dans /etc/freeradius : root@srvm-freeradius-02:/etc/freeradius# ls -l total 204 -rw-r----- 1 root freerad 671 déc. 16 2012 acct_users -rw-r----- 1 root freerad 4174 déc. 16 2012 attrs -rw-r----- 1 root freerad 513 déc. 16 2012 attrs.access_challenge -rw-r----- 1 root freerad 481 déc. 16 2012 attrs.access_reject -rw-r----- 1 root freerad 437 déc. 16 2012 attrs.accounting_response -rw-r----- 1 root freerad 2022 déc. 16 2012 attrs.pre-proxy drwxr-s--x 2 freerad freerad 4096 juin 6 11:43 certs -rw-r----- 1 root freerad 6703 déc. 16 2012 clients.conf -rw-r--r-- 1 root freerad 1319 déc. 16 2012 dictionary -rw-r----- 1 root freerad 20634 juin 6 11:43 eap.conf -rw-r----- 1 root freerad 12949 déc. 16 2012 experimental.conf [...] -rw-r----- 1 root freerad 27847 déc. 16 2012 radiusd.conf drwxr-s--x 2 freerad freerad 4096 juin 6 11:43 sites-available drwxr-s--x 2 freerad freerad 4096 juin 6 11:43 sites-enabled -rw-r----- 1 root freerad 3042 déc. 16 2012 sql.conf -rw-r--r-- 1 root root 2475 déc. 16 2012 sqlippool.conf -rw-r--r-- 1 root root 3597 déc. 16 2012 templates.conf -rw-r--r-- 1 root root 6524 déc. 16 2012 users root@srvm-freeradius-02:/etc/freeradius# Les éléments importants sur lesquels nous interviendrons concernent : certs : répertoire contenant les certificats automatiquement générés lors de l installation de Freeradius ; clients.conf : fichier de configuration permettant la déclaration des NAS (switch pour nous), seuls équipements autorisés à effectuer des requêtes sur le serveur Freeradius ; eap.conf : fichier de configuration pour le protocole eap ; radiusd.conf : fichier de configuration générale de Freeradius ; sites-{available enabled : répertoires permettant de déclarer et d activer les différentes instances (ou sites) de Freeradius ; sql.conf : fichier de configuration utilisé lorsque nous couplons Freeradius à un SGBD (MySQL, POSTGRESQL) ; users : fichier de configuration utilisé pour déclarer les utilisateurs autorisés à s authentifer sur Freeradius. Pour valider l efficience de notre serveur Freeradius et de sa configuration d origine, nous allons tester son fonctionnement. Pour cela, nous allons d une part déclarer un NAS et un utilisateur autorisé à s authentifier 5

III. Installation du service Freeradius dans les fichiers prévus à cet effet par Freeradius, puis d autre part lancer notre serveur d authentification en mode debug. Remarque : Par défaut, nous réaliserons une copie de sauvegarde de tous les fichiers de configuration que nous éditerons en fichier.ext.old. 1. Déclaration d un NAS La déclaration d un NAS doit impérativement respecter trois directives : 1. le nom du client sous la forme : client mon-nas-01 2. l adresse ou le nom fqdn 1 associé au NAS : ipaddr = 10.12.14.15 3. le secret partagé entre le NAS et le serveur Freeradius : secret = mon-secret-partagé Ces directives sont à définir dans le fichier /etc/freeradius/clients.conf : root@srvm-freeradius-02:/etc/freeradius# nano clients.conf client localhost { ipaddr = 127.0.0.1 secret = test root@srvm-freeradius-02:/etc/freeradius# Étant donné que nous allons tester notre configuration depuis le serveur Debian, nous spécifions l adresse de loopback (localhost ou 127.0.0.1) pour notre client. C est donc la même machine qui réalisera les rôles d authenticator et de serveur d authentification. Passons à la définition de notre premier utilisateur nommé foobar. 2. Déclaration d un utilisateur users : La déclaration d un utilisateur simple avec un mot de passe en clair s effectue par le biais du fichier root@srvm-freeradius-02:/etc/freeradius# nano users foobar Cleartext-Password := "password" root@srvm-freeradius-02:/etc/freeradius# Ces deux étapes réalisées, il ne nous reste plus qu à lancer notre service Freeradius en mode debug et de réaliser des tests d authentification. 3. Freeradius en mode debug Nous arrêtons le démon freeradiusd pour le lancer en mode debug, afin de visualier les traitements réalisés et les éventuelles erreurs détectées par Freeradius. 1. Full Qualified Domain Name 6

III. Installation du service Freeradius root@srvm-freeradius-02:/etc/freeradius# /etc/init.d/freeradius stop Stopping FreeRADIUS daemon: freeradius. root@srvm-freeradius-02:/etc/freeradius# freeradius -X [...] Listening on authentication address * port 1812 Listening on accounting address * port 1813 Listening on authentication address 127.0.0.1 port 18120 as server inner-tunnel Listening on proxy address * port 1814 Ready to process requests. La configuration par défaut de Freeradius est complexe. Le lancement du démon en mode debug nous indique ici une partie des éléments de configuration et méthodes d authentification qu il prend charge dans sa configuration par défaut. À la fin du TP, nous tenterons de réduire ces éléments de configuration pour ne laisser que les indispensables à notre besoin. En fin de chargement du mode debug, Freeradius nous indique les différents ports d écoute, dédiés à l authentification, à l accounting, et aux serveurs virtuels et proxy. Laissons ce terminal ouvert, puis, depuis un autre terminal, testons une authentification de foobar à l aide du binaire radtest fourni par Freeradius (man radtest pour plus d information...). 4. Premiers tests avec radtest root@srvm-freeradius-02:~# radtest foobar password localhost 0 test Sending Access-Request of id 127 to 127.0.0.1 port 1812 User-Name = "foobar" User-Password = "password" NAS-IP-Address = 127.0.1.1 NAS-Port = 0 Message-Authenticator = 0x00000000000000000000000000000000 rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=127, length=20 root@srvm-freeradius-02:~# L élément important ici est l Access-Accept renvoyé par Freeradius. Le mode debug de Freeradius nous indique un peu plus d information : rad_recv: Access-Request packet from host 127.0.0.1 port 60835, id=127, length=74 User-Name = "foobar" User-Password = "password" NAS-IP-Address = 127.0.1.1 NAS-Port = 0 Message-Authenticator = 0x83ead3f682c403f65a628d19a4e4d945 # Executing section authorize from file /etc/freeradius/sites-enabled/default +- entering group authorize {... ++[preprocess] returns ok ++[chap] returns noop ++[mschap] returns noop ++[digest] returns noop 7

III. Installation du service Freeradius [suffix] No @ in User-Name = "foobar", looking up realm NULL [suffix] No such realm "NULL" ++[suffix] returns noop [eap] No EAP-Message, not doing EAP ++[eap] returns noop [files] users: Matched entry foobar at line 1 ++[files] returns ok ++[expiration] returns noop ++[logintime] returns noop ++[pap] returns updated Found Auth-Type = PAP # Executing group from file /etc/freeradius/sites-enabled/default +- entering group PAP {... [pap] login attempt with password "password" [pap] Using clear text password "password" [pap] User authenticated successfully ++[pap] returns ok # Executing section post-auth from file /etc/freeradius/sites-enabled/default +- entering group post-auth {... ++[exec] returns noop Sending Access-Accept of id 127 to 127.0.0.1 port 60835 Finished request 0. Going to the next request Waking up in 4.9 seconds. Cleaning up request 0 ID 127 with timestamp +268 Ready to process requests. En fonction de la configuration générale de Freeradius, ce dernier peut indiqué plus ou moins d information, en fonction des différentes méthodes d authentification paramétrées. Nous repérons ici la méthode utilisée par Freeradius pour valider le processus d authentification de foobar : PAP 2. Remarque : Pour la suite du TP, nous exploiterons ce second terminal pour réaliser les configurations et certains tests, tout en conservant le premier terminal pour visualiser le comportement de notre service Freeradius en mode debug. Passons sans plus attendre à notre firewall pfsense, afin de créer un portail captif en sous traitant son authentifcation par notre Freeradius fraîchement installé. 2. Password Authenficiation Protocol transmet sur le réseau des mots de passe ASCII non chiffrés, méthode évidemment à bannir. Il est utilisé en dernier recours dès lors qu aucune méthode d authentification forte n est présente, comme CHAP ou EAP. 8

IV. Création d un portail captif IV Création d un portail captif 1. Préambule Un portail captif est un système permettant d intercepter toutes les requêtes http et https d un client. Le but est d authentifier les utilisateurs d un réseau en les renvoyant vers une page prévue à cet effet - d où le nom portail captif. Ces services sont communément utilisés dans les hotspots, hotels... Dans d autres scénarios, les portails captifs sont utilisés pour l authentification des utilisateurs sur un réseau filaire ou pour forcer l accord d un contrat ou charte d usage du moyen mis à disposition. Passons aux phases de création, puis de configuration en externalisant l authentification de notre service par notre serveur Freeradius. 2. Configuration Au cours de cette section, nous verrons comment configurer pfsense pour qu il remplisse ce rôle avec une authentification depuis notre serveur d authentification Freeradius, limitant ainsi les utilisateurs depuis notre zone Public. (Cf I.2, page 10). 1. Se rendre dans le menu Services Portal captive ; 2. Ajouter une nouvelle zone ; 3. Cocher la case Enable captive portal ; 4. Sélectionner l interface sur laquelle vous souhaitez que pfsense force l interception des requêtes des utilisateurs : Public pour l exemple ; 5. Spécifier la directive Idle Timeout à 10 minutes ; 6. Spécifier la directive Hard Timeout à 60 minutes ; 7. Spécifier la directive Enable logout popup window pour que les utilsiateurs puissent se déconnecter grâce à un popup lancé lors de l identification validée d un utilisateur ; 8. Activer l authentification Radius de type PAP ; 9. Spécifier l adresse IP de votre serveur Radius ; 10. Définir le secret partagé entre votre NAS (le pfsense) et le serveur Freeradius ; 11. Cocher l option Sens RADIUS accountig packets pour activer le calcul des ressources consommées par vos utilisateurs ; 12. Cocher l option stop/start accounting ; 13. Valider enfin la configuration par le bouton Save. Remarque 1 : Activer puis paramétrer si besoin le service DHCP de votre pfsense sur votre Public. 9

IV. Création d un portail captif FIGURE I.2 Service Portal captive : création d un portail captif 10

IV. Création d un portail captif FIGURE I.3 Service Portal captive : interception Remarque 2 : Dans l exemple, nous ajoutons le service de portail captif sur l interface Public, qui ne possède pas encore de règle particulière. Ajoutez une règle permettant la sortie vers le HTTP(S) et le DNS au minimum pour pouvoir convenablement tester le portail captif. Si vous connectez un équipement sur le vlan Public et tentez de consulter un site internet, vous devriez être intercepté par le portail captif de pfsense (Cf I.3). Cependant, toutes les tentatives d authentification que vous allez tenter ne pourront aboutir. Complétez la configuration de Freeradius, arrêtez le mode debug puis relancez-le. Adaptez les configurations de vos équipements pour réaliser une authentification de type CHAP. (Vérifiez la présence de cette méthode dans la section authenticate de Freeradius au besoin, puis validez le fonctionnement. Nous venons de déployer plusieurs éléments. Pour débuter, nous avons installé un serveur d authentification AAA Freeradius, qui pour le moment ne possède pas de configuration d authentification particulière, par lequel nous avons déclaré des utilisateurs et des clients (authenticator). Nous avons ensuite créé un portail captif sur un VLAN dédié (Public) sous traitant l authentification à notre serveur d authentification. Enfin, nous avons paramétré le port de notre actif pour qu il fournisse le même VLAN à notre utilisateur afin d être intercepté puis authentifié à l aide de son couple login / mot de passe. Si vous le souhaitez, vous pouvez vous référer à la section 1..Autentification Radius-MAC, située à la page 29, décrivant les différentes étapes pour configurer une authentification de type Radius-MAC. Nous avons fini la première partie de ce TP. Passons maintenant aux choses sérieuses, en appliquant à notre configuration une authentification forte des utilisateurs. Pour cela, nous allons ajouter à notre serveur Freeradius la configuration nécessaire pour qu il traite l authentification EAP-TLS. Cette méthode, basée sur les certificats, permettra une authentification mutuelle entre l utilisateur et le serveur d authentification, par le biais d un authenticator : le switch. 11

V. Création des certificats V Création des certificats Comme évoqué en introduction de ce TP, nous allons mettre en oeuvre la méthode d authentification EAP-TLS, basée sur une authentification mutuelle par certificats. Pour générer les différents certificats que nous utiliserons pour authentifier les clients et le serveur, nous allons exploiter les éléments mis à disposition par Freeradius lors de l installation. Nous devons disposer d un certificat d autorité, d un certificat serveur associé à sa clé, puis des certificats liés mathématiquement pour chaque utilisateur autorisé à accéder à certaines ressources ou sous réseaux. Se rendre dans l arborescence /usr/share/doc/freeradius/examples/certs ; Modifier le fichier de configuration de l autorité de certification ca.cnf : [ req ] prompt = no distinguished_name = certificate_authority default_bits = 2048 input_password = tpradius output_password = tpradius x509_extensions = v3_ca [certificate_authority] countryname = FR stateorprovincename = Limousin localityname = Limoges organizationname = TP-Freeradius emailaddress = admin@loiclaforet.org commonname = "Certificat d autorite" Modifier le fichier de configuration du certificat serveur serveur.cnf : [ req ] prompt = no distinguished_name = server default_bits = 2048 input_password = tpradius output_password = tpradius [server] countryname stateorprovincename localityname organizationname emailaddress commonname = FR = Limousin = Limoges = TP-Freeradius = admin@loiclaforet.org = "Certificat serveur" Remarque : Il est possible que votre distribution ne possède pas le binaire make, nécessaire ici pour générer les certificats serveurs, ca et clients. Installez le si besoin. 12

V. Création des certificats Générer la clé et le certificat de l autorité, puis le certificat pour Windows par les commandes suivantes ; root@[...]:/usr/[...]certs# make ca.pem openssl req -new -x509 -keyout ca.key -out ca.pem \ -days grep default_days ca.cnf sed s/.*=//;s/^ *// -config./ca.cnf Generating a 2048 bit RSA private key...+++... writing new private key to ca.key ----- root@[...]:/usr/[...]certs# root@[...]:/usr/[...]certs# make ca.der openssl x509 -inform PEM -outform DER -in ca.pem -out ca.der root@[...]:/usr/[...]certs# Pour générer le certificat serveur, il est nécessaire de disposer d un fichier serial contenant la chaîne de caractère 01, puis d un fichier index.txt vide. Générer le certificat par la commande : root@[...]:/usr/[...]certs# touch index.txt root@[...]:/usr/[...]certs# echo "01" > serial root@[...]:/usr/[...]certs# make server.pem openssl ca -batch -keyfile ca.key -cert ca.pem -in server.csr -key grep output_password ca.cnf sed s/.*=//;s/^ *// -out server.crt -extensions xpserver_ext -extfile xpextensions -config./server.cnf Using configuration from./server.cnf Check that the request matches the signature Signature ok Certificate Details: Serial Number: 1 (0x1) Validity Not Before: Jun 6 12:28:23 2014 GMT Not After : Jun 6 12:28:23 2015 GMT Subject: countryname = FR stateorprovincename = Limousin organizationname = TP-Freeradius commonname = Certificat Serveur emailaddress = admin@loiclaforet.org X509v3 extensions: X509v3 Extended Key Usage: TLS Web Server Authentication Certificate is to be certified until Jun 6 12:28:23 2015 GMT (365 days) Write out database with 1 new entries Data Base Updated openssl pkcs12 -export -in server.crt -inkey server.key -out server.p12 pass: grep output_password -passin 13

V. Création des certificats server.cnf sed s/.*=//;s/^ *// -passout pass: grep output_password server.cnf sed s/.*=//;s/^ *// openssl pkcs12 -in server.p12 -out server.pem -passin pass: grep output_password server.cnf sed s/.*=//;s/^ *// -passout pass: grep output_password server.cnf sed s/.*=//;s/^ *// MAC verified OK root@[...]:/usr/[...]certs# Écraser si besoin les certificats déjà placés dans le répertoire certs de Freeradius, puis y copier les certificats et la clé privée du serveur. root@[...]:/usr/[...]certs# cp ca.pem server.key server.pem /etc/freeradius/certs/ Créer un certificat pour un premier client, en modifiant le fichier client.cnf, puis en lançant la commande make client.pem. [client] countryname = FR stateorprovincename = Limousin localityname = Limoges organizationname = TP-Freeradius emailaddress = user@loiclaforet.org commonname = l-laforet@loiclaforet.org root@[...]:/usr/[...]certs# make client.pem openssl req -new -out client.csr -keyout client.key -config./client.cnf Generating a 2048 bit RSA private key...+++..+++ writing new private key to client.key ----- openssl ca -batch -keyfile ca.key -cert ca.pem -in client.csr -key grep output_password ca.cnf sed s/.*=//;s/^ *// -out client.crt -extensions xpclient_ext -extfile xpextensions -config./client.cnf Using configuration from./client.cnf Check that the request matches the signature Signature ok Certificate Details: Serial Number: 2 (0x2) Validity Not Before: Jun 6 12:42:37 2014 GMT Not After : Jun 6 12:42:37 2015 GMT Subject: countryname = FR stateorprovincename = Limousin organizationname = TP-Freeradius commonname = l-laforet@loiclaforet.org emailaddress = user@loiclaforet.org X509v3 extensions: X509v3 Extended Key Usage: TLS Web Client Authentication 14

V. Création des certificats Certificate is to be certified until Jun 6 12:42:37 2015 GMT (365 days) Write out database with 1 new entries Data Base Updated openssl pkcs12 -export -in client.crt -inkey client.key -out client.p12 -passin pass: grep output_password client.cnf sed s/.*=//;s/^ *// -passout pass: grep output_password client.cnf sed s/.*=//;s/^ *// openssl pkcs12 -in client.p12 -out client.pem -passin pass: grep output_password client.cnf sed s/.*=//;s/^ *// -passout pass: grep output_password client.cnf sed s/.*=//;s/^ *// MAC verified OK cp client.pem grep emailaddress client.cnf grep @ sed s/.*=//;s/^ *//.pem root@[...]:/usr/[...]certs# Ces différentes étapes ont été rendues simples grâce aux éléments fournis par Freeradius. Le principe reste le même si vous souhaitez utiliser directement les commandes fournies par OpenSSL. La méthode la plus propre et la plus simple à exploiter reste néanmoins le déploiement d une PKI 3. Son déploiement reste cependant fastidieux est complexe. Cette partie étant terminée, adaptons la configuration de Freeradius pour qu il traite l authentification EAP-TLS. 3. Public Key Infrastructure 15

VI. Intégration de la méthode EAP-TLS dans Freeradius VI Intégration de la méthode EAP-TLS dans Freeradius Lors de nos premiers tests d authentification d un utilisateur sous Freeradius, nous nous sommes contentés d utiliser une méthode d authentification simple basée sur un mot de passe (PAP et ou CHAP). Le but étant de fournir une authentification forte à nos utilisateurs, nous devons forcer Freeradius à gérer l authentification par le protocole EAP, décrit en introduction de ce document, en utilisant les certificats que nous venons de générer à la section V.Création des certificats, page 12. Pour effectuer cette opération, nous allons adapter le fichier /etc/freeradius/eap.conf. Astuce : Freeradius a la particularité comme beaucoup de fichier de configuration sous Linux à posséder un nombre incalculabe de lignes et de directives, de commentaires, de sections... Étant donné que nous avons réalisé un.old de notre fichier eap.conf, vous pouvez exécuter la commande suivante qui vous permettra de supprimer toutes les lignes en commentaires. Cette opération est ici réalisée afin de faciliter la lisibilité des fichiers de configuration. Si vous devez déployer un tel service dans un cadre professionnel ou d étude de R&D, il est conseillé de garder le fichier d origine... root@[...]# cat eap.conf egrep -v "^[ root@[...]# mv eap.conf.tmp eap.conf ]*# ^$" > eap.conf.tmp 1. Configuration de Freeradius Modifier les directives suivantes : default_eap_type = tls private_key_password = tpradius Commenter les sous-sections ttls, peap, mschapv2, méthodes non exploitées dans ce TP. 2. Déclaration d un utilisateur EAP-TLS Maintenant que notre serveur d authentification est configuré pour traiter des requêtes EAP-TLS, nous devons lui déclarer un utilisateur EAP capable de s authentifier. Pour cela, nous exploitons toujours le fichier users de Freeradius. Comme nous le verrons plus loin dans le chapitre VII, à la page 22, nous allons ici déclarer un attribut de type autorisation permettant de forcer le VLAN de l utilisateur une fois l authentification TLS réussie. l-laforet@loiclaforet.org Auth-Type := EAP Tunnel-Type = VLAN, Tunnel-Medium-Type = 802, Tunnel-Private-Group-ID = 2 Nous avons donc spécifié le protocole EAP, de type VLAN par le biais d un média 802, et nous demandons à Freeradius de spécifier le numéro de VLAN à l authenticator une fois l authentification réussie. Redémarrer le serveur d authentification pour prendre en compte ces modifications, puis passons à la configuration de notre client Windows. 16

VI. Intégration de la méthode EAP-TLS dans Freeradius 3. Configuration d un client sous Windows La configuration d un client sous Windows ou sous un autre système d exploitation est très simple. Il nous suffit d installer les certificats ca.der et client.p12 que nous avons préalablement générés. Le premier sera pour déclarer l autorité de certification de confiance (le tiers) et le second concerne notre certificat client (.p12 pour Windows). Dans l ordre : FIGURE I.4 Autorité de certification - Installation FIGURE I.5 Autorité de certification - Choix du magasin Saisir le mot de passe paramétré lors de la génération du certificat d autorité (Cf. figure I.9) ; 17

VI. Intégration de la méthode EAP-TLS dans Freeradius FIGURE I.6 Autorité de certification - Avertissement FIGURE I.7 Autorité de certification - Confirmation Modifier la configuration d authentification de votre carte réseau (Cf. figure I.10) ; Sélectionner l autorité de confiance (Cf. figure I.11) ; 18

VI. Intégration de la méthode EAP-TLS dans Freeradius FIGURE I.8 Certificat client - Installation FIGURE I.9 Certificat client - Mot de passe 19

VI. Intégration de la méthode EAP-TLS dans Freeradius FIGURE I.10 Certificat client - Configuration de la carte réseau FIGURE I.11 Certificat client - Choix de l autorité de confiance 20

VI. Intégration de la méthode EAP-TLS dans Freeradius FIGURE I.12 Windows - Détection de l authentification 802.1X Lorsque Windows détecte la nécessité de fournir une authentification basée sur le protocole 802.1X, sélectionner le certificat client préalablement installé (Cf. figure I.13) ; FIGURE I.13 Windows - Choix du certificat client Une fois la configuration du client terminée, nous devons prendre la main sur l actif mis à votre disposition, afin d activer la méthode d authentification 802.1X (port-based) sur le port sur lequel votre client est connecté. 21

VII. Configuration du switch HP2626 VII Configuration du switch HP2626 Nous allons administrer en mode console (telnet port 23) le switch pour modifier d une part les ports sur lesquels seront connectés nos clients Windows, et d autre part pour déclarer notre serveur Freeradius sur lequel les requêtes d authentification EAP s effectueront. S identifer par une session telnet sur l actif ; Passer en mode de configuration ; Spécifier les paramètres suivant ; Activer l authentification EAP Définir le temps pendant lequel le switch ne tentera pas d interroger le serveur Radius si ce dernier ne répond plus ; Définir le serveur Radius sur lequel le switch enverra les paramètres d authentification des clients avec le secret partagé ; Définir l activation 802.1X sur un port de test ; Définir le VLAN attribué si le client échoue dans le processus d authentification ; Définir l activation de l authentification 802.1X au niveau du switch. aaa authentication port-access eap-radius radius-server dead-time 10 radius-server host 192.168.2.100 key test123 aaa port-access authenticator 10 aaa port-access authenticator 10 unauth-vid 3 aaa port-access authenticator active Configurer le port du switch dans le VLAN LAN ; HP ProCurve Switch 2626(config)# vlan 2 HP ProCurve Switch 2626(vlan-2)# untagged 10 Warning: Changes on 802.1x port(s) may be postponed. HP ProCurve Switch 2626(vlan-2)# Vous devriez désormais pouvoir vous authentifier sur le serveur Freeradius, par l intermédiaire de votre certificat client, en utilisant le protocole 802.1X et EAP-TLS depuis l ordinateur client connecté sur le port du switch. Analysez les logs de Freeradius afin d identifier les différents échanges entre le NAS et le serveur, puis repérez l Acces-Accept de la requête de l utilisateur : Sending Access-Accept of id 37 to 192.168.2.159 port 1024 Tunnel-Type:0 = VLAN Tunnel-Medium-Type:0 = 802 Tunnel-Private-Group-Id:0 = "2" MS-MPPE-Recv-Key = 0x35bf4c3f2776c4b1d2610c7ea9095efeaa39892037 MS-MPPE-Send-Key = 0x30d8a021633528dd2e8f6d6c5f7bf51b19b9c48acc EAP-Message = 0x03070004 Message-Authenticator = 0x00000000000000000000000000000000 User-Name = "l-laforet@loiclaforet.org" Finished request 35. 22

VIII. Déploiement du serveur Mysql, et configuration de Freeradius Si vous réitérez cette opération en annulant la sélection du certificat lorsque Windows vous demande de fournir des éléments supplémentaires pour valider l authentification (cf. figure I.13 21), vous devriez basculer automatiquement dans le VLAN 3 Public, réseau public dans notre exemple. Dans les prochains chapîtres, nous allons déployer un serveur de bases de données pour nous simplifier l exploitation de la gestion des utilisateurs et des NAS. VIII Déploiement du serveur Mysql, et configuration de Freeradius Le but est de déployer les services MySQL, Apache2 et phpmyadmin pour administrer notre base de données Radius, et le composant permettant a Freeradius d interroger une base MySQL pour vérifier les utilisateurs, leurs attributs et les NAS. 1. Installation Dans un premier temps, on installe les paquets nécessaires : apt-get install freeradius-mysql php5 libapache2-mod-php5 php5-mysql mysql-server apache2 phpmyadmin Dans l ordre, nous allons : 1. Créer une base de données pour Freeradius : radius ; 2. Créer un utilisateur pour cette base de données en lui donnant un privilège administrateur, en lui définissant un mot de passe ; 3. Créer la structure des tables par défaut ; 4. Créer la structure de la table NAS ; Remarque : Le mot de passe de l utilisateur root de MySQL est ici toor a. a. Ce qui n est pas bien... du tout. # echo "create database radius;" mysql -u root -ptoor # echo "grant all on radius.* to radius@ % identified by radius ;\ flush privileges;" mysql -u root -ptoor # mysql -uroot -ptoor radius < /etc/freeradius/sql/mysql/schema.sql # mysql -uroot -ptoor radius < /etc/freeradius/sql/mysql/nas.sql Soit par l intermédiaire de l application web phpmyadmin, soit directement par la console MySQL vérifiez la présence de la base et des tables dédiées à Freeradius. Depuis le fichier de configuration général de Freeradius (radiusd.conf), on active les directives nécessaires pour MySQL. Ensuite, on édite le fichier de configuration de Freeradius définissant l accès à la base de données radius - (ajustez les directives en fonction des choix réalisés au dessus). Pensez à forcer Freeradius à lire ses clients depuis la base par la table nas. 23

VIII. Déploiement du serveur Mysql, et configuration de Freeradius # nano /etc/freeradius/radiusd.conf $INCLUDE sql.conf $INCLUDE sql/mysql/counter.conf # nano /etc/freeradius/sql.conf sql { database = "mysql" driver = "rlm_sql_${database" server = "localhost" login = "radius" password = "radius" radius_db = "radius" acct_table1 = "radacct" acct_table2 = "radacct" postauth_table = "radpostauth" authcheck_table = "radcheck" authreply_table = "radreply" groupcheck_table = "radgroupcheck" groupreply_table = "radgroupreply" usergroup_table = "radusergroup" deletestalesessions = yes sqltrace = no sqltracefile = ${logdir/sqltrace.sql num_sql_socks = 5 connect_failure_retry_delay = 60 lifetime = 0 max_queries = 0 readclients = yes nas_table = "nas" $INCLUDE sql/${database/dialup.conf Nous allons maintenant modifier le fichier déclarant les requêtes réalisées par Freeradius pour interroger la table MySQL. En effet, lors des tests réalisés dans la préparation de ce TP, il a été nécessaire de désactiver le champ server, pour valider certaines opérations. # nano /etc/freeradius/sql/mysql/dialup.conf nas_query = "SELECT id, nasname, shortname, type, secret FROM ${nas_table" Afin de rendre plus propre la configuration de notre serveur d authentification, nous allons supprimer les liens symboliques existant situés dans le répertoire /sites-enabled/ et nous allons créer notre propre fichier de configuration. Respectez cependant le fonctionnement de base de Freeradius en plaçant votre fichier de déclaration dans /site-available/ et en lui faisant pointer un lien symbolique dans /sites-enabled/. 24

VIII. Déploiement du serveur Mysql, et configuration de Freeradius Voici une proposition de déclaration de notre site : authorize { preprocess eap { ok = return expiration logintime sql authenticate { Auth-Type CHAP { chap eap preacct { preprocess acct_unique accounting { detail radutmp session { radutmp sql post-auth { exec Post-Auth-Type REJECT { attr_filter.access_reject pre-proxy { post-proxy { eap Une fois la déclaration de notre site opérationnelle, nous devons déclarer explicitement les NAS (ou clients, ou authenticator) autorisés à réaliser les processus d authentification entre nos utilisateurs et notre serveur d authentification. Utilisez la commande suivante pour déclarer notre NAS dans la table adéquate : # echo "INSERT INTO nas(nasname,shortname,type,secret,server) VALUES \ ( 192.168.2.159, hp2626, other, test, )" mysql -u radius -pradius radius 25

VIII. Déploiement du serveur Mysql, et configuration de Freeradius Faites de même pour les autres NAS que vous souhaitez exploiter. Relancez enfin votre serveur Freeradius toujours en mode debug, pour vérifier si vous n avez pas d erreur de configuration. Validez également la configuration en testant un utilisateur à l aide de son certificat, et l utilisateur foobar. Tentez de comprendre pourquoi... ou passez à la suite. L utilisateur foobar ne peut se connecter car il a été initialement déclaré dans le fichier users. Dans la configuration de notre site tp-radius, nous avons désactivé la directive files dans la section authorize, en autorisant uniquement eap et sql. Ainsi l utilisateur foobar n est plus un utilisateur déclaré pour notre Freeradius. Pour l ajouter, procédez ainsi : echo "INSERT INTO radcheck(username,attribute,op,value) VALUES \ ( foobar, Cleartext-Password, :=, foobar );" mysql -u \ radius -pradius radius Concernant l utilisateur l-laforet@loiclaforet.org possédant un certificat lié à l autorité de certification et au certificat serveur de notre Debian, il a la capacité de s authentifier car la directive eap est déclarée dans notre fichier de configuration de site. Le fait que eap soit une méthode d authentification sans autre contrôle pose un réel problème ici... Quel que soit le certificat valide présenté, donc authentique et non révoqué, notre utilisateur le possédant sera automatiquement accepté. C est le problème de notre solution. Nous ne disposons pas ici d une réelle PKI, permettant facilement de révoquer pour x raisons le certificat d un client. Ainsi nous ne sommes pas en mesure de désactiver un utilisateur s authentifiant par un certificat par le biais du protocole EAP-TLS. Pour pallier cette faille, nous allons contourner un peu le fonctionnement natif cette méthode en ajoutant un contrôle supplémentaire nous assurant un contrôle réel sur nos utilisateurs. Nous allons désactiver dans la section authorize la directive eap, pour ne la laisser que dans authenticate. Ainsi notre site tp-radius : authorize { preprocess eap { ok = return expiration logintime sql authenticate { Auth-Type CHAP { chap eap... devient : 26

VIII. Déploiement du serveur Mysql, et configuration de Freeradius authorize { preprocess expiration logintime sql authenticate { Auth-Type CHAP { chap eap Ainsi, même si le processus d authentification est autorisée par Freeradius lors d une tentative EAP-TLS valide par les certificats, nous bloquons par défaut l autorisation aux ressources par ce procédé. L utilisateur est ainsi rejeté. Si vous retentez de vous connecter à l aide de votre utilisateur possédant un certificat, vous devriez être rejeté par Freeradius, et le debug devrait correspondre à : [...] ERROR: No authenticate method (Auth-Type) found for the request: Rejecting the user Failed to authenticate the user. Using Post-Auth-Type Reject # Executing group from file /etc/freeradius/sites-enabled/tp-radius +- entering group REJECT {... [attr_filter.access_reject] expand: %{User-Name -> l-laforet@loiclaforet.org attr_filter: Matched entry DEFAULT at line 11 ++[attr_filter.access_reject] returns updated Delaying reject of request 0 for 1 seconds Going to the next request Waking up in 0.9 seconds. Sending delayed reject for request 0 Sending Access-Reject of id 45 to 192.168.2.159 port 1024 Waking up in 4.9 seconds. Cleaning up request 0 ID 45 with timestamp +64 Ready to process requests. Nous devons cependant permettre à nos utilisateurs possédant un certificat valide de s authentifier par le serveur Freeradius. Pour cela, nous allons nous appuyer sur la table radgroupcheck, en déclarant un groupe autorisé à utiliser la méthode EAP pour s authentifier : mysql> insert into radgroupcheck (GroupName,Attribute,op,Value) values \ ( eap-group, Auth-Type, :=, EAP ); Query OK, 1 row affected (0.00 sec) Maintenant, associez vos utilisateurs possédant un certificat valide à ce groupe par l intermédiaire de la table radusergroup : 27

VIII. Déploiement du serveur Mysql, et configuration de Freeradius mysql> insert into radusergroup (UserName,GroupName) values \ ( l-laforet@loiclaforet.org, eap-group ); Query OK, 1 row affected (0.00 sec) Vous devriez désormais pouvoir authentifier vos utilisateurs possédant un certificat valide, et présents dans le groupe eap-group que nous venons de créer. Sending Access-Accept of id 52 to 192.168.2.159 port 1024 MS-MPPE-Recv-Key = 0x170063a9c22c5198946a7043221e2c775735a91e3ebcac657cc5772cb386945e MS-MPPE-Send-Key = 0xa5a6517975829590bdcc59b1b75cf8860f4d82a71b9e6f9def6a877b102df715 EAP-Message = 0x03070004 Message-Authenticator = 0x00000000000000000000000000000000 User-Name = "l-laforet@loiclaforet.org" Finished request 7. Going to the next request Waking up in 4.9 seconds. Cleaning up request 1 ID 46 with timestamp +566 Nous allons maintenant nous pencher sur l attribution dynamique des vlan associés à nos utilisateurs authentifiés par le protocole 802.1X. Nous avons pour le moment forcé les utilisateurs dans un vlan (untag 2), et nous avons demandé à notre switch de les basculer dans un vlan public si l authentification 802.1X échouait. Cela fonctionne mais ce fonctionnement reste très limité. En effet, par cette méthode, nous ne pouvons forcer un étudiant de BTS SIO a basculé dans un vlan dédié, quelque soit le switch et le port sur lequel il se connecterait. Pour permettre aux administrateurs de forcer chaque utilisateur a utiliser un vlan particulier, nous allons exploiter trois attributs RADIUS par l intermédiaire de la table radgroupreply. Réaliser les requêtes SQL pour arriver au résultat suivant : mysql> SELECT * FROM radgroupreply; +----+-----------+-------------------------+----+----------+ id groupname attribute op value +----+-----------+-------------------------+----+----------+ 1 eap-group Tunnel-Type = VLAN 2 eap-group Tunnel-Medium-Type = IEEE-802 3 eap-group Tunnel-Private-Group-ID = 2 +----+-----------+-------------------------+----+----------+ 3 rows in set (0.00 sec) Ces attributs forcent les utilisateurs du groupe eap-group à basculer lors d une authentification réussie dans le vlan 2 LAN. Modifiez la configuration du port du switch sur lequel vous testez votre client à utiliser le vlan 3 untag. Cette solution permet donc d activer tous les ports de plusieurs actifs paramétrés en 802.1X, de paramétrer avec un vlan public cette authentification échouait, et, en fonction de l utilisateur, l associer à groupe le renvoyant dans son vlan attitré. Réitérez les tests et vérifier le fonctionnement. 28

IX. Annexes IX Annexes 1. Autentification Radius-MAC L authentification par Radius-MAC est la solution la plus simple à mettre en oeuvre. Vu la facilité d ursuper une adresse mac, elle est cependant à éviter. La configuration de Freeradius ne demande que l activation de l autorisation et de l authentification CHAP. La déclaration d un utilisateur correspond à : 50465D38F676 Auth-Type := Local, User-Password == 50465D38F676 Tunnel-Type = VLAN, Tunnel-Medium-Type = 802, Tunenl-Private-Group-ID = 2 Concernant la configuration du switch 2626 (non native sur le 2960G) : radius-server host 192.168.2.100 key secret aaa port-access mac-based addr-format no-delimiter aaa port-access mac-based 10 Concernant la configuration du serveur Freeradius, il suffit d activer l authentification CHAP dans les sections authorize et authenticate. 2. Cumul d une authentification EAP-TLS et Radius-MAC Il s agit ici d authentifier la machine elle-même. Nous avons vu que la simple adresse MAC n était pas suffisamment fiable pour être utilisé comme seul moyen. Une autre méthode consiste à créer un certificat pour chaque machine. Le supplicant est configuré pour EAP-TLS et avec le certificat de la machine. Si le CN du certificat correspond au nom fqdn de la machine, alors on peut déclarer notre utilisateur ainsi : pc-l-laforet Auth-Type := EAP, Calling-Station-Id == 50465D38F676 Tunnel-Type = VLAN, Tunnel-Medium-Type = 802, Tunenl-Private-Group-ID = 2 3. Configuration d un actif Cisco 2960G Cas d un Cisco 2960G : aaa new-model aaa authentication dot1x default group radius dot1x system-auth-control aaa authorization network default group radius radius-server host 192.168.2.100 auth-port 1218 key test123 interface fastethernet 0/10 switchport mode access dot1x port-control auto radius-server dead-criteria time 5 tries 3 radius-server deadtime 10 minutes 29

IX. Annexes 4. Intégration de Freeradius et Active Directory Le but de cette section est de proposer une solution pour intégrer notre serveur Freeradius dans un domaine Active Directory existant. Un domaine Windows peut uniquement assurer le rôle d authentification. Il faudra disposer d une autre solution pour gérer l autorisation (fichier, base MySQL...). L utilisation d un domaine Windows est intéressante lorsque ce domaine est existant, et surtout qu il possède l ensemble des comptes des utilisateurs d une entreprise. L intérêt est donc d interroger la base Windows avec l identifiant fournir par le supplicant pour valider son authentification grâce à son mot de passe. La seule contrainte est de déployer sur notre serveur trois rôles supplémentaires : 1. samba : nécessaire pour joindre notre serveur Freeradius à notre domaine Windows existant. 2. kerberos : nécessaire pour dialoguer et échanger les mots de passe entre samba et notre CPD. 3. winbind : nécessaire pour lier samba au domaine Windows. Pour réaliser l intégration de notre authentification Freeradius par l intermédiaire de notre contrôleur principal de domaine, il est nécessaire de réaliser les opérations suivantes : 1. Installer les paquets nécessaires ; 2. Configurer le fichier de configuration smb.conf ; 3. Configurer le fichier kerb5.conf ; 4. Configurer le fichier ntlm_auth ; 5. Joindre le serveur Freeradius au domaine Active Directory Windows ; 6. Tester la jonction au domaine ; 7. Ajouter l authentification MSCHAP à notre serveur Freeradius ; 8. Tester l authentification d un utilisateur. root@srvm-freeradius-02:~# apt-get install samba krb5-user winbind Répondre aux questions pour valider la liaison de Kerberos au domaine Windows existant. Éditons le fichier de configuration de samba. root@srvm-freeradius-02:~# nano /etc/samba/smb.conf workgroup = AUTH-REZO security = ads winbind use default domain = no password server = windows-2008.auth-rezo.adds wins server = 192.168.2.200 realm = realm.auth-rezo.adds Activons le domaine Windows sur le module ntlm_auth : root@srvm-freeradius-02:/etc/freeradius# cat modules/ntlm_auth exec ntlm_auth { wait = yes program = "/usr/bin/ntlm_auth --request-nt-key --domain=auth-rezo 30

IX. Annexes --username=%{mschap:user-name --password=%{user-password" Éditons le fichier de configuration /etc/freeradius/modules/mschap : ntlm_auth = "/usr/bin/ntlm_auth --request-nt-key --username=%{mschap:user-name:-none --domain=%{%{mschap:nt-domain:-auth-rezo --challenge=%{mschap:challenge:-00 --nt-response=%{mschap:nt-response:-00" Activons l authentification ntlm_auth : authenticate {... ntlm_auth... Joignons le serveur au domaine Windows (la configuration de vos DNS et de votre FQDN est important) : root@srvm-freeradius-02:~# cat /etc/resolv.conf domain auth-rezo.adds search auth-rezo.adds nameserver 192.168.2.200 root@srvm-freeradius-02:~# net join -U Administrateur -w WINDOWS Enter Administrateur s password: Using short domain name -- AUTH-REZO Joined RADIUS-02 to realm auth-rezo.adds root@srvm-freeradius-02:~# root@srvm-freeradius-02:~# net rpc testjoin Join to AUTH-REZO is OK root@srvm-freeradius-02:~# Effectuons différents tests pour valider notre configuration : root@debian:# wbinfo -a tyty%pass plaintext password authentication failed Could not authenticate user tyty%pass with plaintext password challenge/response password authentication succeeded root@debian:# ntlm_auth --request-nt-key --domain=auth-rezo --username=tyty --password=pass NT_STATUS_OK: Success (0x0) root@debian:# Réalisons un premier test pour valider la configuration : root@debian:~# radtest -t mschap tyty pass localhost 0 testing123 Sending Access-Request of id 12 to 127.0.0.1 port 1812 31

IX. Annexes User-Name = "tyty" NAS-IP-Address = 127.0.1.1 NAS-Port = 0 Message-Authenticator = 0x00000000000000000000000000000000 MS-CHAP-Challenge = 0x146ccadf37ec919d MS-CHAP-Response = 0x0001000000000000000000000000000000000000000000000000b5a6e2d403e5e1663d rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=12, length=84 MS-CHAP-MPPE-Keys = 0x00000000000000000c075e1ae8ab7c564e629b0b4d2331330000000000000000 MS-MPPE-Encryption-Policy = 0x00000001 MS-MPPE-Encryption-Types = 0x00000006 root@debian:~# 32