Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
Rapport: simulation d'une infrastructure
d'authenti�cation 802.1x pour le test du
protocole EAP-SIM
Sami TABIBEL
28 mars 2013
1
Introduction
Ce document à pour objectif de détailler les étapes nécessaires pour lamise en place d'un réseau virtuel d'authenti�cation 802.1x ; Ce réseau nousservira d'infrastructure pour l'expérimentation et le test des protocoles d'au-thenti�cation 802.1x tel que EAP-PEAP, EAP-MD5, EAP-SIM. Nous nousintéresserons particulièrement à ce dernier, cependant pour un premier tempsnous allons illustré le fonctionnement de cette infrastructure par une authen-ti�cation EAP-PEAP.
1 La structure visée
Comme nous l'avons vu dans les chapitres précédents l'authenti�cation802.1x a un fonctionnement tripartite, dont les acteurs sont le supplicant,l'authenticator (Point d'accès) et le serveur d'authenti�cation (Radius).
La �gure suivante illustre la structure que nous avons réalisé.
Fig. 1 � Infrastructure pour l'authenti�cation 802.1x.
2 Pré-requis
La structure sus-décrite a été réalisée sous un système GNU/Linux, dis-tribution Fedora 16 ; Nous fournirons également les instructions pour l'instal-lation des pré-requis sous Ubuntu. Pour les di�érents �chiers de con�gurationdes di�érents logiciels que nous allons utiliser dans ce travail, nous noteronsseulement les lignes à modi�er par rapport aux �chiers originaux et nousdonnerons des liens vers les �chiers complets.
2
LXC Container
Les sources sont téléchargeables ici.� Sous Fedora :
$ sudo yum i n s t a l l l x c . i 686
� Sous Ubuntu :
$ sudo apt−get i n s t a l l l x c
gcc
Les sources sont disponibles en ftp à ftp ://gd.tuwien.ac.at/gnu/gcc/� Sous Fedora :
$ sudo yum i n s t a l l gcc . i 686
� Sous Ubuntu :
$ sudo apt−get i n s t a l l bui ld−e s s e n t i a l
GNU Make
Les sources sont disponibles ici.� Sous Fedora :
$ sudo yum i n s t a l l make . i686
� Sous Ubuntu : il est installé avec le paquet build-essential vue précé-demment.
SSH Server
Ne requière pas de pré-con�guration, nous allons donc installer les pa-quets pré-compilés.
� Sous Fedora
3
$ sudo yum i n s t a l l openssh−s e r v e r . i 686
� Sous Ubuntu
$ sudo apt−get i n s t a l l openssh−s e r v e r
Les �chiers de con�guration ainsi que les clés RSA pour la connexionclient/serveur ssh sont disponible sur le wiki : ssh.tar.
Con�guration du client et du serveur SSH
� Extrayez l'archive et placez vous dans le dossier ssh
$ ta r xvf ssh . ta r$ cd ssh
� Éditez le �chier con�g et remplacez 'user_name' par votre nom d'uti-lisateur à la ligne :
User user_name
� Placez les �chiers de con�gurations dans les répertoires appropriés
$ cp authorized_keys c on f i g id_eapsim id_eapsim . pub ~/. ssh
� Éditez le �chier /etc/ssh/sshd_con�g et veillez à ce que les lignesci-dessous soient présentes et que 'user_name soit remplacé par votrenom d'utilisateur
HostKey /home/user_name / . ssh / id_eapsimHostKey /home/user_name / . ssh / id_eapsimAuthor izedKeysFi le /home/user_name / . ssh / authorized_keys
4
3 Installation
Cette section à pour objectif de con�gurer chacun des trois acteurs denotre structure à rappeler : le supplicant, l'authenticator et le serveur d'au-thenti�cation.
3.1 Le supplicant
Il s'agit de la machine réelle aussi appelée hôte. C'est sur cette partiede l'infrastructure que va s'exécuter le logiciel à réaliser (EAP-SIM suppli-cant) ; Pour des besoins d'expérimentation nous allons installer et con�gurerle supplicant wpa_supplicant.
Téléchargement
Les sources sont disponibles ici.
Con�guration
Extrayez l'archive contenant les sources et créez le �chier de con�gurationde l'installation
$ sudo ta r xvfz wpa\_supplicant−x . y . ta r . gz$ cd wpa\_supplicant−x . y$ cp d e f c on f i g . c on f i g
Maintenant éditez le �chier .con�g avec votre éditeur de texte préféré etveillez à ce que les lignes suivantes soient présentes et actives 1
CONFIG_DRIVER_WIRED=yCONFIG_IEEE8021X_EAPOL=yCONFIG_EAP_MD5=yCONFIG_EAP_MSCHAPV2=yCONFIG_EAP_PEAP=yCONFIG_EAP_SIM=yCONFIG_USIM_SIMULATOR=yCONFIG_SIM_SIMULATOR=y
Un �chier complet est disponible sur le wiki du projet à cette adresse.
1 : Pour activer une ligne, supprimez le '#' au début de cette dernière, s'il est présent.
5
Installation
$ make$ sudo cp wpa_cli wpa_supplicant / usr / local /bin
eapol_test
C'est un outil en ligne de commande que nous avons découvert en posantune question dans le mailing-list de Freeradius ; Il s'agit d'un outil de testde serveurs radius. eapol_test est fournit avec wpa_supplicant cependant iln'est pas constructible par défaut.
Pour construire eapol_test éditez à nouveau le �chier .con�g et remplacezla ligne :
# CONFIG_EAPOL_TEST=y
par :
CONFIG_EAPOL_TEST=y
Ensuite, construisez la cible eapol_test :
$ make eapo l_test$ cp eapo l_test / usr / local /bin
3.2 L'authenticator ou le point d'accès
Il s'agit du commutateur ou du point d'accès a travers lequel notre sup-plicant va se connecter au réseau. Pour simuler un point d'accès nous allonsutiliser un container LXC que nous appellerons 'authenticator' ; A�n quenotre container puisse se comporter comme un point d'accès nous allonsl'équiper d'un logiciel spéci�que appelé "Hostapd".
HostapdEst un démon qui s'exécute sur un point d'accès et qui implémente la
norme IEEE 802.11, ce logiciel gère aussi la norme 802.1x avec une connexion�laire réelle ou virtuelle comme nous l'avait a�rmé l'auteur du wpa_supplicant
6
et du hostapd Jouni Malinen dans cette réponse à une question que nousavons posé dans le mailing-list du hostapd.
Téléchargement
Téléchargez l'archive contenant les sources.
Con�guration
Décompressez l'archive et éditez le �chier de con�guration
$ ta r xvfz hostapd−x . y . ta r . gz$ cd hostapd−x . y$ cd hostapd$ cp d e f c on f i g . c on f i g
Éditez le �chier .con�g et veillez à ce que les lignes suivantes soient actives
CONFIG_DRIVER_WIRED=yCONFIG_DRIVER_NONE=yCONFIG_EAP_SIM=yCONFIG_DRIVER_HOSTAP=y
Installation
$ make$ cp hostapd hostapd_cl i / usr / local /bin
Le �chier de con�guration complet est disponible sur le wiki à ce lien.
3.3 Freeradius
Installation
� Sous Fedora
$ sudo yum i n s t a l l f r e e r a d i u s . i 686
� Sous Ubuntu
7
$ sudo apt−get i n s t a l l f r e e r a d i u s
Con�guration
Les �chiers de con�guration se trouvent ici. À Extraire et à copier dansle répertoire /etc/raddb sous Fedora.
$ ta r xvfz raddb . ta r . gz$ cd raddb$ sudo cp −R ∗ / e t c /raddb
Un tutoriel sur l'installation et la con�guration de freeradius est dis-ponible à cette adresse.
4 Mise en place du réseau virtuel
Rappel sur la con�guration réseau
Fig. 2 � Infrastructure pour l'authenti�cation 802.1x.
8
Création du point d'accès
Le �chier network-con�g
# ac t i v a t i o n du forward ing
sudo s y s c t l −w net . ipv4 . ip_forward=1
# crea t i on e t a c t i v a t i o n du b r i d g e r e l i a n t l ' a u t h en t i c a t o r
# au supp l i can t , i l s ' a g i t du l i e n EAP Over Lan
sudo b r c t l addbr eapolansudo b r c t l s e t f d eapolan 0sudo ip l i n k set eapolan up
Le �chier routing-con�g
# on f i x e l ' adres se de l ' i n t e r f a c e de l ' a u t h e n t i f i c a t e u r
# vers l e s upp l i c an t
sudo ip addr add 10 . 0 . 0 . 1 / 24 dev eapolan
Le �chier de con�guration du point d'accès nas.cfg
l x c . utsname = authen t i c a to r
# network between supp l i c an t and au t h en t i c a t o r
l x c . network . type = vethlx c . network . veth . pa i r = veth_supplx c . network . f l a g s = uplx c . network . l i n k = eapolanlx c . network . name = eth0lx c . network . hwaddr = aa : 0 0 : bb : 0 0 : cc : 11l x c . network . ipv4 = 10 . 0 . 0 . 2 / 24
Le �chier startnas
sudo lxc−execute −n Nas −f nas . c f g bash
Le �chier allcon�g.nas
source network−c on f i gsource rout ing−c on f i gsource s t a r tna s
9
Donner le droit d'exécution au �chier allcon�g.nas
$ chmod u+x a l l c o n f i g . nas
Création du serveur radius
Le �chier nas-network-con�g
# ac t i v a t i o n du forward ing
sudo s y s c t l −w net . ipv4 . ip_forward=1
# crea t i on e t a c t i v a t i o n du b r i d g e r e l i a n t l ' a u t h en t i c a t o r
# au serveur radius , i l s ' a g i t du l i e n EAP Over Radius
sudo b r c t l addbr eaporadsudo b r c t l s e t f d eaporad 0sudo ip l i n k set eaporad up
Le �chier nas-routing-con�g
# on f i x e l ' adres se de l ' i n t e r f a c e de l ' a u t h e n t i f i c a t e u r
# vers l e se rveur rad ius
sudo ip addr add 200 . 0 . 0 . 1 /24 dev eaporad
Le �chier de con�guration du serveur radius nas.cfg
l x c . utsname = rad iu sl x c . network . type = vethlx c . network . veth . pa i r = veth_radiusl x c . network . f l a g s = uplx c . network . l i n k = eaporadlx c . network . name = eth0lx c . network . hwaddr = aa : 0 0 : ba : f e : 0 a : bel x c . network . ipv4 = 200 . 0 . 0 . 100/24
Le �chier startradius
sudo lxc−execute −n Rads −f r ad iu s . c f g bash
10
Le �chier allcon�g.rad
source nas−network−c on f i gsource nas−rout ing−c on f i gsource s t a r t r a d i u s
Rendre le �chier allcon�g.rad exécutable
$ chmod u+x a l l c o n f i g . rad
L'ensemble des �chiers de con�guration du réseau virtuel est disponiblesur le wiki dans l'archive lxc-con�g.tar
5 Illustration : réalisation d'une authenti�cation EAP-
PEAP d'illustration
Depuis un terminal lancez l'authenticator
$ . / a l l c o n f i g . nas
dans le même terminal (authenticator) lancer le serveur SSH
$ / usr / sb in / sshd
Depuis un autre terminal connectez vous à l'authenticator via ssh etlancez le container du serveur
$ ssh h l o c a l$ . / a l l c o n f i g . rad
Maintenant on a un terminal représentant l'authenticator, un deuxièmereprésentant le serveur radius et le supplicant sera notre machine hôte.
11
Fig. 3 � création du serveur et du point d'accès.
Depuis l'authenticator lancez hostapd avec le �chier de con�gurationhostapd.conf
$ sudo hostapd −dd hostapd . conf
Depuis le serveur lancer freeradius
$ sudo rad iusd −X
Le serveur Freeradius et le point d'accès sont en attente de nouvellesconnexions.
12
Fig. 4 � création du serveur et du point d'accès.
Depuis la machine hôte ouvrez un terminal et lancez une demande d'au-thenti�cation avec wpa_supplicant et le �chiers de con�guration wpa.conf-v1.1 :
c t r l_ i n t e r f a c e=/var /run/wpa_supplicantap_scan=0fast_reauth=1network={s s i d=" t e s t "scan_ssid=0key_mgmt=IEEE8021Xeap=PEAPphase2="auth=MSCHAPV2"i d e n t i t y="sami"
password=" samipass "
Demande d'authenti�cation
wpa_supplicant − i eapolan −c wpa . conf−v1 . 1 −Dwired
13
Fig. 5 � Authenti�cation auprès du serveur freeradius via l'authen-ticator avec wpa_supplicant.
Et si on regarde du coté serveur et point d'accès ...
14
Fig. 6 � Messages du serveur et du point d'accès en réponse à unedemande d'authenti�cation depuis wpa_supplicant.
6 Sni�ng et capture wireshark
Nous avons lancer en même temps que l'exécution de la demande d'au-thenti�cation avec wpa_supplicant une capture wireshark sur l'interface ea-polan avec comme �ltre l'expréssion 'eapol'
15
Fig. 7 � Capture des paquets d'une authenti�cation EAP-PEAP.
16
Le �chier contenant les paquets de cette capture est disponible ici : cap-ture01.pcap
7 Interaction avec scapy
Nous allons lancer l'authenticator dans l'écran de droite et scapy dansl'écran de gauche et envoyer depuis scapy un paquet EAPOL/Start pourensuite observer la réaction de l'authenticator :
Fig. 8 � État du point d'accès avant la demande d'authenti�cation.
On envoie le paquet EAPOL/Start
17
Fig. 9 � État du point d'accès après la demande d'authenti�cation.
18
Conclusion
Nous avons vu comment cette structure permet-elle à un supplicant des'authenti�er auprès d'un serveur freeradius en passant par un point d'accèsqui gère l'authenti�cation 802.1x. Il nous reste à exploiter cette structurepour faire de l'authenti�cation EAP-SIM puis d'écrire un supplicant en py-thon qui réalise ce type d'authenti�cation.
19