« SE4 2024/2025 EC1 » : différence entre les versions
(80 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 55 : | Ligne 55 : | ||
= Travail réalisé = | = Travail réalisé = | ||
=== 18/07: === | |||
A ce jour j'ai crée mes interfaces VLAN (fichier dans les documents rendus) qui ont pour adresses 192.168.2.1 pour le VLAN 2 et 192.168.3.1 pour le VLAN 3 et ils sont bien au dessus de l'interface eth0 comme on peut le voir avec ce ip a: | |||
[[Fichier:Ip a vlan2 et 3.png|centré|vignette|726x726px]] | |||
Je suis passé à la configuration de mes instances freeradius. Pour cela j'ai copié la configuration de base 2 fois (une par VLAN) pour bien différencier chaque instances pour chaque VLAN. Je travaille donc dans <code>/etc/freeradius/vlan2/</code> et <code>/etc/freeradius/vlan3/</code>. | |||
Pour que mes instances fonctionnent, j'ai modifié les adresses et les ports de <code>/etc/freeradius/vlan2/sites-enabled/default</code>comme ceci:<syntaxhighlight lang="vim"> | |||
listen { | |||
ipaddr = 192.168.2.1 | |||
port = 1812 | |||
type = auth | |||
} | |||
listen { | |||
ipaddr = 192.168.2.1 | |||
port = 1813 | |||
type = acct | |||
} | |||
</syntaxhighlight> | |||
Puis dans <code>etc/freeradius/vlan2/sites-enabled/inner-tunnel</code>:<syntaxhighlight lang="vim"> | |||
listen { | |||
ipaddr = 127.0.0.1 | |||
port = 18130 | |||
type = auth | |||
} | |||
</syntaxhighlight> | |||
J'ai aussi réalisé la même chose pour les fichier du VLAN 3 en remplacant les adresses IP par celles du VLAN 3 et le port dans inner-tunnel par 18130 pour pas que les deux instances écoutent le même port. | |||
Ainsi, j'arrive à lancer mes deux instances en parallèles comme le montre cette capture : | |||
[[Fichier:Freeradius x2.png|centré|vignette|646x646px]] | |||
Pour obtenir cette capture j'ai lancé les deux instances en mode debug avec les commandes <code>freeradius -X -d /etc/freeradius/vlan2</code> et <code>freeradius -X -d /etc/freeradius/vlan3</code>. Maintenant que nos instances freeradius fonctionnent, je suis passé à la configuration des serveurs DHCP. | |||
Après avoir installé le package <code>isc-dhcp-server</code>, j'ai crée 2 fichiers .conf qui sont <code>/etc/dhcp/dhcpd-vlan2.conf</code> et <code>/etc/dhcp/dhcpd-vlan3.conf</code>. | |||
Dans ces fichiers, j'y ai renseigné dans quel sous réseau ils doivent fonctionner. | |||
Ensuite, pour lancer les deux services j'ai crée deux fichiers systemd: <code>/etc/systemd/system/dhcpd-vlan2.service</code> et <code>/etc/systemd/system/dhcpd-vlan2.service</code> dans lesquels j'indique le type de service (en l'occurence le type <code>forking</code> car je vais en lancer 2 en parallèle) et la commande à l'execution qui est (pour le serveur destiné au VLAN 2 par exemple): <code>ExecStart=/usr/sbin/dhcpd -4 -q -cf /etc/dhcp/dhcpd-vlan2.conf -pf /run/dhcp-server/dhcpd-vlan2.pid eth0.2</code>. | |||
Après un <code>systemctl daemon-reload</code> et <code>systemctl enable dhcpd-vlan2</code> (pareil pour <code>dhcpd-vlan3</code>), je lance mes services avec un <code>systemctl start dhcpd-vlan2</code> (pareil pour celui du VLAN 3) et en regardant leur état avec un <code>systemctl status dhcpd-vlan2</code> (et vlan3) on voit bien que mes serveurs tournent correctement en parallèle: | |||
[[Fichier:Mes serveurs dhcp tournent.png|vignette|centré|1038x1038px]] | |||
Pour être sûr que mes serveurs écoutent sur le bon port, | |||
[[Fichier:Netstat.png|centré|vignette|719x719px]] | |||
Mes deux serveurs écoutent bien sur le port 67 qui est le port par défaut de dhcp donc tout à l'air bon. | |||
=== 28/07: === | |||
Après un premier retour du professeur encadrant j'ai apporté des modifications sur ce que j'avais fait. | |||
Premièrement j'ai revu mes instances freeradius pour qu'ils écoutent uniquement sur leurs VLANs respectifs car ils écoutaient tous les deux sur 127.0.0.1. Maintenant chaques instances écoutent sur leur VLAN respectifs uniquement et utilisent le port 18120 Comme on peut le voir ici: | |||
[[Fichier:Freeradius.png|centré|vignette|949x949px]] | |||
Ensuite, il s'avère que je n'avais pas bien compris l'énoncé concernant la partie DHCP car je pensais qu'il fallait 2 serveurs DHCP alors qu'il en fallait qu'un seul qui gère les deux VLANs, j'ai donc supprimé un serveur pour n'en utiliser qu'un seul et j'ai rajouté une deuxième section <code>subnet</code> où j'y ai mis le deuxième VLAN et j'ai précisé les interfaces que je vais utiliser dans <code>/etc/default/isc-dhcp-server</code>. | |||
De plus, j'ai voulu tester si mon freeradius fonctionne avec un <code>radtest</code> en ajoutant un client dans <code> /etc/freeradius/vlan2/clients.conf</code> et un user dans <code>/etc/freeradius/vlan2/users</code> mais j'ai en boucle l'erreur <code>No Auth-Type found</code> même en précisant le Auth-Type dans <code>users</code> et ça me bloque. | |||
Pour continuer, j'ai aussi voulu tester mon serveur DHCP en essayant d'obtenir une adresse IP par DHCP à partir d'une VM relié à mon VLAN mais je bloque aussi et je remarque qu'avec un <code>dhclient</code>, la VM envoye bien un paquet DHCPDISCOVER que j'arrive à capter depuis ma machine réelle mais ma machine n'envoie pas de DHCPOFFER à ma VM. Pourtant mon serveur DHCP tourne bien sans voir de problèmes dans les logs. | |||
Pour finir ce point, j'avais aussi entammé la configuration du Cisco que j'ai remis en version d'usine en appuyant pour le bouton MODE pendant 20 secondes. Puis le Cisco s'est bien remis en version d'usine mais il était en version point d'accès et je n'ai pas réussi à le passer en mode controlleur depuis minicom. Je suis donc parti pour lui flasher le firmware "Mobility Express" trouvable sur le site officiel de Cisco. J'ai transféré le firmware au point d'accès avec un serveur <code>tftp</code> puis j'ai écrit le firmware dans la mémoire du Cisco mais je l'ai sûrement mal fait puisque le Cisco redémarre en boucle car il n'arrive pas à charger le firmware, j'ai cette erreur en boucle : | |||
<syntaxhighlight> | |||
UBI: attaching mtd1 to ubi0 | |||
UBIFS error (pid 0): init_constants_early: too few LEBs (1), min. is 17 | |||
UBIFS error (pid 0): ubifs_mount: Error reading superblock on volume 'ubi:! | |||
</syntaxhighlight> | |||
L'erreur "too few LEBs" est très étonnante car la partition dédiée est de 100Mo ce qui est très largement suffisant pour acceuillir 17 LEBs (d'après Cisco, 17 LEBs correspond à 2Mo). | |||
=== 02/08: === | |||
Après avoir cherché pourquoi mes <code>radtest</code> ne fonctionnaient pas, j'ai décidé de repartir de zéro dans la configuration de mes instances freeradius en repartant de la base de la configuration "3.0" et en suivant le conseil du professeur encadrant en regardant les travaux de l'élève de l'année précédente et c'est un succès comme le montrent ces captures: | |||
[[Fichier:Screenshot 2025-08-02 21 37 23.png|centré|vignette|787x787px|Mes instances qui tournent]] | |||
[[Fichier:Screenshot 2025-08-02 21 39 51.png|centré|vignette|662x662px|radtest fonctionne]] | |||
Je pense que mon problème viendrait du fait que j'ai voulu partir d'une configuration trop minimale et j'ai dû supprimer des choses que je n'aurais pas dû. | |||
=== 13/08: === | |||
J'ai beaucoup cherché concernant le point d'accès et il s'avère que je l'ai bien briqué donc à part un retour SAV chez Cisco il n'y a rien à faire. J'en ai commandé un nouveau que j'ai reçu aujourd'hui et sur lequel j'ai réussi à changer le mode en Mobility Express (en téléversant le firmware par <code>tftp</code>). | |||
Concernant mon serveur DHCP, il s'avère qu'il manquait des étapes à réaliser pour rendre mon bridge fonctionnel pour ma VM: J'ai associé une adresse IP au bridge et non à l'interface du VLAN. J'ai ajouté dans <code>/etc/default/isc-dhcp-server</code> mon bridge dans <code>INTERFACESv4</code>. J'ai aussi mis mes interfaces en <code>PROMISC</code> pour autoriser le trafic de tout les paquets. | |||
Ainsi, en lancant ma VM avec la commande suivante : <code>qemu-system-x86_64 -enable-kvm -netdev bridge,id=net0,br=br-vlan2 -device e1000,netdev=net0 -hda /var/lib/libvirt/images/vm-vlan2.qcow2 -m 1024 </code>, J'arrive à obtenir une adresse IP par DHCP avec un <code>dhclient</code> | |||
[[Fichier:Dhclient fonctionnel.png|centré|vignette|703x703px|J'ai une IP par DHCP dans ma VM.]] | |||
Enfin, la dernière étape à faire sur le PC, j'ai ajouté les règles iptables suivantes pour permettre à ma VM d'accèder à internet: | |||
<syntaxHighlight> | |||
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE | |||
iptables -A FORWARD -i br-vlan2 -o wlan0 -j ACCEPT | |||
iptables -A FORWARD -i wlan0 -o br-vlan2 -m state --state RELATED,ESTABLISHED -j ACCEPT | |||
</syntaxHighlight>Ainsi, ma VM a maintenant accès à internet. | |||
[[Fichier:La VM a accès à internet.png|centré|vignette|506x506px|La VM a accès à internet]] | |||
On peut aussi vérifier que la résolution DNS fonctionne: | |||
[[Fichier:Resolution DNS fonctionne..png|centré|vignette|705x705px|Resolution DNS fonctionne.]] | |||
=== 16/08: === | |||
On peut aussi voir que ce que j'ai fait précédement pour le VLAN2 fonctionne aussi pour le VLAN3 en faisant un bridge relié à eth0.3 et avec les règles iptables adaptés à eth0.3: | |||
[[Fichier:Internet avec VLAN3.png|centré|vignette|641x641px|DHCP et masquerade fonctionnent sur VLAN3]] | |||
Mes bridges ont été faits de la manière suivante: | |||
Pour le VLAN 2 : | |||
<syntaxHighlight> | |||
ip link add name br-vlan2 type bridge | |||
brctl addif br-vlan3 eth0.2 | |||
ip link set eth0.2 master br-vlan2 | |||
ip addr add 192.168.2.1/24 dev br-vlan2 | |||
ip link set br-vlan2 up | |||
</syntaxHighlight> | |||
Pour le VLAN 3 : | |||
<syntaxHighlight> | |||
ip link add name br-vlan3 type bridge | |||
brctl addif br-vlan3 eth0.3 | |||
ip link set eth0.3 master br-vlan3 | |||
ip addr add 192.168.3.1/24 dev br-vlan3 | |||
ip link set br-vlan3 up | |||
</syntaxHighlight> | |||
[[Fichier:Configuration de mes bridges.png|centré|vignette|823x823px|Configuration de mes bridges]] | |||
=== 18/08: === | |||
La dernière étape consiste à configurer le point d'accès pour déployer nos SSID et avoir accès à internet. | |||
Comme j'ai briqué le point d'accès fourni par le professeur encadrant, j'en ai acheté un autre. Avec un <code>sh version</code> j'ai obtenu principalement ceci: | |||
<syntaxHighlight> | |||
[...] | |||
AP Running Image : 8.10.190.0 | |||
Primary Boot Image : 8.10.190.0 | |||
Backup Boot Image : 0.0.0.0 | |||
[...] | |||
</syntaxHighlight> | |||
Ceci montre que mon point d'accès est en version 8.10.190 et n'est pas en mode Mobility Express. Je lui ai téléversé par tftp le fichier tar qui contient la conversion en mode Mobility Express et entamé la conversion avec la commande <code> ap-type mobility-express tftp://192.168.1.10/AIR-AP2800-K9-ME-8-10-196-0.tar </code>. Après un certain temps, le point d'accès redémarre et je fais à nouveau un <code>sh version</code> et j'obtiens ceci: | |||
<syntaxHighlight> | |||
[...] | |||
AP Running Image : 8.10.190.0 | |||
Primary Boot Image : 8.10.190.0 | |||
Backup Boot Image : 8.10.196.0 | |||
Primary Boot Image Hash: | |||
Backup Boot Image Hash: | |||
AP Image type : MOBILITY EXPRESS IMAGE | |||
AP Configuration : NOT MOBILITY EXPRESS CAPABLE | |||
[...] | |||
</syntaxHighlight> | |||
Il s'avère que le firmware mobility express se situe en image de backup, pour booter sur la bonne image, il suffit de changer la variable <code>BOOT=part1</code> par <code>BOOT=part2</code> dans le menu de pré-boot. | |||
Après un dernier redémarrage mon point d'accès démarre bien en mode Mobility Express. Je le sais car l'invite de commande est maintenant de la forme <code>(Cisco Controller) ></code>. | |||
J'ai crée 2 SSID "G1" et "G2" et ils sont visibles depuis mon téléphone et j'ai activé le WPA2, on me demande un identifiant et un mot de passe pour m'y connecter.[[Fichier:SSID visibles.png|centré|vignette]] [[Fichier:Demande identifiant pour connexion.png|centré|vignette]] | |||
J'ai ajouté mes instances freeradius pour chaque SSID. Les commandes envoyés sont dans la partie "Commandes en ligne pour configurer le point d'accès" du wiki. | |||
Concernant les VLANs, la commande <code> config interface create</code> n'est pas reconnue par mon point d'accès. Quand je fais un <code>show interface summary</code> je vois que le Cisco possède 2 interfaces : "management" (l'interface de base) et "virtual". Je n'arrive pas à ajouter d'interface. En faisant des recherches j'ai vu que c'était possible de le faire depuis l'interface Web mais je suis contraint d'utiliser uniquement les lignes de commande donc je cherche actuellement comment faire. | |||
J'ai trouvé la commande <code>flexconnect</code>. Cette commande sert de base à créer des groupes de plusieurs points d'accès et les gérer mais il permet aussi le VLAN Mapping d'après Cisco [https://www.cisco.com/c/en/us/support/docs/wireless/mobility-express/212484-configure-flexconnect-vlan-mappings-on-m.html sur cette page]. Je creuse pour voir si cette possibilité est envisageable. | |||
=== 31/08: === | |||
J'ai commencé par activer la propriété vlan du groupe par défaut de <code>flexconnect</code> avec la commande <code>config flexconnect group default-flexgroup vlan enable</code>. | |||
J'ai associé chaque SSID à un VLAN avec la commande <code>config flexconnect group default-flexgroup wlan-vlan wlan 1 add vlan 2</code> et <code>config flexconnect group default-flexgroup wlan-vlan wlan 2 add vlan 3</code>. | |||
Pour finir sur l'EC, j'ai voulu me connecter à un SSID avec les identifiants "bob" et mot de passe "hello" (ceux qui ont fonctionné lors de mon radtest) et je n'y suis pas parvenu. | |||
= Documents Rendus = | = Documents Rendus = | ||
Ligne 60 : | Ligne 236 : | ||
== Interfaces VLAN == | == Interfaces VLAN == | ||
Fichier de configuration pour la création des interfaces VLAN sous Linux :< | Fichier de configuration pour la création des interfaces VLAN sous Linux : | ||
<code> /etc/network/interfaces </code> | |||
<syntaxhighlight> | |||
source /etc/network/interfaces.d/* | source /etc/network/interfaces.d/* | ||
Ligne 89 : | Ligne 265 : | ||
Script de lancement des serveurs d'identification et des serveurs DHCP | Script de lancement des serveurs d'identification et des serveurs DHCP | ||
<syntaxHighlight> | |||
systemctl restart networking | |||
systemctl restart isc-dhcp-server | |||
freeradius -X -d /etc/freeradius/vlan2/ & | |||
freeradius -X -d /etc/freeradius/vlan3/ & | |||
wait | |||
</syntaxHighlight> | |||
== Fichiers de configuration Radius == | == Fichiers de configuration Radius == | ||
Comme ce sont quasiment les mêmes pour chaque VLAN je vais mettre ceux pour le VLAN 2 et ajouter en commentaires les modifications pour le VLAN 3. | |||
Modifications dans <code>/etc/freeradius/vlan2/sites-enabled/default</code> | |||
<syntaxhighlight> | |||
listen { | |||
ipaddr = 192.168.2.1 # 192.168.3.1 pour VLAN 3 | |||
port = 1812 | |||
type = auth | |||
} | |||
listen { | |||
ipaddr = 192.168.2.1 # 192.168.3.1 pour VLAN 3 | |||
port = 1813 | |||
type = acct | |||
} | |||
</syntaxhighlight> | |||
Modifications dans <code> /etc/freeradius/vlan2/sites-enabled/inner-tunnel </code> | |||
<syntaxhighlight> | |||
listen { | |||
ipaddr = 192.168.2.1 #192.168.3.1 pour VLAN 3 | |||
port = 18120 | |||
type = auth | |||
} | |||
</syntaxhighlight> | |||
== Fichiers de configuration du serveur DHCP == | == Fichiers de configuration du serveur DHCP == | ||
<code>/etc/dhcp/dhcpd.conf</code> : | |||
<syntaxhighlight> | |||
option domain-name-servers ns1.vlan.org, ns2.vlan.org; | |||
---- | ddns-update-style none; | ||
default-lease-time 600; | |||
max-lease-time 7200; | |||
authoritative; | |||
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; | |||
} | |||
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; | |||
} | |||
</syntaxhighlight> | |||
<code>/etc/default/isc-dhcp-server</code> : | |||
<syntaxhighlight> | |||
INTERFACESv4="eth0.3 eth0.2" #br-vlan2 br-vlan3 pour tester le serveur DHCP sur les VMs | |||
INTERFACESv6="" | |||
</syntaxhighlight> | |||
== Commandes en ligne pour configurer le point d'accès == | == Commandes en ligne pour configurer le point d'accès == | ||
<syntaxHighlight> | |||
(Cisco Controller) >config sysname WLC1 | |||
(Cisco Controller) >config prompt WLC1 | |||
(WLC1) >config wlan create 1 G1 G1 | |||
(WLC1) >config wlan create 2 G2 G2 | |||
(WLC1) >config radius auth add 1 192.168.2.1 1812 ascii testing123 | |||
(WLC1) >config radius auth add 2 192.168.3.1 1812 ascii testing123 | |||
(WLC1) >config wlan radius_server auth add 1 1 | |||
(WLC1) >config wlan radius_server auth add 2 2 | |||
(WLC1) >config wlan security wpa enable 1 | |||
(WLC1) >config wlan security wpa enable 2 | |||
(WLC1) >config wlan security wpa wpa2 enable 1 | |||
(WLC1) >config wlan security wpa wpa2 enable 2 | |||
(WLC1) >config wlan security wpa wpa1 disable 1 | |||
(WLC1) >config wlan security wpa wpa1 disable 2 | |||
(WLC1) >config wlan broadcast-ssid enable 1 | |||
(WLC1) >config wlan broadcast-ssid enable 2 | |||
(WLC1) >config flexconnect group default-flexgroup vlan enable | |||
(WLC1) >flexconnect group default-flexgroup wlan-vlan wlan 1 add vlan 2 | |||
(WLC1) >flexconnect group default-flexgroup wlan-vlan wlan 2 add vlan 3 | |||
(WLC1) >config wlan enable 1 | |||
(WLC1) >config wlan enable 2 | |||
(WLC1) >save config | |||
</syntaxHighlight> |
Version actuelle datée du 31 août 2025 à 19:03
Objectifs
A la base il vous est demandé d'implanter 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 cisco autonome de type 1600 tournant sous un IOS cisco classique mais un point d'accès cisco 2802 intégrant un contrôleur "Mobility Express" ;
- 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, 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
. Il vous est demandé d'effectuer cette configuration en utilisant uniquement les commandes en ligne du contrôleur "Mobility Express" sans jamais utiliser l'interface Web.
Un point d'accès cisco 2802 possède deux modes : le mode point d'accès et le mode contrôleur (Mobility Express). Commencez par remettre le point d'accès en configuration usine puis connectez-vous sur le port série, n'utilisez pas le configurateur initial. Vérifiez avec la commande sh version
que le point d'accès est bien en mode contrôleur.
Quelques commandes du mode contrôleur sont données ci-dessous :
(Cisco Controller) config sysname WLC1 (Cisco Controller) config prompt WLC1 (WLC1) config interface create vlang1 101 (WLC1) config interface port vlang1 1 (WLC1) config interface address dynamic-interface vlang1 10.60.1.10 255.255.255.0 10.60.1.1 (WLC1) config wlan create 1 "SSID G1" SSID_G1 (WLC1) config wlan interface 1 vlang1 (WLC1) show wlan summary (WLC1) config radius auth add 1 193.48.57.164 1812 ascii <secret_group1> (WLC1) config wlan radius_server auth add 1 1 (WLC1) config wlan aaa-override enable 1 (WLC1) config wlan security wpa enable 1 (WLC1) config wlan security wpa wpa2 enable 1 (WLC1) config wlan security wpa wpa1 disable 1 (WLC1) config wlan security wpa wpa2 ciphers aes enable 1 (WLC1) config wlan security wpa wpa2 ciphers tkip disable 1 (WLC1) config wlan security wpa akm 802.1x enable 1 (WLC1) config wlan broadcast-ssid enable 1 (WLC1) config wlan enable 1 (WLC1) save config
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 1 septembre pour réaliser le travail demandé. Il vous est explicitement demandé de produire un travail régulier le plus tôt possible *et* de faire des rapports réguliers (obligatoirement au travers de ce Wiki) à votre encadrant. S'y prendre à la dernière minute avec un seul retour à quelques jours de la date limite est une garantie d'échec.
Matériel nécessaire
Le matériel nécessaire est constitué :
- d'un PC sous Linux pour l'implantation du serveur d'identification (à votre charge) ;
- 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 cisco 2802 avec le système Mobility Express, ce point d'accès est fourni par l'encadrant.
Travail réalisé
18/07:
A ce jour j'ai crée mes interfaces VLAN (fichier dans les documents rendus) qui ont pour adresses 192.168.2.1 pour le VLAN 2 et 192.168.3.1 pour le VLAN 3 et ils sont bien au dessus de l'interface eth0 comme on peut le voir avec ce ip a:
Je suis passé à la configuration de mes instances freeradius. Pour cela j'ai copié la configuration de base 2 fois (une par VLAN) pour bien différencier chaque instances pour chaque VLAN. Je travaille donc dans /etc/freeradius/vlan2/
et /etc/freeradius/vlan3/
.
Pour que mes instances fonctionnent, j'ai modifié les adresses et les ports de /etc/freeradius/vlan2/sites-enabled/default
comme ceci:
listen {
ipaddr = 192.168.2.1
port = 1812
type = auth
}
listen {
ipaddr = 192.168.2.1
port = 1813
type = acct
}
Puis dans etc/freeradius/vlan2/sites-enabled/inner-tunnel
:
listen {
ipaddr = 127.0.0.1
port = 18130
type = auth
}
J'ai aussi réalisé la même chose pour les fichier du VLAN 3 en remplacant les adresses IP par celles du VLAN 3 et le port dans inner-tunnel par 18130 pour pas que les deux instances écoutent le même port.
Ainsi, j'arrive à lancer mes deux instances en parallèles comme le montre cette capture :
Pour obtenir cette capture j'ai lancé les deux instances en mode debug avec les commandes freeradius -X -d /etc/freeradius/vlan2
et freeradius -X -d /etc/freeradius/vlan3
. Maintenant que nos instances freeradius fonctionnent, je suis passé à la configuration des serveurs DHCP.
Après avoir installé le package isc-dhcp-server
, j'ai crée 2 fichiers .conf qui sont /etc/dhcp/dhcpd-vlan2.conf
et /etc/dhcp/dhcpd-vlan3.conf
.
Dans ces fichiers, j'y ai renseigné dans quel sous réseau ils doivent fonctionner.
Ensuite, pour lancer les deux services j'ai crée deux fichiers systemd: /etc/systemd/system/dhcpd-vlan2.service
et /etc/systemd/system/dhcpd-vlan2.service
dans lesquels j'indique le type de service (en l'occurence le type forking
car je vais en lancer 2 en parallèle) et la commande à l'execution qui est (pour le serveur destiné au VLAN 2 par exemple): ExecStart=/usr/sbin/dhcpd -4 -q -cf /etc/dhcp/dhcpd-vlan2.conf -pf /run/dhcp-server/dhcpd-vlan2.pid eth0.2
.
Après un systemctl daemon-reload
et systemctl enable dhcpd-vlan2
(pareil pour dhcpd-vlan3
), je lance mes services avec un systemctl start dhcpd-vlan2
(pareil pour celui du VLAN 3) et en regardant leur état avec un systemctl status dhcpd-vlan2
(et vlan3) on voit bien que mes serveurs tournent correctement en parallèle:
Pour être sûr que mes serveurs écoutent sur le bon port,
Mes deux serveurs écoutent bien sur le port 67 qui est le port par défaut de dhcp donc tout à l'air bon.
28/07:
Après un premier retour du professeur encadrant j'ai apporté des modifications sur ce que j'avais fait.
Premièrement j'ai revu mes instances freeradius pour qu'ils écoutent uniquement sur leurs VLANs respectifs car ils écoutaient tous les deux sur 127.0.0.1. Maintenant chaques instances écoutent sur leur VLAN respectifs uniquement et utilisent le port 18120 Comme on peut le voir ici:
Ensuite, il s'avère que je n'avais pas bien compris l'énoncé concernant la partie DHCP car je pensais qu'il fallait 2 serveurs DHCP alors qu'il en fallait qu'un seul qui gère les deux VLANs, j'ai donc supprimé un serveur pour n'en utiliser qu'un seul et j'ai rajouté une deuxième section subnet
où j'y ai mis le deuxième VLAN et j'ai précisé les interfaces que je vais utiliser dans /etc/default/isc-dhcp-server
.
De plus, j'ai voulu tester si mon freeradius fonctionne avec un radtest
en ajoutant un client dans /etc/freeradius/vlan2/clients.conf
et un user dans /etc/freeradius/vlan2/users
mais j'ai en boucle l'erreur No Auth-Type found
même en précisant le Auth-Type dans users
et ça me bloque.
Pour continuer, j'ai aussi voulu tester mon serveur DHCP en essayant d'obtenir une adresse IP par DHCP à partir d'une VM relié à mon VLAN mais je bloque aussi et je remarque qu'avec un dhclient
, la VM envoye bien un paquet DHCPDISCOVER que j'arrive à capter depuis ma machine réelle mais ma machine n'envoie pas de DHCPOFFER à ma VM. Pourtant mon serveur DHCP tourne bien sans voir de problèmes dans les logs.
Pour finir ce point, j'avais aussi entammé la configuration du Cisco que j'ai remis en version d'usine en appuyant pour le bouton MODE pendant 20 secondes. Puis le Cisco s'est bien remis en version d'usine mais il était en version point d'accès et je n'ai pas réussi à le passer en mode controlleur depuis minicom. Je suis donc parti pour lui flasher le firmware "Mobility Express" trouvable sur le site officiel de Cisco. J'ai transféré le firmware au point d'accès avec un serveur tftp
puis j'ai écrit le firmware dans la mémoire du Cisco mais je l'ai sûrement mal fait puisque le Cisco redémarre en boucle car il n'arrive pas à charger le firmware, j'ai cette erreur en boucle :
UBI: attaching mtd1 to ubi0
UBIFS error (pid 0): init_constants_early: too few LEBs (1), min. is 17
UBIFS error (pid 0): ubifs_mount: Error reading superblock on volume 'ubi:!
L'erreur "too few LEBs" est très étonnante car la partition dédiée est de 100Mo ce qui est très largement suffisant pour acceuillir 17 LEBs (d'après Cisco, 17 LEBs correspond à 2Mo).
02/08:
Après avoir cherché pourquoi mes radtest
ne fonctionnaient pas, j'ai décidé de repartir de zéro dans la configuration de mes instances freeradius en repartant de la base de la configuration "3.0" et en suivant le conseil du professeur encadrant en regardant les travaux de l'élève de l'année précédente et c'est un succès comme le montrent ces captures:
Je pense que mon problème viendrait du fait que j'ai voulu partir d'une configuration trop minimale et j'ai dû supprimer des choses que je n'aurais pas dû.
13/08:
J'ai beaucoup cherché concernant le point d'accès et il s'avère que je l'ai bien briqué donc à part un retour SAV chez Cisco il n'y a rien à faire. J'en ai commandé un nouveau que j'ai reçu aujourd'hui et sur lequel j'ai réussi à changer le mode en Mobility Express (en téléversant le firmware par tftp
).
Concernant mon serveur DHCP, il s'avère qu'il manquait des étapes à réaliser pour rendre mon bridge fonctionnel pour ma VM: J'ai associé une adresse IP au bridge et non à l'interface du VLAN. J'ai ajouté dans /etc/default/isc-dhcp-server
mon bridge dans INTERFACESv4
. J'ai aussi mis mes interfaces en PROMISC
pour autoriser le trafic de tout les paquets.
Ainsi, en lancant ma VM avec la commande suivante : qemu-system-x86_64 -enable-kvm -netdev bridge,id=net0,br=br-vlan2 -device e1000,netdev=net0 -hda /var/lib/libvirt/images/vm-vlan2.qcow2 -m 1024
, J'arrive à obtenir une adresse IP par DHCP avec un dhclient
Enfin, la dernière étape à faire sur le PC, j'ai ajouté les règles iptables suivantes pour permettre à ma VM d'accèder à internet:
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
iptables -A FORWARD -i br-vlan2 -o wlan0 -j ACCEPT
iptables -A FORWARD -i wlan0 -o br-vlan2 -m state --state RELATED,ESTABLISHED -j ACCEPT
Ainsi, ma VM a maintenant accès à internet.
On peut aussi vérifier que la résolution DNS fonctionne:
16/08:
On peut aussi voir que ce que j'ai fait précédement pour le VLAN2 fonctionne aussi pour le VLAN3 en faisant un bridge relié à eth0.3 et avec les règles iptables adaptés à eth0.3:
Mes bridges ont été faits de la manière suivante:
Pour le VLAN 2 :
ip link add name br-vlan2 type bridge
brctl addif br-vlan3 eth0.2
ip link set eth0.2 master br-vlan2
ip addr add 192.168.2.1/24 dev br-vlan2
ip link set br-vlan2 up
Pour le VLAN 3 :
ip link add name br-vlan3 type bridge
brctl addif br-vlan3 eth0.3
ip link set eth0.3 master br-vlan3
ip addr add 192.168.3.1/24 dev br-vlan3
ip link set br-vlan3 up
18/08:
La dernière étape consiste à configurer le point d'accès pour déployer nos SSID et avoir accès à internet.
Comme j'ai briqué le point d'accès fourni par le professeur encadrant, j'en ai acheté un autre. Avec un sh version
j'ai obtenu principalement ceci:
[...]
AP Running Image : 8.10.190.0
Primary Boot Image : 8.10.190.0
Backup Boot Image : 0.0.0.0
[...]
Ceci montre que mon point d'accès est en version 8.10.190 et n'est pas en mode Mobility Express. Je lui ai téléversé par tftp le fichier tar qui contient la conversion en mode Mobility Express et entamé la conversion avec la commande ap-type mobility-express tftp://192.168.1.10/AIR-AP2800-K9-ME-8-10-196-0.tar
. Après un certain temps, le point d'accès redémarre et je fais à nouveau un sh version
et j'obtiens ceci:
[...]
AP Running Image : 8.10.190.0
Primary Boot Image : 8.10.190.0
Backup Boot Image : 8.10.196.0
Primary Boot Image Hash:
Backup Boot Image Hash:
AP Image type : MOBILITY EXPRESS IMAGE
AP Configuration : NOT MOBILITY EXPRESS CAPABLE
[...]
Il s'avère que le firmware mobility express se situe en image de backup, pour booter sur la bonne image, il suffit de changer la variable BOOT=part1
par BOOT=part2
dans le menu de pré-boot.
Après un dernier redémarrage mon point d'accès démarre bien en mode Mobility Express. Je le sais car l'invite de commande est maintenant de la forme (Cisco Controller) >
.
J'ai crée 2 SSID "G1" et "G2" et ils sont visibles depuis mon téléphone et j'ai activé le WPA2, on me demande un identifiant et un mot de passe pour m'y connecter.
J'ai ajouté mes instances freeradius pour chaque SSID. Les commandes envoyés sont dans la partie "Commandes en ligne pour configurer le point d'accès" du wiki.
Concernant les VLANs, la commande config interface create
n'est pas reconnue par mon point d'accès. Quand je fais un show interface summary
je vois que le Cisco possède 2 interfaces : "management" (l'interface de base) et "virtual". Je n'arrive pas à ajouter d'interface. En faisant des recherches j'ai vu que c'était possible de le faire depuis l'interface Web mais je suis contraint d'utiliser uniquement les lignes de commande donc je cherche actuellement comment faire.
J'ai trouvé la commande flexconnect
. Cette commande sert de base à créer des groupes de plusieurs points d'accès et les gérer mais il permet aussi le VLAN Mapping d'après Cisco sur cette page. Je creuse pour voir si cette possibilité est envisageable.
31/08:
J'ai commencé par activer la propriété vlan du groupe par défaut de flexconnect
avec la commande config flexconnect group default-flexgroup vlan enable
.
J'ai associé chaque SSID à un VLAN avec la commande config flexconnect group default-flexgroup wlan-vlan wlan 1 add vlan 2
et config flexconnect group default-flexgroup wlan-vlan wlan 2 add vlan 3
.
Pour finir sur l'EC, j'ai voulu me connecter à un SSID avec les identifiants "bob" et mot de passe "hello" (ceux qui ont fonctionné lors de mon radtest) et je n'y suis pas parvenu.
Documents Rendus
Interfaces VLAN
Fichier de configuration pour la création des interfaces VLAN sous Linux :
/etc/network/interfaces
source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
auto eth0.2 # VLAN2
iface eth0.2 inet static
address 192.168.2.1
netmask 255.255.255.0
vlan-raw-device eth0
auto eth0.3 # VLAN3
iface eth0.3 inet static
address 192.168.3.1
netmask 255.255.255.0
vlan-raw-device eth0
Script de lancement
Script de lancement des serveurs d'identification et des serveurs DHCP
systemctl restart networking
systemctl restart isc-dhcp-server
freeradius -X -d /etc/freeradius/vlan2/ &
freeradius -X -d /etc/freeradius/vlan3/ &
wait
Fichiers de configuration Radius
Comme ce sont quasiment les mêmes pour chaque VLAN je vais mettre ceux pour le VLAN 2 et ajouter en commentaires les modifications pour le VLAN 3.
Modifications dans /etc/freeradius/vlan2/sites-enabled/default
listen {
ipaddr = 192.168.2.1 # 192.168.3.1 pour VLAN 3
port = 1812
type = auth
}
listen {
ipaddr = 192.168.2.1 # 192.168.3.1 pour VLAN 3
port = 1813
type = acct
}
Modifications dans /etc/freeradius/vlan2/sites-enabled/inner-tunnel
listen {
ipaddr = 192.168.2.1 #192.168.3.1 pour VLAN 3
port = 18120
type = auth
}
Fichiers de configuration du serveur DHCP
/etc/dhcp/dhcpd.conf
:
option domain-name-servers ns1.vlan.org, ns2.vlan.org;
ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
authoritative;
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;
}
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;
}
/etc/default/isc-dhcp-server
:
INTERFACESv4="eth0.3 eth0.2" #br-vlan2 br-vlan3 pour tester le serveur DHCP sur les VMs
INTERFACESv6=""
Commandes en ligne pour configurer le point d'accès
(Cisco Controller) >config sysname WLC1
(Cisco Controller) >config prompt WLC1
(WLC1) >config wlan create 1 G1 G1
(WLC1) >config wlan create 2 G2 G2
(WLC1) >config radius auth add 1 192.168.2.1 1812 ascii testing123
(WLC1) >config radius auth add 2 192.168.3.1 1812 ascii testing123
(WLC1) >config wlan radius_server auth add 1 1
(WLC1) >config wlan radius_server auth add 2 2
(WLC1) >config wlan security wpa enable 1
(WLC1) >config wlan security wpa enable 2
(WLC1) >config wlan security wpa wpa2 enable 1
(WLC1) >config wlan security wpa wpa2 enable 2
(WLC1) >config wlan security wpa wpa1 disable 1
(WLC1) >config wlan security wpa wpa1 disable 2
(WLC1) >config wlan broadcast-ssid enable 1
(WLC1) >config wlan broadcast-ssid enable 2
(WLC1) >config flexconnect group default-flexgroup vlan enable
(WLC1) >flexconnect group default-flexgroup wlan-vlan wlan 1 add vlan 2
(WLC1) >flexconnect group default-flexgroup wlan-vlan wlan 2 add vlan 3
(WLC1) >config wlan enable 1
(WLC1) >config wlan enable 2
(WLC1) >save config