Protocoles d authentification réseau Sans-fil et filaire 1 Plan Introduction Qu'est-ce que l'authentification réseau? Pourquoi faire de l'authentification réseau? Intérêt de l'authentification réseau Authentifier quoi? Des utilisateurs ou des machines? Eléments pour authentifier Autoriser quoi? Le protocole Radius Bases du protocole Support des Vlans Support EAP Freeradius Mise en oeuvre Authentification par adresse MAC (Radius-mac) Configuration des équipements réseau WIFI (borne HP et Cisco) Filaire (switch HP et Cisco) Configuration du serveur Radius Configuration des clients Authentification 802.1X Configuration des équipements réseau WIFI (borne HP et Cisco) Filaire (switch HP et Cisco) Configuration du serveur Radius Configuration des clients TLS - Windows et Linux PEAP - Windows et Linux Utilisation d'une base de données. Windows LDAP 2
Qu'est-ce que l'authentification réseau? Il s'agit d'authentifier une machine lorsqu'elle se branche sur le réseau afin de lui autoriser ou refuser l'usage du réseau. On authentifie pour délivrer des autorisations Cette authentification est indépendante d'autres authentifications vers des systèmes d'exploitation ou applications 3 Qu'est-ce que l'authentification réseau? Authentification Authentification réseau réseau Branchement physique sur le réseau Authentification Autorisation d'usage Base De Données Commune Authentification Authentification applicatives applicatives Authentification sur le système d'exploitation (windows, Linux ) Authentification sur une application (LDAP) 4
Pourquoi faire de l authentification réseau? Sécuriser un réseau filaire ou sans-fil Pour interdire les postes inconnus Pour placer les postes connus a des endroits spécifiques du réseau (vlan) de façon dynamique. Pour savoir quelle machine est connectée et où elle est connectée 5 Intérêts de l authentification réseau? Intérêt pour un réseau filaire Savoir qui se connecte sur quelle prise Eviter une utilisation illicite du réseau par des «inconnus» Affecter les machines sur des réseaux virtuels (cloisonnement) Intérêt pour un réseau sans-fil Obligatoire pour intégrer le réseau filaire cad que les machines sans-fil travaillent comme les machines filaires Affecter une machine sur le même vlan que lorsqu elle se connecte sur le réseau filaire. Authentification + cryptage Nécessité de gérer un périmètre aérien, flou, incontrôlable. 6
Authentifier quoi? Des utilisateurs ou des machines? La réponse dépend de la destination et/ou de l architecture du réseau. Une authentification par utilisateur implique que les autorisations sont accordées quelque soit la machine utilisée. Une authentification par machine implique qu une machine recevra les mêmes autorisations quelque soit l utilisateur qui l utilise. Dans chaque cas il est possible de croiser les éléments d authentification avec l adresse MAC de la machine. 7 Eléments pour authentifier De quoi dispose t on pour authentifier? L adresse MAC de la carte Ethernet Et/ou Une base de login/mot de passe (windows, LDAP ) Et/ou De certificats (utilisateurs ou machines) Obligatoire : ne pas rajouter de contraintes sur l utilisateur 8
Autoriser quoi? On autorise une machine à utiliser tout ou partie d un réseau. Dans un réseau plat (sans sous-réseau) on autorise tout le réseau obligatoirement Dans un réseau segmenté on autorise la connexion sur un sous-réseau (Vlan) 9 Rappel sur les Vlans Vision logique correspondante Routeur Routeur Lien 802.1Q Trunk (cisco) Tagged (HP) Réseau3 Vlan2 Vlan3 Réseau2 switch switch Vlan2 Vlan3 10
Protocoles d authentification Protocoles propriétaires => Exemple: VMPS de Cisco Authentification sur adresse MAC uniquement Réseau filaire Protocoles ouverts => Radius et 802.1x Authentification sur adresse MAC, Login/password Certificats, cartes à puce. Réseau filaire et sans-fil 11 Protocoles d authentification: Radius Deux possibilités : Authentification par adresse MAC (Radius-Mac) Authentification 802.1x 12
Protocoles d authentification: Radius Authentification par adresse MAC Le serveur radius Interroge sa base de données pour mettre en correspondance l adresse MAC et le N de vlan Serveur radius L adresse MAC sert d identifiant Lorsque un poste se connecte sur un port le switch interroge le serveur radius Fichier local Et/ou Base Ldap Et/ou Base sql 13 Protocoles d authentification: Radius et 802.1x Le serveur radius Interroge sa base de données pour trouver l identifiant Serveur radius L identifiant et soit un login/password soit un certificat Le switch relaie la demande du poste Exécution d un supplicant qui demande l authentification Fichier local Et/ou Base Ldap Et/ou Base sql Et/ou Domaine windows 14
Protocoles d authentification: Radius et 802.1x EAP over Radius Serveur radius Il y a une communication entre le client et le serveur Radius avec le protocole EAP Port non contrôlé EAP over LAN EAP Autres Port contrôlé EAP Autres Après authentification Avant authentification 15 Protocoles d authentification: Radius et 802.1x 802.1x met en œuvre le protocole EAP pour les communications du client vers le serveur d'authentification. EAP (Extensible Authentication Protocol) est un protocole de transport de protocole d'authentification. L'intérêt de l'architecture de EAP est de pouvoir utiliser divers mécanismes d'authentification sans que l'équipement réseau (NAS) aient besoin de les connaître. Dans ce cas il agit comme un tunnel transparent vers un serveur qui lui implémente les mécanismes souhaités. Par exemple: Mot de passe, certificats, carte à puce. 16
Protocoles d authentification: EAP Principales méthodes d'authentification EAP: - EAP/TLS Authentification mutuelle entre le serveur et le client par certificat. - EAP/PEAP ou EAP/TTLS Le client est authentifié par un login/mot de passe. Le serveur peut être authentifié par son certificat. 17 Protocoles d authentification:terminologie NAS Authenticator (802.1x) Radius client supplicant Borne WIFi serveur Radius Domaine Windows Méthodes d'authentification et d'autorisation Commutateur supplicant NAS= Network Access Server NAS Authenticator (802.1x) Radius client LDAP Base sql certificats Fichier local 18
Le protocole Radius 19 Le protocole Radius Remote Access Dial In User Service Protocole d'authentification d'utilisateurs distants Initialement plutôt utilisé par les ISP Pour authentifier leurs utilisateurs Développé par Livingston Enterprises Le protocole de base de RADIUS est décrit dans le RFC 2865. Utilise UDP sur le port 1812 (anciennement 1645) 20
Le protocole Radius Radius est un serveur de type AAA Authentification Qui me parle? Authorization Quelles autorisations je lui accorde? Accounting Que fait-il? 21 Le protocole Radius: les types de paquets Le protocole utilise 4 types de paquets suffisants pour assurer toutes les transactions: (hors accounting) Access-Request Access-Accept Access-Reject Access-Challenge 22
Le protocole Radius: les types de paquets Access Request Premier paquet envoyé par le client (NAS) Contient l'identité de l'utilisateur qui se connecte ( username/password ou CN du certificat ou MAC adresse) Access-Accept Renvoyé par le serveur Radius pour accepter la requête du client après interrogation de sa base d'authentification. Ce paquet peut contenir une liste d'attributs correspondant aux services qui sont autorisés (par exemple le vlan). 23 Le protocole Radius: les types de paquets Access-reject Emis par le serveur radius pour spécifier au client que sa requête est rejetée. En principe ce paquet peut être émis à tout moment pour mettre fin à une connexion, mais certains équipement ne supporte pas. Access-challenge Emis par le serveur Radius pour demander soit de ré-emettre un access-request, soit pour demander des informations complémentaires. 24
Le protocole Radius: format des paquets Code(1) Identifier(1) Longueur(2) Authentificateur(16) Attributs et valeurs(variable) Codes 1 - access-request 2 - access-accept 3 - Access-reject 4 - Accounting-request 5 - Accounting-response 11- Access-challenge Identifier utilisé pour associer les requêtes et les réponses. Authentificateur Utilisé pour que l'équipement NAS puisse authentifier les réponses du serveur -> Request authenticator -> Response authenticator Attributs et valeurs Ensemble d'attributs et leur valeur qui indique quels services sont demandés ou autorisés. 25 Le protocole Radius: les types de paquets Code(1) Identifier(1) Longueur(2) Authentificateur(16) Attributs et valeurs Authentificateur Lorsque le client NAS envoi un paquet access-request il inclut un authentificateur appelé request-authenticator qui est une séquence aléatoire. Le serveur répond par un paquet access-accept ou accept-reject ou accept-challenge avec un response-authenticator composé avec les informations contenues dans le paquet access-request, le request authenticator et un secret partagé avec le NAS et le tout crypté MD5. Le NAS est alors en mesure de vérifier que le serveur qui répond est bien celui qu'il a contacté. 26
Le protocole Radius: les attributs Les transactions RADIUS ont pour but de véhiculer des attributs et leur valeur entre le client NAS et le serveur. Ces attributs et leur valeur sont appelés paires attribut-valeur (AVP= attribut-value pair) Ces attributs permettent au client de communiquer des informations au serveur (password, MAC adresse ) et au serveur de communiquer les paramètres des autorisations qu'il délivre (vlan ) ou bien demander des informations complémentaires. Code(1) Identifier(1) Longueur(2) Authentificateur(16) N attribut longueur valeur 27 Le protocole Radius: les attributs Un attribut est caractérisé par son type et sa valeur (éventuellement nulle) Integer Enumerated IP address Chaîne de caractères Date Binaire Vendor-specific Code(1) Identifier(1) Longueur(2) Authentificateur(16) N attribut longueur valeur 28
Le protocole Radius: les attributs standards Il y a beaucoup d'attributs standards mais peu sont utilisables dans le cas d'une utilisation avec 802.1x. Par exemple l'attribut CALLBACK-NUMBER contient le numéro de téléphone sur lequel il faut rappeler le client. Ce qui est inutile dans notre cas Seront décrits ici uniquement les attributs intéressants pour l'authentification 802.1X et Radius Mac 29 Le protocole Radius: les attributs standards Called-Station-Id Contient l'adresse MAC de l'équipement NAS Calling-Station-Id Contient l'adresse MAC de la machine de l'utilisateur. NAS-IP-Address Adresse IP de l'équipement NAS NAS-Port Port sur lequel est connecté le supplicant User-Name User-Password 30
Le protocole Radius: le dictionnaire Chaque attribut possède un numéro d'identification. Seul ce numéro est transmis dans les paquets. La correspondance entre le nom de l'attribut, son numéro et son type est réalisé dans un dictionnaire. N attribut Nom d'attribut type 31 Le protocole Radius: les attributs vendor Les fabricant de matériel réseau (NAS) ont parfois intégré à leurs équipements des attributs spécifiques en plus des attributs standards définis dans le RFC. Ces attributs sont encapsulés dans l'attribut standard vendor-specific qui a pour numero 26. Ils sont appelés VSA = Vendor Specific Attribut Code(1) Identifier(1) Longueur(2) Authentificateur(16) 26 longueur Vendor ID Attribut number longueur valeur 32
Le protocole Radius: les attributs vendor Vendor ID: N d'immatriculation du fabricant (NMPECS= Network Management Private Enterprise Codes (RFC1700) Attribut number Comme pour les attributs standards, les vendor-attributs possèdent un numéro d'identification. Ce numéro est répertorié dans un dictionnaire spécifique au fabricant. Longueur Valeur Code(1) Identifier(1) Longueur(2) Authentificateur(16) 26 longueur Vendor ID Attribut number longueur valeur 33 Le protocole Radius: les attributs vendor Valeur de l'attribut SSID=visiteurs Renvoi à une borne cisco AP1200 le SSID autorisé pour un utilisateur. Ce SSID est égale à un VLAN Nom de l'attribut Exemple 1 ip:inacl#1=permit ip any host 10.3.3.254 Renvoi une ACL à un commutateur (Exemple vu sur: http://www.lmcp.jussieu.fr/~morris/802.1x/mobile.htm) Exemple 2 34
Les extensions du protocole Radius: support des vlans Le support des VLANs est réalisé par le biais des attributs de tunnel Le support des attributs de tunnel est une extension du protocole de base de RADIUS dont le but initial est de créer des tunnels avec des clients distants. Ces extensions sont décrites dans le RFC 2868 Les attributs concernés sont : Tunnel-type Tunnel-Medium-Type Tunnel-Private-group-Id 35 Les extensions du protocole Radius: support des vlans Tunnel-Type Il y a 13 types de tunnels. Bien que le RFC ne parle que des 12 premiers. Le 13ème étant les VLAN 802.1q. 1 Point-to-Point Tunneling Protocol (PPTP) 2 Layer 2 Forwarding (L2F) 3 Layer 2 Tunneling Protocol (L2TP) 4 Ascend Tunnel Management Protocol (ATMP) 5 Virtual Tunneling Protocol (VTP) 6 IP Authentication Header in the Tunnel-Mode (AH) 7 IP-in-IP encapsulation (IP-IP) 8 Minimal IP-in-IP Encapsulation (MIN-IP-IP) 9 IP encapsulating Security Payload in the tunnel-mode (ESP) 10 Generic Route Encapsulation (GRE) 11 Bay dial in virtual Services (DVS) 12 IP-in-IP Tunneling 13 Vlan 802.1Q 36
Les extensions du protocole Radius: support des vlans Tunnel-Medium-Type Cet attribut indique quel type de transport est utilisé. Il y a 14 types possibles. 1 IPv4 2 UPv6 3 NSAP 4 HDLC 5 BBN 1822 6 802 7 E.163 (POTS) 8 E.164 (SMDS, Frame relay, ATM) 9 F.69 (Telex) 10 X.121 11 IPX 12 Appletalk 13 Decnet IV 14 Banyan Vines Ethernet 37 Les extensions du protocole Radius: support des vlans Tunnel-Private-Group-Id Indique un group-id pour un tunnel spécifique. Dans le cas des VLANs il s'agit du numéro de Vlan. Autres attributs tunnel Il existe d'autres attributs de tunnel, non utilisés pour nos besoins 38
Les extensions du protocole Radius: support EAP (802.1x) Radius a été étendu pour supporter le protocole EAP et donc l'authentification 802.1x. Pour cela 2 attributs ont été ajoutés: Message-Authenticator EAP-Message Les paquets EAP sont encapsulés dans l'attribut EAP-Message Message-Authenticator est un attribut qui permet de signer les requêtes qui contiennent des attributs EAP-Message. (calcul MD5 sur le contenu d'un access-request + secret partagé) RFC: 2869 radius extension 3579 radius support for EAP 3748 EAP 2716 EAP/TLS 3580 802.1x radius usage guidelines 39 Les extensions du protocole Radius: support EAP (802.1x) Authentification avec certificat (TLS) 2 EAP over LAN EAP-request =identity 1 EAP-reply=identity=CN EAP over RADIUS 4 EAP-request =TLS start EAP-Reply=Client_hello EAP_request=Server_hello, certificat+clé publique 3 5 Calcul clé principale 6 EAP-reply=Certificat+clé publique EAP-request=TLS_finished 7 7 EAP-request=TLS_finished Calcul clé principale EAP-reply= vide 8 8 EAP-reply= success EAP-reply= success+clé de session EAP-key=Clé WEP ou WPa 9 40
Les extensions du protocole Radius: support EAP (802.1x) Authentification avec certificat (TLS) 1- Le NAS envoi au client une requète EAP lui demandant son identité 2- Le client répond avec le CN comme identité 3- Le serveur démarre la séquence TLS par l envoi du message TLS_start 4- Le client répond par un message client_hello : La version de TLS Un challenge (nombre aléatoire) Un identifiant de session La liste des algorithmes de chiffrement supportés par le client 5- Le serveur répond par un message server_hello Son certificat et sa clé publique Demande au client d envoyer son certificat Un challenge Un identifiant de session calculé à partir de celui du client. Choisit un algorithme de chiffrement en fonction de ceux connus par le client 6- Le client vérifie le certificat du serveur et envoi le sien et sa clé publique 41 Les extensions du protocole Radius: support EAP (802.1x) Authentification avec certificat (TLS) 7- Le client et le serveur calculent une clé de chiffrement pour la session principale (à partir des challenges échangés) 8- Le client renvoi une réponse EAP vide et le serveur répond par un message EAP_success avec une clé de session pour la borne wifi. 9- A partir de cette clé de session la borne calcul une clé WEP ou WPA et l envoi au client. Dans le cas d authentification EAP/TLS la clé de session principale n est pas utilisée. Seul l échange de validation mutuelle des certificats est utile 42
Les extensions du protocole Radius: support EAP (802.1x) Authentification avec login/password (PEAP) Client NAS Serveur d'authentification EAP-request/identity EAP-Response/identity (EAP-message- identity=login) Access-request (EAP-message) TLS pour création d un tunnel chiffré Tunnel TLS chiffré Authentification du client (mschapv2) authentification EAP key clé WEP/WPA Génération clé WEP/WPA Access-accept +Clé de session OK 43 Les extensions du protocole Radius: support EAP (802.1x) Authentification avec login/password (PEAP) EAP over LAN EAP-request =identity 1 EAP over RADIUS 2 4 EAP-reply=identity=login EAP-request =TLS start EAP-Reply=Client_hello 3 Calcul clé de session principale EAP_request=Server_hello, certificat+clé publique EAP-request-PEAP_finished 6 6 EAP-request=PEAP_finished Tunnel chiffré 5 Calcul clé de session principale EAP-reply= vide 7 7 EAP-reply= success EAP-reply= success+clé de session EAP-key=Clé WEP ou WPa 8 44
Les extensions du protocole Radius: support EAP (802.1x) Remarques sur l identité Dans les phases 1 et 2 l identité (réponse identity) transmise n est pas cryptée Ce n est pas directement ce champ qui permet l authentification. Mais c est lui qui est utilisé pour l autorisation. Pour TLS : C est la validation mutuelle des certificats qui constitue l authentification Pour PEAP: C est le username transmis dans le tunnel (crypté) qui sert à faire l authentification par vérification du mot de passe. Dans tous les cas il est possible de donner une identité différente du CN ou du username. Ceci afin que l identité réelle ne circule pas en clair. Dans la réalité il faut être prudent car il y a risque qu un utilisateur s authentifie avec sa propre identité mais puisse acquérir les autorisations d un autre. 45 Les extensions du protocole Radius: support EAP (802.1x) Remarques sur le cryptage sans-fil Pour EAP/PEAP les échanges nécessaires à l authentification sont cryptés dans un tunnel TLS et ce même si ensuite aucune méthode de cryptage n est configurée.(en filaire également) Même si 802.1x n impose pas le cryptage des communications il est FORTEMENT recommandé de crypter avec une méthode «sérieuse». (au moins WPA) La borne doit gérer la transmission automatique des clés de cryptage vers les postes clients et, de préférence, la rotation dynamique de ces clés. 46
Les extensions du protocole Radius: support EAP (802.1x) Remarques sur le cryptage sans-fil Méthodes de cryptage: WEP : dépassé ne pas utiliser WPA : Associé à TKIP pour la rotation Initialisation des clés par 802.1x Changement de la clé tous les 10Ko Clé 128 bits (RC4) vecteur d initialisation de 48 bits MIC: Contrôle d intégrité WPA2: = 802.11i Principe identique à WPA avec: CCMP pour la rotation des clés AES pour le cryptage 47 Les extensions du protocole Radius: support EAP (802.1x) Dans le cas du WIFI "la durée de vie d'une clé wep est une heure" Source Hervé shauer Consultants http://www.hsc.fr/ressources/presentations/ossir-wpa-wpa2/img0.html 48
Les extensions du protocole Radius: support EAP (802.1x) Imbrication des protocoles 802.11b/g 802.3 EAP TLS TLS MSCHAPv2 IP UDP Radius EAP TLS TLS MSCHAPv2 Cryptage WEP, ou WPA ou 802.11i (WPA2) IP TCP ou IPUDP 49 Processus d authentification et autorisation Check items Base Request-items Mac-address Processus d'authentification et autorisation Check-item= item=request-items? Reply-items Vlan=5 Reply items Base 50
Processus d authentification et autorisation L'équipement NAS envoi un access-request contenant une liste d'attributs appelés request_items. Par exemple, l'adresse MAC est un request-item. Le serveur Radius dispose dans sa base d'authentification/autorisation d'une liste de check-items associée à chaque utilisateur/machine connu. Radius interroge sa base pour trouver une entrée qui correspond au username envoyé et dont les check-items matches les request-item. Si aucune correspondance n'est trouvée un access-reject est envoyé. Si une correspondance est trouvée, une reply-list est formée à partir des reply-items contenu dans la base. Par exemple, le numéro de vlan est un reply-item. Le username envoyé est authentifié (mot de passe, certificats..) Si l'authentification est ok, la reply-list est envoyé à l'équipement NAS avec un access-accept. 51 Eléments constitutifs de la base de données Identifiant : Un username fournis par le client radius (switch) ou par le supplicant La méthode d authentification: Elle peut être indiquée explicitement dans la base de données ou bien être déduite implicitement en fonction du protocole utilisé par le NAS ou le supplicant. (Local, EAP, LDAP) Les check-items: Exemples: Mot de passe : Fourni par le NAS dans le cas d une authentification par adresse MAC. Dans ce cas le mot de passe est l adresse MAC. L adresse MAC Les reply-items: Exemple: le ssid ou le N de vlan. 52
Freeradius 53 Freeradius Freeradius est une implémentation open source du protocole Radius. www.freeradius.org Fonctionnalités: - Support EAP (MD5, SIM TLS TTLS, PEAP, LEAP, GTC, MSCHAPV2) - 50 dictionnaires vendor-specific - LDAP, MYSQL, PostgresSQL, Oracle, SAMBA - Module PAM-radius - Mod_auth radius pour Apache 54
Freeradius: Installation et démarrage Installation tar xvzf freeradius-1.0.1.tar.gz. cd freeradius-1.0.1 CFLAGS="-I/usr/include/et"./configure --sysconfdir=/etc make make install Démarrage /etc/init.d/radiusd start Ou bien Logs dans /var/log/radius/radius.log radiusd X (mode debug) 55 Freeradius: Fichiers de configuration Les fichiers de configurations sont dans /etc/raddb Configurations principales radiusd.conf clients.conf eap.conf users Configurations particulières dictionnary Ldap.attrmap Oraclesql.conf Postgresql.conf Sql.conf Gestion des certificats cert 56
Freeradius: Fichiers de configuration : Clients.conf Dans ce fichier doivent être référencés tous les clients Radius (NAS) autorisés à interroger le serveur. client adresse-ip { secret = mot-de-passe shortname = nom nastype = type-materiel Doit être présent aussi dans le NAS 57 Freeradius: Fichiers de configuration - users Le fichier user est la base de données locale. C est un fichier plat. Il est constitué d'une succession "d'entrée". Chacune correspondant à un utilisateur ou machine. Le fichier est parcouru séquentiellement du haut vers le bas. Chaque entrée commence par un identifiant suivi par une liste d'item à vérifier (check item). Sur une seule ligne. Les lignes suivantes commencent par une tabulation suivie d'une liste d'items de réponse (reply item). Il peut y avoir plusieurs reply item séparés par des virgules et sur plusieurs lignes. 58
Freeradius: Fichiers de configuration - users username Type d'authentification Adresse MAC Check items Dupont Auth-Type := EAP, Calling-Station Station-Id == "0012f0ae2546" Service-Type = Framed-User User, Reply items Tunnel-type = VLAN, Tunnel-Medium Medium-Type = 6, Tunnel-private private-group-id = 15 DEFAULT Auth-Type := reject, Fall-Trough = 0 Service-Type = Framed-User Entrée par défaut Rejet de la requête 59 Freeradius: Fichiers de configuration - users Auth-Type: attribut spécial permettant de spécifier le type d'authentification à appliquer à une entrée. Les types possibles peuvent être trouvés dans le dictionnaire: Local System SecurID Crypt-Local Reject ActivCard EAP ARAP Accept PAP CHAP LDAP PAM MS-CHAP Kerberos CRAM NS-MTA-MD5 SMB Reject permet de refuser inconditionnellement une connexion. Accept permet d'accepter inconditionnellement une connexion. 60
Freeradius: Fichiers de configuration - users Les opérateurs Attribute == valeur (check-item) Match si l'attribut est présent et est égale à cette valeur. Attribute!= valeur (check-item) Match si l'attribut est présent et n'est pas égale à cette valeur. Attribute > valeur, >=, <, <= (check-item) Match si l'attribut est présent et est > ou >= ou < ou <= à cette valeur. 61 Freeradius: Fichiers de configuration - users Les opérateurs Attribute =~ expression (check-item) Match si l'attribut match l'expression régulière.. Attribute!~ expression (check-item) Match si l'attribut ne match pas l'expression régulière. Attribute *= value (check-item) Match si l'attribut est présent dans la requête. La valeur n'a pas d'importance. Attribute!= value (check-item) Match si l'attribut n'est pas présent dans la requête. La valeur n'a pas d'importance. 62
Freeradius: Fichiers de configuration - users Les opérateurs Attribute = valeur (reply-item) Ajoute l'attribut à la liste des reply-items. Attribute := valeur (check-item/reply-item) Comme check-item, match toujours et remplace ou ajoute l'attribut aux configuration-items. Comme reply-item ajoute l'attribut à la liste des reply-items. Attribute += value (check-item/reply-item) Comme check-item match toujours et rajoute l'attribut au request-item. Comme repy-item rajoute l'attribut au request-item. 63 Freeradius: Fichiers de configuration radiusd.conf Format général du fichier Liste de paramètres de fonctionnement Déclaration de modules Appel des modules 64
Freeradius: Fichiers de configuration radiusd.conf prefix = /usr/local exec_prefix = ${prefix sysconfdir = /etc localstatedir = /var sbindir = ${exec_prefix/sbin logdir = ${localstatedir/log/radius raddbdir = ${sysconfdir/raddb radacctdir = ${logdir/radacct confdir = ${raddbdir run_dir = ${localstatedir/run/radiusd log_file = ${logdir/radius.log libdir = ${exec_prefix/lib pidfile = ${run_dir/radiusd.pid max_request_time = 30 delete_blocked_requests =no cleanup_delay = 5 max_requests = 1024 bind_address = * port =1812 65 Freeradius: Fichiers de configuration radiusd.conf #listen { # IP address on which to listen. # Allowed values are: # dotted quad (1.2.3.4) # hostname (radius.example.com) # wildcard (*) # ipaddr = * # Port on which to listen. # Allowed values are: # integer port number (1812) # 0 means "use /etc/services for the proper port" # port = 0 Listen : Utile uniquement lorsque le client peut être sur la machine où tourne Radius # Type of packets to listen for. # Allowed values are: # auth listen for authentication packets # acct listen for accounting packets # # type = auth # 66
Freeradius: Fichiers de configuration radiusd.conf hostname_lookups = no allow_core_dumps = no regular_expressions = yes extended_expressions = yes log_stripped_names = yes log_auth = yes log_auth_badpass = yes log_auth_goodpass = yes usercollide = no lower_user = no lower_pass = no Paramétrage des logs nospace_user = no nospace_pass = no 67 Freeradius: Fichiers de configuration radiusd.conf security { max_attributes = 200 reject_delay = 1 status_server = no Paramètres imposants des limitations pour contrarier certains types d'attaques. Limite le nombre d'attributs par requête Autorise un délai de réponse pour freiner une attaque type DoS Interdit/autorise la requête status-server Inclusion des autres fichiers de configuration proxy_requests = yes $INCLUDE ${confdir/proxy.conf $INCLUDE ${confdir/clients.conf snmp = no $INCLUDE ${confdir/snmp.conf Autorise/interdit les requêtes proxy NAS autorisés à communiquer avec le serveur Autorise/interdit le support SNMP 68
Freeradius: Fichiers de configuration radiusd.conf Déclaration des modules Modules { Nom du module: correspond à une librairie rlm_nom1 Ces librairies sont situées dans /usr/local/lib. nom1 { nom2 {... nom3 {. Paramètres du module 69 Freeradius: Fichiers de configuration radiusd.conf pap { chap { pam { encryption_scheme = crypt authtype = CHAP pam_auth = radiusd Module d'authentification PAP Module d'authentification CHAP Module d'authentification PAM unix { cache = no cache_reload = 600 passwd = /etc/passwd shadow = /etc/shadow group = /etc/group radwtmp = ${logdir/radwtmp Module d'authentification Unix à partir d'un fichier de style /etc/passwd Mise en cache éventuelle de passw, shadow et group Emplacement des fichiers 70
Freeradius: Fichiers de configuration radiusd.conf $INCLUDE ${confdir/eap.conf Inclusion du module d'authentification EAP mschap { authtype = MS-CHAP #require_encryption = yes #require_strong = yes with_ntdomain_hack = yes Module d'authentification mschap pour authentification sur un domaine Windows ntlm_auth = "/usr/bin/ntlm_auth --request-nt-key --domain=nom-domaine --username=%{stripped- User-Name:-%{User-Name:-None --challenge=%{mschap:challenge:-00 --nt-response=%{mschap:nt- Response:-00" Requête à destination du contrôleur de domaine (nécessite winbindd et nmbd) 71 Freeradius: Fichiers de configuration radiusd.conf ldap { server = "ldap.your.domain" # identity = "cn=admin,o=my Org,c=UA" # password = mypass basedn = "o=my Org,c=UA" filter = "(uid=%{stripped-user-name:-%{user-name)" # base_filter = "(objectclass=radiusprofile)" start_tls = no # tls_cacertfile = /path/to/cacert.pem # tls_cacertdir = /path/to/ca/dir/ # tls_certfile = /path/to/radius.crt # tls_keyfile = /path/to/radius.key # tls_randfile = /path/to/rnd # tls_require_cert = "demand" # default_profile = "cn=radprofile,ou=dialup,o=my Org,c=UA" # profile_attribute = "radiusprofiledn" access_attr = "dialupaccess" dictionary_mapping = ${raddbdir/ldap.attrmap ldap_connections_number = 5 # password_attribute = userpassword # groupname_attribute = cn # groupmembership_filter = "( (&(objectclass=groupofnames)(member=%{ldap- UserDn))(&(objectClass=GroupOfUniqueNames)(uniquemember=%{Ldap-UserDn)))" # groupmembership_attribute = radiusgroupname timeout = 4 timelimit = 3 net_timeout = 1 # compare_check_items = yes # do_xlat = yes # access_attr_used_for_allow = yes Module d'authentification sur serveur LDAP (voir plus loin) 72
Freeradius: Fichiers de configuration radiusd.conf #passwd etc_smbpasswd { # filename = /etc/smbpasswd # format = "*User-Name::LM-Password:NT-Password:SMB-Account-CTRL-TEXT::" # authtype = MS-CHAP # hashsize = 100 # ignorenislike = no # allowmultiplekeys = no # #passwd etc_group { # filename = /etc/group # format = "=Group-Name:::*,User-Name" # hashsize = 50 # ignorenislike = yes # allowmultiplekeys = yes # delimiter = ":" # passwd permet de spécifier le format de fichier de type /etc/passwd 73 Freeradius: Fichiers de configuration radiusd.conf # Realm module, for proxying. realm IPASS { format = prefix delimiter = "/" ignore_default = no ignore_null = no realm suffix { format = suffix delimiter = "@" ignore_default = no ignore_null = no realm realmpercent { format = suffix delimiter = "%" ignore_default = no ignore_null = no realm host { format = prefix delimiter = "/" ignore_default = no ignore_null = no 74
Freeradius: Fichiers de configuration radiusd.conf checkval { item-name = Calling-Station-Id check-name = Calling-Station-Id data-type = string #notfound-reject = no Permet de comparer la valeur d'un attribut dans une requête avec une liste de check-item (utilisé avec LDAP) 75 Freeradius: Fichiers de configuration radiusd.conf preprocess { huntgroups = ${confdir/huntgroups hints = ${confdir/hints with_ascend_hack = no ascend_channels_per_line = 23 with_ntdomain_hack = no with_specialix_jetstream_hack = no with_cisco_vsa_hack = yes files { usersfile = ${confdir/users acctusersfile = ${confdir/acct_users compat = no Permet de définir où se trouve le fichier users 76
Freeradius: Fichiers de configuration radiusd.conf detail { detailperm = 0600 #detail auth_log { # detailfile = ${radacctdir/%{client-ip-address/auth-detail- %Y%m%d # detailperm = 0600 # # detail reply_log { # detailfile = ${radacctdir/%{client-ip-address/reply-detail- %Y%m%d # detailperm = 0600 # # detail pre_proxy_log { # detailfile = ${radacctdir/%{client-ip-address/pre-proxy-detail- %Y%m%d # detailperm = 0600 # # detail post_proxy_log { # detailfile = ${radacctdir/%{client-ip-address/post-proxy-detail- %Y%m%d # detailperm = 0600 # Module pour la création de logs détaillés 77 Freeradius: Fichiers de configuration radiusd.conf authorize { preprocess # auth_log # attr_filter chap mschap # digest # IPASS suffix host eap files # sql # etc_smbpasswd ldap # daily checkval Fichier docs/aaa.txt Authorization is a process of obtaining information about the user from external source (file, database or LDAP), and checking that the information in request is enough to authenticate user. Authorization modules deal with data sources, so ldap, sql, files, passwd are authorization modules. Voir discussion sur authorize/authenticate http://lists.cistron.nl/pipermail/freeradius-users/2002-december/014730.html 78
Freeradius: Fichiers de configuration radiusd.conf authenticate { Auth-Type PAP { pap Auth-Type CHAP { chap Auth-Type MS-CHAP { mschap # digest # pam unix # Auth-Type LDAP { # ldap # eap Fichier docs/aaa.txt Authentication is simply a process of comparing user's credentials in request with credentials stored in database. Authentication usually deals with password encryption. PAP, CHAP, MS-CHAP are authentication modules. Few modules act as both authorization and authentication. For example, the MS- CHAP module is normally authentication one, but it may be used during authorization to verify that request contains MS-CHAP related attribute and only in this case perform MS-CHAP based authentication. LDAP is normally an authorization module, but it may be used for authentication (In this case FreeRADIUS will authenticate user in case he can connect to LDAP server with his account). SQL is only an authorization module, as dial-in users are not normally given passwords to access an SQL server. 79 Freeradius: Fichiers de configuration radiusd.conf eap { default_eap_type = peap timer_expire = 60 ignore_unknown_eap_types = no cisco_accounting_username_bug = no md5 { leap { gtc { #challenge = "Password: " auth_type = PAP... 80
Freeradius: Fichiers de configuration eap.conf tls { private_key_password = clé-privée private_key_file = ${raddbdir/certs/serveur-radius.key certificate_file = ${raddbdir/certs/serveur-radius.crt CA_file = ${raddbdir/certs/ca.pem dh_file = ${raddbdir/certs/dh random_file = ${raddbdir/certs/random fragment_size = 1024 include_length = yes # check_crl = yes check_cert_cn = %{User-Name Les certificats du serveur et de l'autorité sont stockés dans /etc/raddb/certs Impose que le username envoyé soit égal au CN TLS doit toujours être configuré pour TLS ou PEAP 81 Freeradius: Fichiers de configuration eap.conf peap { default_eap_type = mschapv2 copy_request_to_tunnel = yes use_tunneled_reply = yes mschapv2 { (fin module eap) Permet de copier les items dans le tunnel TLS Important si on veut écrire: Dupont Auth-Type := EAP, Calling-Station-ID=«1234567890» 82
Mise en oeuvre Cisco HP Configurer les équipements réseau Configurer les vlans dans ces équipements Configurer les serveurs Radius à utiliser dans ces équipements Configurer les cryptages (WIFI) Configurer les fichier USERS de radius Radius-mac 802.1X 83 Authentification par adresse MAC (radius-mac) Sur réseau WIFI Remarque importante Dans le cas du WIFI ne pas se contenter d une authentification par adresse MAC. L adresse MAC n est pas cryptée 84
Authentification par adresse MAC (radius-mac) Configuration des équipements réseau Bornes et switch HP et Cisco 85 Authentification par adresse MAC (radius-mac) Inter-connexion des équipements WIFI Connexion d une borne sur un switch Cisco 2950 interface FastEthernet0/24 switchport trunk native vlan 12 switchport mode trunk Vlan sur lequel la borne possède une adresse IP Connexion d une borne sur un switch HP 2626 vlan 12 untagged 24 vlan x tagged 24.. Le port 24 doit être tagged sur tous les autres vlans 86
Authentification par adresse MAC (radius-mac) HP 420 Configuration des vlans Sur la borne il faut créer un SSID générique sur lequel tous les postes se connectent. Le serveur radius décide sur quel vlan chaque poste sera affecté. WIFI Vlan par défaut si le serveur radius ne renvoi rien ou ne fonctionne pas (mettre un vlan poubelle) 87 Authentification par adresse MAC (radius-mac) HP 420 Configuration des vlans WIFI 88
Authentification par adresse MAC (radius-mac) HP 420 Configuration des serveurs radius WIFI Les serveurs radius sont définis par SSID 10.4.0.3 Le format des adresses MAC est défini par serveur 89 Authentification par adresse MAC (radius-mac) HP 420 Configuration des serveurs radius WIFI 90
Authentification par adresse MAC (radius-mac) - HP 420 Configuration du cryptage WIFI Tous les postes utilisant le même ssid utilisent la même suite de sécurité Méthode possible en Radius-mac 91 Authentification par adresse MAC (radius-mac) WIFI CISCO AIRONET 1200 Chez Cisco la posibilité de créer plusieurs couple SSID/vlan existe depuis longtemps mais l utilisation d un vlan générique fonctionne depuis récemment (testé avec la version k9w7-tar.123-7.ja2) Le principe est le même qu avec les bornes HP 92
Authentification par adresse MAC (radius-mac) Configuration des vlans WIFI 15 demo 15 93 Authentification par adresse MAC (radius-mac) CISCO AIRONET 1200 Configuration des serveurs radius WIFI 10.4.0.3 10.4.0.3 10.4.0.3 10.4.0.3 94
Authentification par adresse MAC (radius-mac) CISCO AIRONET 1200 Configuration des serveurs radius WIFI Uniquement les attributs Calling/called Sation Id Le format des adresses mac est le même pour tous les serveurs et les ssid 95 Authentification par adresse MAC (radius-mac) CISCO AIRONET 1200 Configuration du cryptage WIFI 96
Authentification par adresse MAC (radius-mac) Filaire Avec Cisco 2950 IOS version 12.1(22)EA4 pas possible: La fonctionnalité n'est pas présente Pour faire de l'authentification MAC il faut utiliser VMPS Possible sur matériel HP procurve 97 Authentification par adresse MAC (radius-mac) Inter-connexion des équipements et configuration du serveur Radius Switch HP Procurve 2626 radius-server host 10.4.0.3 shared-secret aaa port-access mac-based addr-format multi-dash aaa port-acces mac-based port-list Filaire Lien tagged Port 24 tagged sur tous les vlans Port 24 tagged sur tous les vlans 98
Authentification par adresse MAC (radius-mac) Configuration du serveur Radius avec utilisation de la base local USERS pour la méthode RADIUS-MAC 99 Authentification par adresse MAC (radius-mac) Configuration du fichier USERS de radius Exemple1: Autoriser la machine 00c049e901ab à se connecter sur le vlan 15 WIFI+Filaire Sur le serveur Radius il faut écrire une entrée par adresse MAC autorisée du type suivant: Fichier users sur le serveur Radius Mot de passe=adresse mac 00c049e901ab Auth-Type := local, User-Password =="00c049e901ab" Service-Type = Framed-User, Adresse mac Tunnel-type = VLAN, Tunnel-Medium-Type = 6, Tunnel-private-Group-ID = 15 100
Authentification par adresse MAC (radius-mac) Configuration sur le client Aucune configuration particulière sur le client que ce soit en wifi ou en filaire 101 Authentification 802.1x 102
Authentification 802.1x WIFI et filaire Certificat personnel Client NAS Serveur radius Request Identity Certificat serveur Identity=CN="Jean Dupont" vérification EAP-type=EAP-TLS certificat autorité vérification certificat autorité CN accept users Machine1.demo.fr Auth-Type=EAP 103 Authentification 802.1x Configuration des équipements réseau pour les méthodes EAP Bornes et switches 104
Authentification 802.1x Inter-connexion des équipements réseau Idem que pour Radius MAC WIFI => Si la borne est capable de gérer simultanément desssid avec authentification MAC et des SSID avec authentification 802.1x, il n y a rien de plus à faire sur le switch sur lequel est connecté cette borne. Connexion d une borne sur un switch Cisco 2950 Lien trunk interface FastEthernet0/24 switchport trunk native vlan 12 switchport mode trunk Connexion d une borne sur un switch HP Lien tagged vlan 12 untagged 24 vlan x tagged 24.. 105 Authentification 802.1x Configuration des vlans et des serveurs Radius WIFI HP 420 La configuration dans la borne est identique au cas Radius-MAC sauf qu il ne faut pas activer l authentification MAC. 106
Authentification 802.1x Configuration du cryptage HP 420 WIFI Tous les postes utilisant le même ssid utilisent la même suite de sécurité 107 Authentification 802.1x Configuration des vlans et des serveurs Radius WIFI CISCO AIRONET 1200 La configuration des vlans est identique au cas radius-mac 108
Authentification 802.1x Configuration du cryptage WIFI CISCO AIRONET 1200 109 Authentification 802.1x Inter-connexion des équipements et configuration du serveur Radius Filaire aaa new-model aaa group server radius demo_radius aaa server 10.4.0.3 auth-port 1812 acct-port 1813 aaa authentication login default enable aaa authentication dot1x default group demo_radius aaa authorization network default group demo_radius dot1x system-auth-control interface FastEthernet0/15 switchport mode access dot1x port-control auto Switch Cisco 2950 radius-server host 10.4.0.3 shared-secret aaa port-access authenticator 15 Switch HP 2626 interface FastEthernet0/24 switchport mode trunk interface FastEthernet0/1 switchport mode trunk Switch Cisco 2950 Port 24 tagged sur tous les vlan Port 24 tagged sur tous les vlan Switch HP 2626 110
Authentification 802.1x Configuration du serveur Radius avec utilisation de la base local USERS pour les méthodes EAP 111 Authentification 802.1x WIFI et filaire tls { private_key_password = clé-privée private_key_file = ${raddbdir/certs/serveur-radius.key certificate_file = ${raddbdir/certs/serveur-radius.crt CA_file = ${raddbdir/certs/cacnrs.pem dh_file = ${raddbdir/certs/dh random_file = ${raddbdir/certs/random fragment_size = 1024 include_length = yes # check_crl = yes check_cert_cn = %{User-Name TLS peap { default_eap_type = mschapv2 copy_request_to_tunnel = yes use_tunneled_reply = yes mschapv2 { (fin module eap) Fichier eap.conf PEAP 112
Authentification 802.1x Data: Version: 3 (0x2) Serial Number: 12331 (0x302b) Signature Algorithm: sha1withrsaencryption Issuer: C=FR, O=CNRS, CN=CNRS-Standard Validity Not Before: Feb 14 15:22:23 2006 GMT Not After : Feb 14 15:22:23 2008 GMT Subject: C=FR, O=CNRS, OU=UMR5797, CN=radius.demo.fr /emailaddress=system@demo.fr Subject Public Key Info: Public Key Algorithm: rsaencryption RSA Public Key: (1024 bit) Modulus (1024 bit): 00:c1:e4:f9:b8:da:27:5a:11:21:26:ce:51:b3:90:. db:04:61:2c:77:24:91:e5:fb Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Basic Constraints: critical CA:FALSE Netscape Cert Type: SSL Client, SSL Server X509v3 Key Usage: critical Digital Signature, Non Repudiation, Key Encipherment X509v3 Extended Key Usage: TLS Web Server Authentication, TLS Web Client Authentication Netscape Comment: Certificat serveur CNRS-Standard X509v3 Subject Key Identifier: FD:59:C5:56:87:5F:2D:DD:29:92:AE:44:5B:86:21:61:D2:53:1F:2B X509v3 Authority Key Identifier: keyid:67:59:a5:e5:07:74:49:03:ef:05:cf:cc:2e:a4:18:d5:10:c8:9e:3c DirName:/C=FR/O=CNRS/CN=CNRS serial:02 Caractéristique du certificat du serveur radius WIFI et filaire X509v3 Subject Alternative Name: DNS:radius.demo.fr X509v3 CRL Distribution Points: Protocoles URI:http://crls.services.cnrs.fr/CNRS-Standard/getder.crl d'authentification réseau 113 Authentification 802.1x WIFI et filaire Fichier users sur serveur Radius CN d un certificat personnel ou d un certificat machine (EAP/TLS => certificats) Ou bien Username d une base de login (windows,ldap..) EAP/PEAP "Jean Dupont" Auth-Type := EAP Service-Type = Framed-User, Tunnel-type = VLAN, Tunnel-Medium-Type = 6, Tunnel-private-Group-ID = 15 Avec TLS, ne pas oublier check_cert_cn = %{User-Name pour obliger le client à envoyer une identity égale au CN. L authentification n a pas besoin d une base extérieure. Le certificat est validé dans la section Authentication par l appel au module EAP dans le fichier raddb.conf Dans cette exemple, quelque soit la machine depuis laquelle se connecte Jean Dupont il pourra se connecter sur le vlan 15. 114
Authentification 802.1x WIFI et filaire Authentification avec vérification de l adresse MAC Machine.demo.fr Auth-Type := EAP, Calling-Station-Id == 0050.124e.4500 Service-Type = Framed-User, Tunnel-type = VLAN, Tunnel-Medium-Type = 6, Attention au format Tunnel-private-Group-ID = 15 Autre exemple en fixant une plage horaire de connexion: Dupont Auth-Type := EAP, Login-Time := «any0700-2000», Calling-Station-Id == 0050.124e.4500 Service-Type = Framed-User Tunnel-type = VLAN, Tunnel-Medium-Type = 6, Tunnel-private-Group-ID = 15 115 Authentification 802.1x Configuration des postes utilisateurs 116
Authentification 802.1x - configuration client Configuration avec le supplicant intégré (Windows) Configuration avec l utilitaire de la carte sans-fil (Windows) Configuration avec Xsupplicant ou wpa_supplicant (Linux) Authentification au logon TLS (certificat machine ou utilisateur) PEAP Authentification au démarrage TLS PEAP 117 Authentification 802.1x -certificat (TLS)- configuration client Windows Gestion des certificats Un certificat utilisateur doit être dans le magasin «certificat utilisateur actuel» le répertoire personnel/certificat La protection renforcée ne doit pas être activée Un certificat machine doit être dans: le magasin «certificat ordinateur local» le répertoire personnel/certificat Un certificat machine peut aussi être mis dans le magasin «certificat utilisateur actuel» 118
Authentification 802.1x -certificat (TLS)- configuration client -WIFI Windows Authentification au logon d un utilisateur demo 119 Authentification 802.1x -certificat (TLS)- configuration client -WIFI Windows Authentification au démarrage de la machine Pendant la phase de démarrage le PC envoi comme identifiant: host/cn-certificat Il s agit d un certificat machine présent dans le magasin de certificat machine. Le serveur radius demande au client de lui envoyer son certificat. x 120
Authentification 802.1x -certificat (TLS)- configuration client -Filaire Windows Le service configuration automatique sans-fil (oui, oui!) doit être démarré 121 Authentification 802.1x - configuration client Linux Il faut disposer du driver de la carte sans-fil: Il existe éventuellement sous Linux ndiswrapper pour utiliser les drivers Windows MadWifi Autres Il faut installer un supplicant Xsupplicant - Utilisable en wifi et filaire. Pour le wifi supporte WPA depuis la version 1.2.3 (Janvier 2006) http://open1x.sourceforge.net/ WPA-supplicant Utilisable uniquement en wifi. http://hostap.epitest.fi/wpa_supplicant/ 122
Authentification 802.1x -certificat (TLS)- configuration client -WIFI Linux WPA_SUPPLICANT Fichier /etc/wpa_supplicant.conf ctrl_interface_group=0 ctrl_interface="/var/run/wpa_supplicant" eapol_version=1 ap_scan=2 network={ ssid=demo scan_ssid=0 proto=wpa key_mgmt=wpa-eap eap=tls pairwise=tkip group=tkip cnexact=no cncheck=demo.fr identity="machine.demo.fr«ca_cert="/root/cert/ca/cademo.pem«client_cert="/root/cert/machine.demo.fr.pem«private_key="/root/cert/machine.demo.fr.key«private_key_passwd="test«eapol_flags=3 wpa_supplicant Dndiswrapper i wlan0 c /etc/wpa_supplicant.conf 123 Authentification 802.1x -certificat (TLS)- configuration client -Filaire Linux XSUPPPLICANT Fichier /etc/xsupplicant.conf network_list = all default_netname=default default { type = wired allow_types = all identity =machine1.demo.fr eap_tls { user_cert = /root/cert/machine1.demo.fr.pem user_key = /root/cert/machine1.demo.fr.key user_key_pass = passphrase root_cert = /root/cert/ca-demo-cert.pem chunk_size = 1398 random_file = /dev/urandom xsupplicant i eth0 f 124
Authentification 802.1x certificat (TLS) Log de Radius (succès).. Info: rlm_eap_tls: Received EAP-TLS ACK message Info: rlm_eap_tls: Received EAP-TLS First Fragment of the message Nom du point d accès Info: rlm_eap_tls: More fragments to follow Info: (other): SSL negotiation finished successfully Info: rlm_eap_tls: Received EAP-TLS ACK message Auth: Login OK: [machine1.demo.fr/<no User-Password attribute>] (from client ap1 port 165688 cli 00c0.49e9.01ab) CN du certificat Plus de détails en mode DEBUG radiusd -X 125 Authentification 802.1x certificat (TLS) Log de Radius (échec) Info: rlm_eap_tls: Received EAP-TLS ACK message Info: rlm_eap_tls: Received EAP-TLS First Fragment of the message Info: rlm_eap_tls: More fragments to follow Error: --> verify error:num=10:certificate has expired Error: notafter= Error: TLS Alert write:fatal:certificate expired Error: TLS_accept:error in SSLv3 read client certificate B Error: rlm_eap_tls: SSL_read failed in a system call (-1), TLS session fails. Info: rlm_eap_tls: Received EAP-TLS ACK message Auth: Login incorrect: [machine1.demo.fr/<no User-Password attribute>] (from client ap1 port 165689 cli 00c0.49e9.01ab) 126
Authentification 802.1x -login/password (PEAP) 127 Authentification 802.1x -login/password (PEAP) Dans ce cas au lieu de fournir un certificat l'utilisateur fourni un login et un mot de passe. Le serveur Radius authentifie l'utilisateur sur une base qui contient le mot de passe des utilisateurs au lieu d'authentifier sur le certificat. Le client donne son login/password dans la configuration du supplicant. Tout le reste fonctionne exactement de la même manière que les méthodes évoquées précédemment. Divers type de base peuvent être utilisées, par exemple un domaine Windows ou bien une base LDAP. Un domaine Windows peut authentifier un login et un mot de passe mais pas donner des autorisations (Vlans). Une base Ldap peut faire les deux. => Voir la méthode pour définir ces bases au chapitre «Définir une base d authentification» 128
Authentification 802.1x -login/password (PEAP) WIFI Windows Authentification au logon d un utilisateur demo 129 Authentification 802.1x -login/password (PEAP) WIFI Windows Authentification au démarrage de la machine Au démarrage le PC envoi comme identity : host/nom-machine Avec utilitaire DELL 1450 il est possible de configurer un login/mot de passe qui sera utilisé au démarrage de la machine x 130
Authentification 802.1x -login/password (PEAP) Filaire Windows La configuration de l authentification en filaire est identique au cas WIFI 131 Authentification 802.1x -login/password (PEAP) WIFI Linux WPA_SUPPLICANT Fichier /etc/wpa_supplicant.conf ctrl_interface_group=0 ctrl_interface="/var/run/wpa_supplicant" eapol_version=1 ap_scan=2 network={ ssid="demo" scan_ssid=0 proto=wpa key_mgmt=wpa-eap eap=peap pairwise=tkip group=tkip cnexact=no cncheck=demo.fr identity=dupont password=demo ca_cert="/root/cert/cademo.pem" phase1="peaplabel=0" phase2="auth=mschapv2«wpa_supplicant Dndiswrapper i wlan0 c /etc/wpa_supplicant.conf 132
Authentification 802.1x -login/password (PEAP) Filaire Linux XSUPPPLICANT Fichier /etc/xsupplicant.conf xsupplicant i eth0 f network_list = all default_netname=default default { type = wired allow_types = all identity = dupont eap-peap { random_file = /dev/urandom root_cert = /root/cert/cademo.pem allow_types = eap_mschapv2 eap-mschapv2 { username = dupont password = mot-de-passe 133 Authentification 802.1x PEAP vs TLS PEAP Pas besoin d IGC Nécessité d avoir une base d utilisateurs (windows, ldap ) Authentifie l utilisateur plus que la machine Problème de sécurité avec identity Pour configurer une machine on a besoin du mot de passe de l utilisateur. Si l utilisateur change son mot de passe, il devra penser à changer aussi dans sa configuration wifi. Si plusieurs utilisateurs sur même poste ils utilisent tous le même login/mot de passe 134
Authentification 802.1x PEAP vs TLS TLS Disposer d une IGC Pas besoin de base Windows, pas forcément besoin d une base LDAP. Certificat utilisateur (CNRS) : Délai d expiration trop court (1 an) Impose la présence utilisateur pour configurer Renouvellement par l utilisateur (compliqué) Authentifie l utilisateur et pas la machine Pas de protection par passphrase sous windows et passphrase en clair sous Linux => risque de vol du certificat. Certificat machine (CNRS): Délai plus long mais toujours trop court (2 ans) Gestion plus facile, ne nécessite pas la présence de l utilisateur pour configurer Ce n est pas l utilisateur qui gère le renouvellement Authentifie bien la machine (si croisé avec adresse MAC) Le vol a moins de conséquences. 135 Configuration Proxy La configuration proxy est utilisée pour ré-orienter une requête vers un autre serveur radius ou bien pour tenir compte d un domaine (realm) passé dans l identity. Exemple:Lorsqu une requête de type host/cn-certificat (authentification au démarrage) arrive on peut mettre dans le fichier users une entrée host/cn-certificat. Mais si un requête arrive avec juste cn-certificat (authentification au logon) l entrée précédente dans users ne va pas matcher. Il vaut donc mieux mettre une entrée «cn-certificat» et configurer le proxy comme suit: raddb.conf Realm host { format = prefix delimiter = «/» ignore_default = no ignore_null = no Proxy.conf Realm host { type =radius authhost = LOCAL accthost = LOCAL Dans ce cas les requêtes préfixées par host sont redirigées vers le serveur radius local avec le mot host en moins. 136
Définition d une base d authentification Utilisation d un base Windows Utilisation d une base LDAP 137 Utilisation d une base Windows Utilisation d une base Windows 138
Utilisation d une base Windows Sur le serveur Radius il faut mettre en oeuvre samba et plus particulièrement winbind (rpm samba, samb-common, samba-client) Fichier radiusd.conf mschap { authtype = MS-CHAP #require_encryption = yes #require_strong = yes with_ntdomain_hack = yes ntlm_auth = "/usr/bin/ntlm_auth --request-nt-key --domain=nom-domaine --username=%{stripped-user-name:-%{user-name:-none --challenge=%{mschap:challenge:-00 --nt-response=%{mschap:nt-response:-00«fichier smb.conf Pour rejoindre le domaine: net rpc join w nom-domaine -U administrateur 139 Utilisation d une base LDAP Utilisation d une base LDAP 140
Utilisation d une base LDAP Pourquoi utiliser LDAP? Permet de centraliser toutes les demandes d authentification d un site réseau, système et applicatifs. Permet de décrire un grand nombre d attributs pour chaque utilisateur ou machine dans un schéma (arbre) C est un standard Dans le cas de Radius, on peut stocker dans une base LDAP des check-items et des reply-item. Donc une base LDAP peut servir pour authentifier et/ou autoriser 141 Utilisation d une base LDAP Contenu de la base Pour un utilisateur: Son userid ou CN de certificat = uid LDAP Son mot de passe La (ou les) adresse(s) MAC des postes sur lesquels il est autorisé Le vlan (ou ssid) autorisé Pour une machine: Son userid est l adresse MAC son mot de passe est son adresse MAC Le vlan (ou ssid) autorisé. Dans le cas PEAP la base LDAP est utilisée pour authentifier et autoriser Dans le cas TLS la base LDAP est utilisée uniquement pour autoriser, la validation du certificat étant faite par le serveur radius. 142
Principes d utilisation de LDAP NAS Serveur Radius Serveur LDAP Identity=user1 Identity=user1 Query: user1 Authentification Access-chalenge checkval Check-item Reply-item uid=user1 Check-item Reply-item accept Autorisation Reply-item 143 Principes d utilisation de LDAP Toutes les communications radius-nas-client sont identiques aux cas précédents quelque soit la méthode d'authentification (Radius-mac ou EAP). Seule change la façon dont les autorisations et l'authentification sont faits. La base LDAP doit contenir une entrée pour chaque client. Cette entrée contient les valeurs de check-items et de reply-items Le serveur Radius demande au serveur LDAP de lui envoyer les check-items puis les reply-items. Le module checkval permet de vérifier si des check-items correspondent à des request-items. Par exemple, l'adresse MAC. 144
Mise en œuvre de OPENLDAP Pour mettre en œuvre openldap il faut: - l'installer - Configurer le daemon - Créer un base 145 Mise en œuvre de OPENLDAP configuration du daemon Fourni par FreeRadius /etc/openldap/slapd.conf include /etc/openldap/schema/radius-ldapv3.schema database bdb suffix "dc=demo,dc=fr" rootdn "cn=manager,dc=demo,dc=fr" rootpw testldap Qualification de la base 146
Mise en œuvre de OPENLDAP schéma Radius include /etc/openldap/schema/radius-ldapv3.schema Il faut inclure dans la base Ldap le schéma des attributs radius. Ce schéma est fourni par freeradius dans: freeradius-x.xx/doc/radius-ldapv3.schema Exemple: attributetype ( 1.3.6.1.4.1.3317.4.3.1.7 NAME 'radiuscallingstationid' DESC '' EQUALITY caseignoreia5match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) 147 Mise en œuvre de OPENLDAP schéma Radius Dand le fichier /etc/raddb/radiusd.conf, dans le module LDAP la ligne dictionary_mapping = ${raddbdir/ldap.attrmap permet de mettre en rapport les noms d'attributs tels que définie dans freeradius et les noms d'attributs définis dans le schéma LDAP. Attributs radius Attributs ldap checkitem Called-Station-Id radiuscalledstationid checkitem Calling-Station-Id radiuscallingstationid checkitem LM-Password lmpassword checkitem NT-Password userpassword replyitem Tunnel-Type radiustunneltype replyitem Tunnel-Medium-Type radiustunnelmediumtype replyitem Tunnel-private-group-id radiustunnelprivategroupid 148
Mise en œuvre de OPENLDAP création d une base Exemple d'entrée dans la base LDAP dn: uid=user1,ou=users,dc=demo,dc=fr objectclass: Inetorgperson objectclass: radiusprofile uid: user1 userpassword: 0xBFAD8787F5DC64B730028C20A64EBA94 cn: user1 sn: user1 radiuscallingstationid: 00-0F-1F-16-C9-CC radiustunneltype: VLAN radiustunnelmediumtype: 6 radiustunnelprivategroupid: 12 Mot de passe SMB Utile uniquement en EAP/PEAP 149 Configuration Radius pour LDAP (radiusd.conf) ldap { server = "ldap.demo.fr" ou bien server="127.0.01" identity = "cn=manager,dc=demi,dc=fr" password = testldap basedn = "dc=demo,dc=fr" filter = "(uid=%{stripped-user-name:-%{user-name)" base_filter = "(objectclass=radiusprofile)" start_tls = no # tls_cacertfile = /path/to/cacert.pem # tls_cacertdir = /path/to/ca/dir/ # tls_certfile = /path/to/radius.crt # tls_keyfile = /path/to/radius.key # tls_randfile = /path/to/rnd # tls_require_cert = "demand" # default_profile = "cn=radprofile,ou=dialup,o=my Org,c=UA" # profile_attribute = "radiusprofiledn" access_attr = "dialupaccess" dictionary_mapping = ${raddbdir/ldap.attrmap ldap_connections_number = 5 password_attribute = userpassword # groupname_attribute = cn # groupmembership_filter = "( (&(objectclass=groupofnames)(member=%{ldap- UserDn))(&(objectClass=GroupOfUniqueNames)(uniquemember=%{Ldap-UserDn)))" # groupmembership_attribute = radiusgroupname timeout = 4 timelimit = 3 net_timeout = 1 # compare_check_items = yes # do_xlat = yes access_attr_used_for_allow = yes 150
Configuration Radius pour LDAP (radiusd.conf) authorize { preprocess auth_log eap files ldap checkval authenticate { Auth-Type MS-CHAP { mschap eap 151 Authentification Radius-Mac avec LDAP username envoyé dans access-request uid=00904c871213,ou=machines,dc=demo,dc=fr objectclass: Inetorgperson objectclass: radiusprofile uid: 00904c871213 userpassword: 00904c871213 cn: 00904c871213 sn: 00904c871213 radiuscallingstationid: 00-90-4c-87-12-13 radiustunneltype: VLAN radiustunnelmediumtype: 6 radiustunnelprivategroupid: 12 Mot de passe envoyé dans access-request 152
Authentification 802.1x PEAP avec LDAP dn: uid=user1,ou=users,dc=demo,dc=fr objectclass: Inetorgperson objectclass: radiusprofile uid: user1 userpassword: 0xBFAD8787F5DC64B730028C20A64EBA94 cn: user1 sn: user1 radiuscallingstationid :00-90-4c-87-12-13 radiustunneltype: VLAN radiustunnelmediumtype: 6 radiustunnelprivategroupid: 12 153 Authentification 802.1x TLS avec LDAP CN du certificat transmis par Radius au serveur LDAP dn: uid=machine.demo.fr,ou=machines,dc=demo,dc=fr objectclass: Inetorgperson objectclass: radiusprofile uid: machine.demo.fr cn: machine.demo.fr sn: machine;demo.fr radiuscallingstationid :00-90-4c-87-12-13 radiustunneltype: VLAN radiustunnelmediumtype: 6 radiustunnelprivategroupid: 12 154
Authentification 802.1x avec LDAP Comment autoriser un utilisateur à se connecter depuis plusieurs postes de travail? dn: uid=user1,ou=users,dc=demo,dc=fr objectclass: Inetorgperson objectclass: radiusprofile uid: user1 userpassword: 0xBFAD8787F5DC64B730028C20A64EBA94 cn: user1 sn: user1 radiuscallingstationid :00904c871213 radiuscallingstationid: 00-0F-1F-16-C9-CE radiustunneltype: VLAN radiustunnelmediumtype: 6 radiustunnelprivategroupid: 15 155 Documentation Livre: Radius par Jonathan Hassel (0'Reilly) An analysis of Radius Authentication protocol http://www.untruth.org/~josh/security/radius/radius-auth.html Installing and operating a Radius server http://www.keller.com/wifi/cnit107hw7.html 802.1X : Solution d'authentification sécurisée pour le futur réseau sans fil de l'université Louis Pasteur RFC2865: RADIUS : RFC2868:Radius attribute for tunnel protocol support : http://2003.jres.org/actes/paper.143.pdf http://www.ietf.org/rfc/rfc2868.txt http://www.ietf.org/rfc/rfc2865.txt RFC2869:Radius extensions : RFC3579:Radius support for EAP : http://www.ietf.org/rfc/rfc2869.txt http://www.ietf.org/rfc/rfc3579.txt WPA/WPA2 Freeradius http://www.ossir.org/sur/supports/2005/ossir_wpa_wpa2.pdf http://www.freeradius.org 156