Déployer le wifi (WPA2-Enterprise) dans un réseau Se3

De Wiki Dane (ex wikitice)
Aller à : navigation, rechercher

Introduction

Cette article décrit comment déployer le wifi au sein d'un réseau Samba Edu 3. Ce déploiement s'appuie sur une authentification 802.1X (WPA2-Enterprise) des utilisateurs auprès d'un serveur Radius (solution libre freeradius) et la solution WPA2-Enterprise retenue s'appuie sur la méthode EAP PEAP/MSCHAPV2 qui permet à des utilisateurs (ou groupe d'utilisateurs) du réseau Se3 de s'authentifier de façon sécurisée avec leurs identifiants Se3.

Le principe

Un (ou plusieurs) points d'accés Wifi sont reliés au réseau pédagogique Samba Edu 3.

Les utilisateurs qui disposent d'un équipement wifi (tablette, smartphone, ordinateur portable, ...) se connectent au réseau pédagogique et accède à Internet en s'authentifiant de façon sécurisée (WPA2-Enterprise), avec leurs identifiants Se3, auprès d'un serveur Radius qui se charge de consulter l'annuaire ldap du se3 afin d'autoriser ou non cet utilisateur à accéder au wifi.

Le matériel nécessaire

  • Un serveur Se3 (d'IP 172.20.1.10 dans cet article).
  • Un PC qui jouera le rôle de serveur Radius (d'IP 172.20.1.45 dans cet article)
  • Un (ou plusieurs) point(s) d'accès Wifi (d'IP 172.20.1.50 dans cet article) supportant le protocole Radius et le WPA2-Enterprise (modèle utilisé dans cet article: Linksys LAPN300 disposant d'un port Ethernet 1 Gbs et d'un débit Wifi théorique de 300 Mbs, supportant toutes les normes wifi sauf AC).

Installation du serveur Radius

Le serveur Radius s'appuie sur la solution libre freeradius installé et configuré sur un serveur Debian Jessie dédié mais l'article est très certainement transposable à un serveur sous Debian Wheezy ou sous Debian Squeeze (il est donc envisageable d'intégrer freeradius à un serveur Se3 Squeeze ou à un serveur Se3 Wheezy).

Sur le PC qui deviendra serveur Radius :

  • Installer un serveur Debian Jessie (durant l'installation, n'installer que les utilisateurs de base et le service ssh).
  • Spécifier une adresse IP fixe à votre serveur freeradius :
nano /etc/network/interfaces

Adapter à votre réseau, les lignes suivantes :

auto eth0
iface eth0 inet static
address 172.20.1.45
netmask 255.255.0.0
gateway 172.20.1.1

Redémarre l'interface réseau :

systemctl restart networking.service

Dans la suite de cet article, toutes les commandes lancées sur le serveur freeradius le sont en tant que root

  • Installer ensuite le service freeradius :
apt-get update
apt-get install freeradius freeradius-ldap

Configuration du module ldap du serveur freeradius

Il faut désormais configurer le module ldap du serveur freeradius afin qu'il puisse consulter l'annuaire ldap du se3. Pour cela :

nano /etc/freeradius/modules/ldap

Modifier uniquement les lignes suivantes, en les adaptant à votre réseau :

ldap {
	server = "172.20.1.10"
	identity = "cn=admin,ou=lyc-demo,ou=ac-versailles,ou=education,o=gouv,c=fr"
	password = "mdp_admin_annuaire_ldap"
	basedn = "ou=People,ou=lyc-demo,ou=ac-versailles,ou=education,o=gouv,c=fr"
	tls {
		start_tls = yes
		require_cert = "never"
	}

}

Attention !
mdp_admin_annuaire_ldap désigne le mot de passe de l'administrateur de l'annuaire ldap du se3 (à ne pas confondre avec celui des comptes admin ou adminse3 du se3 ...).
En effet, les comptes admin et adminse3 du se3 ne disposent pas des droits suffisants sur l'annuaire ldap pour récupérer le mot de passe de l'utilisateur qui cherche à s'authentifier … (il faudrait pour cela modifier le fichier /etc/ldap/slapd.conf et y configurer des droits de lecture sur les attributs "mots de passe" de l'arbre, pour le compte admin ou adminse3)
Ensuite, limiter les droits de lecture sur ce fichier de configuration (qui contient en clair le mot de passe de l'administrateur de l'annuaire ldap ...)

chmod 600 /etc/freeradius/modules/ldap

Remarques :

Il faudra peut-être changer le nombre de connexions ldap au serveur si trop de monde utilise le Wifi. Par défaut ce nombre est fixé à 5. Cette valeur se change dans le fichier /etc/freeradius/modules/ldap .

ldap_connections_number = 50


- Il est possible de récupérer le mot de passe de l'administrateur de l'annuaire ldap à l'adresse web suivante (le mot de passe du compte admin du se3 est demandé) :

http://172.20.1.10:909/setup

- Le module ldap de freeradius a été configuré afin que les échanges entre freeradius et l'annuaire ldap du se3 soient sécurisés via TLS.

Paramétrer freeradius pour autoriser puis authentifier les utilisateurs de l'annuaire ldap du se3  

  • Sur le serveur freeradius, éditer le fichier default :
nano /etc/freeradius/sites-availaible/default
  • Puis décommenter uniquement la ligne ldap de la session authorize :
authorize
{
...
ldap
...
}
  • Faire la même modification pour le fichier inner-tunnel :
nano /etc/freeradius/sites-available/inner-tunnel
  • Comme pour le fichier défault, décommenter uniquement la ligne ldap de la session authorize.

Remarque :
Ne pas décommenter ldap dans la rubrique « authenticate » car l'authentification ldap ne fonctionne pas avec PEAP. En effet, l'authentification d'un utilisateur ne peut fonctionner avec le module ldap que si le mot de passe saisi par l'utilisateur est en clair (ce qui est le cas avec la commande de test radtest mais pas dans la réalité, avec PEAP). Comment fonctionne alors l'authentification avec PEAP ? En fait, par défaut, le module mschap est présent dans les deux rubriques : authorize et authenticate. Pendant la phase d'autorisation, le module mschap récupère le mot de passe de l'utilisateur présent dans l'annuaire ldap grâce au compte administrateur de l'annuaire puis se charge de l'authentification en le comparant à celui saisi par l'utilisateur sur son équipement wifi.

Limiter l'accès wifi à un groupe d'utilisateurs de l'annuaire ldap du se3

Jusqu'à présent, tous les utilisateurs de l'annuaire ldap du se3 sont autorisés à utiliser les bornes wifi de l'établissement. Si cette configuration ne pose pas de problème lorsque l'établissement possède du très haut débit vers l'extérieur (fibre optique), elle peut par contre se révéler dramatique (effondrement du débit paralysant la navigation web pour l'ensemble des utilisateurs du réseau ...) lorsque l'établissement ne possède qu'un débit ADSL.

Sous freeradius, il est possible de filtrer les utilisateurs selon le groupe auquel il appartient. Pour cela, créer le filtre ci-dessous, basé sur l'attribut membreUid (cet attribut permet de récupérer dans l'annuaire ldap du se3 le groupe auquel appartient un utilisateur).

nano /etc/freeradius/modules/ldap

Décommenter puis compléter les paramètres suivants :

groupname_attribute="cn" 
groupmembership_attribute="memberUid" 
groupmembership_filter = "(memberUid=%{%{Stripped-User-Name}:-%{User-Name}})" 
  • Puis éditer le fichier default :
nano /etc/freeradius/sites-available/default
  • et y définir les restrictions d'accès ; par exemple, pour que seuls les professeurs et les administrateurs du se3 soient autorisés à utiliser la borne wifi, ajouter à la fin de la rubrique post-auth les lignes suivantes, en les adaptant à votre réseau :
post-auth {
        if (LDAP-Group == "cn=Profs,ou=Groups,ou=lyc-demo,ou=ac-versailles,ou=education,o=gouv,c=fr") {
                noop
        }
        elsif (LDAP-Group == "cn=admins,ou=Groups,ou=lyc-demo,ou=ac-versailles,ou=education,o=gouv,c=fr") {
                noop
        }
        else {
                reject
        }
}
  • Refaire les mêmes modifications mais dans le fichier inner-tunnel :
nano /etc/freeradius/sites-available/inner-tunnel
  • Renseigner la rubrique post-auth de la même façon que pour le fichier default précédent.


Remarque :
A la place de spécifier ces restrictions dans les fichiers default et inner-tunnel, il est aussi possible de les renseigner uniquement dans le fichier users de cette façon :

nano /etc/freeradius/users  

Puis ajouter les lignes suivantes, en les adaptant à votre réseau :

DEFAULT Ldap-Group == "cn=Profs,ou=Groups,ou=lyc-demo,ou=ac-versailles,ou=education,o=gouv,c=fr"
DEFAULT Ldap-Group == "cn=admins,ou=Groups,ou=lyc-demo,ou=ac-versailles,ou=education,o=gouv,c=fr"
DEFAULT Auth-Type := Reject 

L'utilisateur freerad doit pouvoir lire ce fichier, il faut donc changer les droits du fichier qui appartient par défaut à root:root

chown root:freerad /etc/freeradius/users

Tester l'authentification des utilisateurs de l'annuaire ldap du se3 

Avant d'aller plus loin et de configurer la borne wifi, il est préférable de vérifier que l'autorisation et l'authentification des utilisateurs est fonctionnelle. Pour cela

  • Stopper le service freeradius :
systemctl stop freeradius.service
  • Relancer freeradius mais en mode « débuggage » :
freeradius -X 
  • Ouvrir un autre terminal puis tester une authentification avec la commande radtest et avec le compte d'un utilisateur du se3 (un compte professeur par exemple):
radtest USER_PROF PASSWORD_PROF localhost 0 testing123

La requête devrait se terminer par un « Access-Accept » indiquant que la demande est acceptée.

  • Faire ensuite un test avec un mot de passe erroné pour cet enseignant :
radtest USER_PROF PASSWORD_PROF_ERRONE localhost 0 testing123

La requête devrait se terminer par un « Access-Reject » indiquant que la demande de cet enseignant est rejetée.

  • Faire également un test avec un compte qui n'est pas dans l'annuaire du se3 et vérifier que freeradius rejette la demande :
radtest USER_ERRONE PASSWORD localhost 0 testing123
  • Si des restrictions ont été crées sur des groupes d'utilisateurs, vérifier que ces dernières sont aussi fonctionnelles. Par exemple, si seuls les enseignants sont autorisés à utiliser le wifi, vérifier que la demande d'un élève est refusé.
radtest USER_ELEVE PASSWORD_ELEVE localhost 0 testing123
  • Stopper le mode débuggage de freeradius avec la séquence de touches : "CRTL" et "C"

Remarque :
Il est inutile de poursuivre l'article tant que les tests précédents ne sont pas fonctionnels ...

Configurer freeradius pour accepter les communications avec la (ou les) borne(s) wifi 

La communication entre le serveur freeradius et l'annuaire ldap du se3 est fonctionnelle : il reste désormais à configurer la communication entre le point d'accès wifi et le serveur freeradius :

Utiliser PEAP

Choisir PEAP pour sécuriser l'authentification des utilisateurs. Pour cela :

nano /etc/freeradius/eap.conf

Choisir PEAP comme méthode EAP par défaut :

default_eap_type=peap

Indiquer à freeradius les bornes wifi qui peuvent communiquer avec lui

Sur le serveur freeradius, éditer le fichier clients.conf :

nano /etc/freeradius/clients.conf

Afin que freeradius accepte les communications avec la borne wifi, ajouter :

client 172.20.1.50 {
      secret = mdp_borne_freeradius
      shortname = LinksysSMB24G
}

Remarques :

  • shortname contient le SSID de la borne wifi (cet SSID est récupérable via l'interface d'administration de la borne wifi).
  • secret contient le secret partagé entre les bornes wifi et le serveur freeradius ; il devra également être renseigné dans l'interface d'administration web de chaque borne wifi (choisir un secret différent de "testing123" qui est proposé par défaut par freeradius pour réaliser des tests de débuggage avec la commande radtest...)

Configurer les bornes wifi

  • Relier la borne wifi à un port 1Gbs d'un commutateur du réseau pédagogique.
  • Au premier démarrage, l'IP de la borne wifi est attribué par défaut par le DHCP su Se3 : via l'interface web du se3, réserver une adresse IP à cette borne wifi (172.20.1.50 dans cet article) puis redémarrer la borne wifi afin que IP que vous lui avez réservé lui soit attribuée.
  • Se rendre sur l'interface web d'administration de la borne wifi :
http://172.20.1.50


  • Saisir les identifiants par défaut de la borne wifi (admin/admin) puis changer de suite le mot de passe d'admin :

LINKSYS admin.png

  • Se reconnecter à la page d'administration web de la borne wifi, avec le nouveau mot de passe admin.

LINKSYS LOGIN.png

  • Dans Configuration -> Wirelesse -> security, choisir le mode WPA2 Enterprise puis renseigner les paramètres de votre serveur freeradius (son ip et le "secret" renseigné précédemment dans le fichier clients.conf) :

LINKSYS WPA2.png

  • Sauver les modifications réalisées.
  • Relancer freeradius en mode débuggage :
freeradius -X

Le déploiement de la borne wifi est terminée. Reste à tester le dispositif avec un équipement wifi.

Configurer les équipements wifi

Cela dépend évidemment des équipements ...
Par exemple, pour des tablettes et smartphone sous Android :

  • Se rendre dans la rubrique wifi des paramètres système.
  • Dans la liste des points d'accès wifi, cliquer sur le nom de la borne wifi déployée.
  • Saisir l'identifiant et le mot de passe d'un utilisateur de l'annuaire ldap du se3 autorisé à utiliser le wifi.
  • Puis cocher « Afficher les options avancées » et choisir :

- Méthode EAP : PEAP
- Authentification phase 2 : MSCHAPV2
Si l'accès à internet passe par un serveur proxy (c'est la cas si la passerelle est un serveur AMON), le renseigner manuellement :
- Paramètres proxy : manuel. Puis renseigner les paramètres proxy de votre réseau. On pourra se reporter au guide suivant :
Guide pour configurer le proxy d'Amon sur Androïd

La connexion se fait également très simplement sous Tablette/Téléphone sous IOS et Windows Phone. La connexion de portables sous Windows 7 Pro s'avère plus compliquée: un message d'erreur indique que les logins/mdp sont incorrects ou qu'il y a un problème avec le certificat de sécurité. Il faut alors configurer manuellement la connexion à chaque borne en suivant ce Protocole

- Paramètres IP : Protocole DHCP.

Enregistrer vos modifications.
Remarques:

  • En principe, l'utilisateur ne doit renseigner ses identifiants qu'une seule fois (pour chaque borne wifi de l'établissement ...).
  • Le se3 joue le rôle de serveur DHCP pour les équipements wifi : dans le module DHCP de l'interface web du Se3, il faut donc configurer une plage d'adresses IP suffisante pour l'ensemble des équipements wifi du réseau pédagogique. Il est aussi possible de réserver l'adresse IP des équipements wifi.

Valider le déploiement

  • Sur le serveur freeradius (lancé en mode "débuggage"), vérifier que la demande d'authentification de l'utilisateur est acceptée.
  • Vérifier que l'équipement wifi (tablette ici) accède bien à Internet.
  • Les équipements wifi donnent en général des informations sur le niveau de sécurité de la connexion wifi : Androïd informe par exemple l'utilisateur que la connexion est sécurisée par 802.1X : le vérifier sur votre équipement wifi.
  • Refaire des tests sur l'équipement wifi avec un mot de passe erroné, un utilisateur erroné et le compte d'un élève si l'accès wifi a été restreint aux enseignants.

Si tout est fonctionnel, arrêter le mode débuggage de freeradius ("CTRL" + "C") puis démarrer le service freeradius :

systemctl start freeradius.service

Se prévenir des attaques de l'homme du milieu [non fonctionnel, les certificats par défaut de freeradius sont-ils valides ? faut-il les recréer ?]

Dans cet article, l'authentification des utilisateurs est basé sur la norme 802.1X qui assure une authentification sécurisée des utilisateurs. Il existe plusieurs type d'authentification EAP (WPA2 Enterprise) :

  • Celle déployée dans l'article : PEAP (ou son équivalent EAP-TTLS) qui utilise un système de clé publique pour créer un tunnel TLS pour sécuriser l'authentification de l'utilisateur. L'avantage de PEAP par rapport à EAP-TTLS est d'être présent nativement sur les systèmes Microsoft et Cisco. Par contre, EAP-TTLS est légèrement plus sécurisé que PEAP car il ne diffuse pas le nom de l'utilisateur en clair.
  • EAP-TLS où le serveur et le client possèdent chacun leur certificat pour vérifier mutuellement leur identité (contrairement à PEAP ou son équivalent EAP-TTLS où seul l'utilisateur peut vérifier l'identité du serveur). Si EAP-TLS est plus sécurisé que PEAP, EAP-TLS est par contre plus contraignant à déployer car il nécessite de créer un certificat pour chaque utilisateur du réseau en mettant en place un IGC (système de gestion de clés), assez lourd et contraignant à mettre en oeuvre.

Par contre, dans PEAP (ou son équivalent EAP-TTLS), si l'équipement wifi ne dispose pas du certificat d'autorité pour vérifier l'identité du serveur Freeradius, l'utilisateur est alors vulnérable à des attaques de l'homme du milieu (l'utilisateur pense s'identifier sur une borne wifi de l'établissement alors qu'en réalité il envoie ses identifiants sur une "borne wifi/freeradius pirate" portant le même SSID que celui de l'établissement ...).

Il est toutefois possible de protéger l'utilisateur de ces attaques en exigeant de lui de télécharger le certificat d'autorité pour le serveur Freeradius. Dans le répertoire /etc/freeradius/cert, on constate que le certificat d'autorité de freeradius pointe sur :

/etc/ssl/certs/ca-certificates.crt

Pour inciter les utilisateurs à le faire, ce certificat devra être facilement accessible, par exemple déposé sur un partage en lecture seule d'un serveur Owncloud ou d'un ENT.

On peut envisager une procédure assez simple du type :

  • saisir sur leur tablette/smartphone l'url du partage contenant le certificat d'autorité du serveur freeradius.
  • cliquer sur le certificat pour lancer son téléchargement.
  • se rendre dans les paramètres avancés de l'équipement wifi : dans le menu certificat CA, sélectionner le nom du certificat d'autorité téléchargé.
  • enregistrer la modification.

Désormais, l'équipement wifi vérifiera l'identité du serveur Freeradius avant de lui envoyer les identifiants de l'utilisateur et ce dernier sera ainsi protégé des attaques man-in-the-middle.

Exemple d'utilisation dans un cadre pédagogique

Les salles de classe des établissements sont de plus en plus équipés de vidéo-projecteur ou de VPI de la marque Epson : ces derniers peuvent en général être reliés au réseau pédagogique via un cable ethernet (ou en paramétrant le wifi si le VP en dispose d'un). Il est alors possible :

  • d'utiliser le module DHCP du se3 pour réserver une adresse IP au vidéo-projecteur.
  • qu'un enseignant s'authentifie sur sa tablette ou son smartphone sur la borne wifi.
  • de l'application iProjection sur la tablette ou le smartphone la connecter au vidéo-projecteur.

Cette application est disponible gratuitement sur Google Play (Androïd) ou sur l'App Store (iOS). Elle permet de projetter des documents, des images stockés ou une page web de la tablette et d'annoter des pages avec un stylet.

Presentation de l'application iProjection d'Epson