« SE2a5 2023/2024 EC1 » : différence entre les versions

De wiki-se.plil.fr
Aller à la navigation Aller à la recherche
Ligne 47 : Ligne 47 :
   
   
  lsmod | grep 8021q
  lsmod | grep 8021q
 
[[Fichier:Lsmod 8021q check.png|sans_cadre|444x444px]]
[[Fichier:Lsmod 8021q check.png|sans_cadre|444x444px]]



Version du 21 juin 2024 à 09:57

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 et WiFi2 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 et vlan3 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 et WiFi2 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

Lsmod 8021q check.png

Pour vérifier quelle est l'interface réseau du convertisseur ethernet vers USB-C, on utilise la commande ip a :

Interface de connexion eth to usb.png

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)

Systemctl status networking.png

  • ip a :

Interfaces vlans ip a.png

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 ./'nom_du_script':

Freeradius vlan3.png

Freeradius vlan2.png

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': 

Instances radius.png

(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, partie modifiée :
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, partie modifiée :
client tplink {
	ipaddr = 192.168.2.2
	secret = passwordSecret
}
  • fichier /mods-enabled/eap, partie modifiée :
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, partie modifiée :
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, partie modifiée :
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, partie modifiée :
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, partie modifiée :
client tplink {
	ipaddr = 192.168.3.2
	secret = passwordSecret
}

}
  • fichier /mods-enabled/eap, partie modifiée :
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, partie modifiée :
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, partie modifiée :
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:

Image principe de fonctionnement DHCP.png

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)

DHCP1.1.png

DHCP1.2.png

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

Openwrt download.png


Télécharger le "Factory Image", et le renommer "factory.bin" (dossier download du pc)

Factory.bin.png


Brancher le tplink à une box ou routeur et aller sur le site http://tplinkeap.net (login : admin ; password : admin)

Page d'acceuil TPlink.png


Une fois sur la page d'accueil, aller dans System -> Firmware

Page d'acceuil2tplink.png

Update firmware page.png

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 .

LuCi.png


Test connexion via ssh -> 'ssh root@192.168.1.1'

Ssh openwrt.png


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

Architecture.png


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 : 

Packages.png


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")

OpenwertSoftwrepack.png

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

ScreenPhoneWifi1.1.jpg




Nous avons la possiblité sous LuCi de vérifier les logs dans l'onglet Status -> System Log : 

LogLuciWifi1.png


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.

Débutlogradiuswifi1.png




2e étape : Le serveur radius va commencer la vérification certains critères comme le nom d'utilisateurs / mot de-passe.

Logradius2wifi1.png




3e étape : le serveur radius authentifie l'utilisateur

Log3wifi1radius.png



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é

Wifi1log4radius.png




5e étape : le serveur radius indique que l'accès est autorisé

Wifi1log5radius.png


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 :

ScreenPhoneWifi1.2.jpg


Maintenant que nous sommes connectés au point d'accès, nous pouvons accéder à internet : 

ScreenPhoneWifi1.3.jpg

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 :

LuciBRL3-GS.png


LuciBRL3-AS.1.png

LuciBRL3-AS.2.png


Étape 2: Modification de la configuration du bridge device 'br-lan'

LuciBRL-GS.png



LuciBRL-AS.1.png

LuciBRL-AS.2.png

LuciBRL-BRIDGE.png

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 :


LuciIwifi1-GS.png



LuciIwifi1-AS.png


Étape 4: Modification de l'interface 'lan'

LuciLan-GS.png


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 :


SSID Wifi2-GS.png



LuciIwWifi2-AS.1.png

LuciIWifi2-AS.2.png

É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

PhoneWifi2.1.png

Nous pouvons voir les logs sur LuCi pour vérifier ce qui se passe sur le réseau :

LogLuciWifi2.png

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 :

LogRadiusWifi2.png

LogRadiusWifi2.2.png

LogRadiusWifi2.3.png

LogRadiusWifi2.4.png

LogRadiusWifi2.5.png

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 :

PhoneWifi2.2.jpg

PhoneWifi2.3.jpg