SE2a5 2023/2024 EC1
Objectifs
A la base il vous est demandé d'implanter à nouveau le point 7.2 de votre sujet de travaux pratiques pour le module "sécurité dans les systèmes et réseaux" mais avec des différences notables.
Les différences sont les suivantes :
- le point d'accès n'est pas un point d'accès aironet avec un IOS cisco mais un point d'accès TP-LINK EAP615 avec le logiciel OpenWRT ;
- le réseau est réduit à un seul PC, de préférence connecté à Internet ;
- vous n'implanterez que 2 SSID sur 2 VLAN pour simuler deux groupes d'élèves, appellons les SSID
WiFi1
etWiFi2
associés aux VLAN 2 et VLAN 3.
Vous êtes libre de choisir les réseaux IPv4 à configurer sur les VLAN 2 et VLAN 3 du moment que vous utilisez des réseau non routés n'étant pas en conflit avec un réseau déjà utilisé par votre PC.
Vous devez installer les services suivants sur le PC :
- créez deux interfaces
vlan2
etvlan3
au dessus de l'interface Ethernet de connexion avec le point d'accès ; - deux serveurs d'identification à base de
freeradius
, faites en sorte que chaque instance utilise un répertoire de configuration différent, une instance doit se lier àvlan2
et la seconde àvlan3
; - deux serveurs DHCP, une instances doit se lier à l'interface code>vlan2 et la seconde à l'interface
vlan3
; - réalisez une mascarade pour permettre aux machines utilisant
WiFi1
etWiFi2
d'accèder à Internet.
Concernant le point d'accès vous devez déjà installer le logiciel OpenWRT.
Un fois OpenWRT opérationnel, il est est demandé de configurer deux SSID, un associé avec le VLAN 2 et l'autre avec le VLAN 3 avec une identification par WPA-EAP en pointant vers vos deux instances de freeradius
. Vous devez tester deux méthodes de configuration. Une première via des lignes de commandes à taper sous OpenWRT via ssh, une seconde en utilisant l'interface Web LuCi d'OpenWRT. Ne tentez pas de méthode mixte.
Vous pouvez considérer qu'une configuration fonctionne si elle respecte les contraintes ci-dessus et si un téléphone peut se connecter en WiFi sur chaque SSID et sortir sur Internet (e.g. navigation Web).
Il s'agit là d'un cahier des charges initial qui peut être revu en cas d'ambigüité. Vous avez jusqu'au 15 juin pour réaliser cette épreuve complémentaire. Il vous est fortement conseillé de produire un travail régulier le plus tôt possible et de faire des rapports réguliers (en particulier au travers de ce Wiki) à votre encadrant. S'y prendre à la dernière minute avec un seul retour la veille de la date limite risque fortement de conduire à un échec.
Matériel nécessaire
Le matériel nécessaire est constitué :
- d'un PC sous Linux pour l'implantation du serveur d'identification ;
- d'un adaptateur USB/Ethernet pour connecter le PC au point d'accès sans impacter la connexion du PC à l'Internet, cet adaptateur est fourni par l'encadrant ;
- d'un point d'accès TP-Link EAP615 permettant l'installation d'OpenWRT, ce point d'accès est fourni par l'encadrant.
Travail réalisé
Documents Rendus
Interfaces VLAN
Fichier de configuration pour la création des interfaces VLAN sous Linux :
S'assurer de charger le module modprobe 8021q sur le PC linux. Ce module va nous permettre de créer et gérer les interfaces VLAN, pour segmenter le réseau en multiples réseaux distincts. Commande : sudo modprobe 8021q
Pour vérifier que le module est bien chargé, utiliser la commande suivante : lsmod | grep 8021q
Pour vérifier quelle est l'interface réseau du convertisseur ethernet vers USB-C, on utilise la commande ip a :
On remarque donc que nous allons devoir créer les VLANs sur l'interface de connexion enx0c3796a8eabc. Dans le fichier de configuration /etc/network/interfaces, on y créer les VLAN 2 (IP statique : 192.168.2.1) et VLAN 3 (IP statique : 192.168.3.1): # interfaces(5) file used by ifup(8) and ifdown(8) # Include files from /etc/network/interfaces.d: source /etc/network/interfaces.d/* auto vlan2 iface vlan2 inet static address 192.168.2.1 netmask 255.255.255.0 vlan-raw-device enx0c3796a8eabc auto vlan3 iface vlan3 inet static address 192.168.3.1 netmask 255.255.255.0 vlan-raw-device enx0c3796a8eabc
Description du fichier interface : auto vlanX -> directive pour que l'interface s'active dès le démarrage du PC. inet static -> méthode pour attribuer une adresse IP statique pour l'interface VLAN address -> adresse IP attribuée au VLAN netmask -> masque de sous réseau utilisé vlan-raw-deviceX -> identifiant réseau auquel le VLAN est associé
Pour vérifier que les interfaces VLAN sont bien créées, on utilise les commandes suivantes : -> systemctl restart networking (redémarrer le service réseau) -> systemctl status networking (pour voir que le service réseau fonctionne et qu'il n'y a pas d'erreurs) -> ip a :
Script de lancement
Script de lancement des serveurs d'identification et des serveurs DHCP
Pour le script de lancement, j'ai voulu lancer les serveurs freeradius en mode débug. Ce mode permet de voir les indentifications en temps-réel et de vérifier si un utilisateur se connecte avec le bon login et mot-de-passe. Il faut utiliser un terminal spécifique pour le lancement de ce script. Pour terminer le script de lancement, il faut utiliser les touches CRTL-C. Le script a le déroulement suivant : 1) on redémarre le service réseau 2) on redémarre les serveurs DHCP pour attribuer les IP aux utilisateurs connectés aux VLANs spécifiques 3) on lance une première instance freeradius, liée au VLAN2, qui se trouve dans le répertoire /etc/freeradius/vlan2/ 4) on lance une deuxième instance freeradius, liée au VLAN3, qui se trouve dans le répertoire /etc/freeradius/vlan3/
Script de lancement : systemctl restart networking systemctl restart isc-dhcp-server freeradius -X -d /etc/freeradius/vlan2/ & freeradius -X -d /etc/freeradius/vlan3/ & wait
Vérification que le script se lance correctement avec la commande ./: On remarque que les serveurs DHCP et Freeradius se lancent correctement et qu'ils écoutent respectivement sur les IP: 192.168.2.1 / port : 2020 et IP: 192.168.3.1 / port 3030. Les serveurs sont bien liés aux VLAN 2 et 3.
Fichiers de configuration Radius
Création des deux instances freeradius : dupliquer le fichier "3.0" dans /etc/freeradius , les renommer en 'vlan2' et 'vlan3':
(NOTE : l'essai et la vérification des serveurs freeradius est fait dans la partie précédente "Script de lancement") Pour configurer les serveurs freeradius, j'ai modifié les fichiers suivants : Fichier users : fichier permettant de définir des utilisateurs pour les autoriser à se connecter à un réseau. On vient y renseigner le nom de l'utilisateur et un mot de passe. Fichier clients.conf : fichier où l'on renseigne les configurations des clients communiquant avec le serveur freeradius. Dans notre cas, nous devrons renseigner le TPlink car il va envoyer les requêtes d'authentification des différents utilisateurs aux serveurs freeradius. Fichier mods-enabled/eap : Ce fichier contient les paramètres pour la méthode d'authentification 'eap'. Fichier radiusd.conf : Il s'agit du fichier de configuration princial où l'on va indiquer les différents chemins vers les fichiers de configuration. Fichier sites-enabled : On vient indiquer dans ce fichier de configuration les différents paramètres permettant la connexion aux serveurs freeradius. On indique au serveur les IP et les ports sur lesquels il doit écouter les requêtes d'authentification.
Pour l'instance VLAN2 :
fichier users{ greleve1 Cleartext-Password := "mdp123" Tunnel-Type = VLAN, Tunnel-Medium-Type = IEEE-802, Tunnel-Private-Group-Id = "2" bob Cleartext-Password := "hello" Reply-Message := "Hello, %{User-Name}" }
fichier clients.conf{ client tplink { ipaddr = 192.168.2.2 secret = passwordSecret } }
fichier /mods-enabled/eap{ eap { default_eap_type = peap timer_expire = 60 ignore_unknown_eap_types = no cisco_accounting_username_bug = no max_sessions = ${max_requests} }
fichier radiusd.conf{ prefix = /usr exec_prefix = /usr sysconfdir = /etc localstatedir = /var sbindir = ${exec_prefix}/sbin logdir = /var/log/freeradius raddbdir = /etc/freeradius/vlan2 radacctdir = ${logdir}/radacct }
fichier /sites-enabled/default{ ipaddr = 192.168.2.1 # Port on which to listen. # Allowed values are: # integer port number (1812) # 0 means "use /etc/services for the proper port" port = 2020 } listen { ipaddr = 192.168.2.1 port = 2021 type = acct }
Pour l'instance VLAN3 :
fichier users{ greleve2 Cleartext-Password := "mdp123" Tunnel-Type = VLAN, Tunnel-Medium-Type = IEEE-802, Tunnel-Private-Group-Id = "3" bob Cleartext-Password := "hello" Reply-Message := "Hello, %{User-Name}" }
fichier clients.conf{ client tplink { ipaddr = 192.168.3.2 secret = passwordSecret } }
fichier /mods-enabled/eap{ eap { default_eap_type = peap timer_expire = 60 ignore_unknown_eap_types = no cisco_accounting_username_bug = no max_sessions = ${max_requests} }
fichier radiusd.conf{ prefix = /usr exec_prefix = /usr sysconfdir = /etc localstatedir = /var sbindir = ${exec_prefix}/sbin logdir = /var/log/freeradius raddbdir = /etc/freeradius/vlan3 radacctdir = ${logdir}/radacct }
fichier /sites-enabled/default{ ipaddr = 192.168.3.1 # Port on which to listen. # Allowed values are: # integer port number (1812) # 0 means "use /etc/services for the proper port" port = 3030 } listen { ipaddr = 192.168.3.1 port = 3031 type = acct }
Fichiers de configuration du serveur DHCP
Les serveurs DHCP vont avoir pour rôle d'attribuer des IP aux utilisateurs connectés aux VLANs. Fonctionnement d'un serveur DHCP pour une attribuer une IP à un client:
Création des serveurs DHCP dans le fichier /etc/dhcp/dhcpd.conf : # dhcpd.conf #definition du nom de domaine par defaut option domain-name "example.org"; #definition des serveurs DNS par defaut option domain-name-servers ns1.example.org, ns2.example.org; #definition des temps minimum et maximum des bails DHCP (duree qu un serveur DHCP accorde a un client) default-lease-time 600; max-lease-time 7200; #definition sous reseau vlan2 #range = plage d IP accorde #option routers = on indique l IP de la passerelle par defaut #option domain-name = on indique les serveurs DNS que les serveurs DHCP vont utiliser subnet 192.168.2.0 netmask 255.255.255.0 { range 192.168.2.10 192.168.2.100; option routers 192.168.2.1; option domain-name-servers 8.8.8.8, 8.8.4.4; option domain-name "myLocalDNS.com"; } subnet 192.168.3.0 netmask 255.255.255.0 { range 192.168.3.10 192.168.3.100; option routers 192.168.3.1; option domain-name-servers 8.8.8.8, 8.8.4.4; option domain-name "myLocalDNS.com"; }
Dans /etc/default/isc-dhcp-server , ajouter les vlans dans 'INTERFACES4=" "' pour indiquer les interfaces réseaux sur lesquelles il doit écouter / répondre aux requêtes DHCP: # On what interfaces should the DHCP server (dhcpd) serve DHCP requests? # Separate multiple interfaces with spaces, e.g. "eth0 eth1". INTERFACESv4="vlan2 vlan3"
Pour que les fichiers du serveur dhcp soient pris en compte avec les modifications, il faut utiliser les commandes suivantes: -> systemctl restart isc-dhcp-server (reboot du service DHCP) -> systemctl status isc-dhcp-server (pour vérifier les erreurs)
Procédure pour installer OpenWRT
Etape 1 : Installation de OpenWrt sur le Tp-link (méthode via interface en ligne) Aller sur le site d'OpenWrt (download firmware) et trouver le logiciel adapté au tplink eap615-wall : https://openwrt.org/toh/views/toh_fwdownload Télécharger le "Factory Image", et le renommer "factory.bin" (dossier download du pc) Brancher le tplink à une box ou routeur et aller sur le site http://tplinkeap.net (login : admin ; password : admin) Une fois sur la page d'accueil, aller dans System -> Firmware Dans Browse, choisir dans le dossier Download 'factory.bin' et cliquer sur Update. L'installation d'OpwenWrt va forcer l'ip du tplink à 192.168.1.1, il faudra utiliser cette ip pour se connecter sur LuCi (interface web d'OpenWrt). Débrancher le TPlink de la box / routeur, le connecter à l'injecteur de courant et au PC via le convertisseur ethernet -> USB-C. Sur un navigateur, rentrer l'ip 192.168.1.1 . Test connexion via ssh -> 'ssh root@192.168.1.1' Etape 2 : Installation des packages nécessaires pour utiliser l'option WPA-EAP lors de la création des ssid Vérification de l'architecture utilisé par le TPlink -> commande cat/etc/os-release Aller sur la page download de OpenWrt pour télécharger les packages associé à l'architecture 'mipsel_24kc' : https://downloads.openwrt.org/releases/23.05.3/packages/mipsel_24kc/base/ Télécharger les packages suivants : Dans l'interface LuCi, aller dans l'onglet System -> Software, remove le package pré-installé "wpad-bacics". Upload les nouveaux packages avec l'onglet "Upload Package". Commencer par les "ucode" (le package wpad doit être installé en dernier, étant dépendant des "ucode")
Commandes en ligne pour configurer le point d'accès
Création d'un device vlan : uci add network device uci set network.@device[-1].name='br-lan.2' uci set network.@device[-1].type='8021q' uci set network.@device[-1].ifname='br-lan' uci set network.@device[-1].vid='2' uci set network.@device[-1].macaddr='A8:42:A1:B2:B6:D4' uci set network.@device[-1].mtu='1500' uci set network.@device[-1].txqueuelen='1000' uci set network.@device[-1].ipv6='auto' uci set network.@device[-1].ipv6mtu='1500' uci set network.@device[-1].dadtransmits='1' uci set network.@device[-1].promisc='1' uci set network.@device[-1].acceptlocal='1' uci set network.@device[-1].arp_accept='1' uci set network.@device[-1].drop_gratuitous_arp='0' uci set network.@device[-1].sendredirects='1'
Création d'une interface wifi1 : uci set network.wifi1=interface uci set network.wifi1.proto='static' uci set network.wifi1.device='br-lan.2' uci set network.wifi1.ipaddr='192.168.2.2' uci set network.wifi1.netmask='255.255.255.0' uci set network.wifi1.gateway='192.168.2.1'
Pour enregistrer les modifications sur le device vlan et l'interface : uci commit network /etc/init.d/network restart
Création du ssid Wifi1: uci set wireless.@wifi-iface[0]=wifi-iface uci set wireless.@wifi-iface[0].network='wifi1' uci set wireless.@wifi-iface[0].device='radio0' uci set wireless.@wifi-iface[0].mode='ap' uci set wireless.@wifi-iface[0].ssid='Wifi1' uci set wireless.@wifi-iface[0].encryption='wpa' uci set wireless.@wifi-iface[0].auth_server='192.168.2.1' uci set wireless.@wifi-iface[0].auth_port='2020' uci set wireless.@wifi-iface[0].auth_secret='passwordSecret' uci set wireless.@wifi-iface[0].auth_type='WPA-EAP'
Pour enregistrer les modifications sur le ssid 'Wifi1': uci commit wireless wifi reload
Test de la connexion au point d'accès Wifi1 : Sur un téléphone, aller dans les paramètre wifi et sélectionner le réseau 'Wifi1'. Entrer le login greleve1 et le mot-de-passe mdp123 Nous avons la possiblité sous LuCi de vérifier les logs dans l'onglet Status -> System Log : On y remarque bien avec ces logs que la machine connecté au VLAN2 a bien réussi l'authentification et à se connecter au point d'accès. Le séquencement de la connexion s'est effectuée de la manière suivante : 1er étape : La machine est authentifiée et associée à 'Wifi1' 2e étape : Début du processus de la méthode d'authentification EAP 3e étape : L'authentification EAP est réussie 4e étape : Fin de l'échange des clés WPA 5e étape : La machine est connectée au point d'accès 6e étape : Enregistrement des activités de la connexion via le serveur Freeradius 7e étape : Confirmation que la machine est correctement identifiée et est autorisée à se connecter au réseau 8e étape : Etablissement d'une clé de chiffrement commune entre la machine et le point d'accès. Nous pouvons également vérifier les logs sur le serveur Freeradius : 1er étape : La machine envoie une demande d'accès au serveur radius. On y retrouve l'identifiant de l'utilisateur, l'IP du NAS et l'identifiant du NAS. 2e étape : Le serveur radius va commencer la vérification certains critères comme le nom d'utilisateurs / mot de-passe. 3e étape : le serveur radius authentifie l'utilisateur 4e étape : le serveur radius prépare les configuration pour que la machine connectée au point d'accès puisse accéder au réseau en sécurité 5e étape : le serveur radius indique que l'accès est autorisé Nous pouvons regarder sur les paramètres du wifi si nous obtenons bien une adresse IP dans la plage définie par le serveur DHCP : Maintenant que nous sommes connectés au point d'accès, nous pouvons accéder à internet :
Procédure pour configurer le point d'accès avec LuCi
Étape 1 : Création du device type Vlan 'br-lan3'
Dans le menu Network -> Interfaces, cliquer sur devices et ajouter la configuration suivante :
Étape 2: Modification de la configuration du bridge device 'br-lan'
Note :
. Le Vlan d'ID 99 permet juste de pouvoir continuer de configurer les vlans 2 et 3. Il n'a pas d'importance ni de conséquence sur le paramétrage du bridge.
. Ce paramétrage permet de tagger les Vlans 2 et 3 : permet une gestion plus efficace du réseau en regroupant les utilisateurs par Vlan
. Activation du port LAN1 -> utilisé pour dissocier le PC "routeur" et le PC paramétrage du TPlink. M'a permis également de faire du débug car quand je voulais faire un ping depuis un autre pc vers une interface VLAN créée auparavant, je ne recevais pas de paquets de retour. J'ai donc installé TSHARK sur mon pc ubuntu et WIRESHARK pour analyser les trames envoyées / reçues, pour faire des tests et trouver la bonne configuration du TPlink pour faire communiquer les différentes machines entre elles.
Étape 3: Création de l'interface 'wifi2'
Dans le menu Network -> Interfaces, ajouter la configuration suivante :
Étape 4: Modification de l'interface 'lan'
Note : pour pouvoir configurer le TPlink, il faudra donc utiliser l'IP 192.168.10.2 et connecter un cable ethernet sur le port eth1 du TPlink
Étape 5: Création du SSID 'Wifi2'
Dans le menu Network -> Wireless, ajouter la configuration suivante :
Étape 6: Test du SSID 'Wifi2'
De la même méthode que pour le Wifi1, se connecter au point d'accès Wifi2 via un téléphone, mais, avec l'identifiant greleve2 et le mot-de-passe mdp123
Nous pouvons voir les logs sur LuCi pour vérifier ce qui se passe sur le réseau :
Nous y retrouvons les mêmes informations que pour le point d'accès 'Wifi1'
Nous pouvons également vérifier les logs sur le serveur Radius :
Suite à ces logs, nous pouvons voir que l'identification de l'utilisateur au point d'accès Wifi2 s'effectue correctement.
Nous pouvons alors vérifier si nous obtenons bien une IP dans la plage définie par le serveur DHCP lié au vlan3 et que nous pouvons sortir sur internet :