
Quelques exemples d'organisation du WiFi en entreprise ont dĂ©jĂ Ă©tĂ© dĂ©crits. Ici, je vais dĂ©crire comment j'ai mis en Ćuvre une solution similaire et les problĂšmes auxquels j'ai dĂ» faire face lors de la connexion sur diffĂ©rents appareils. Nous utiliserons le LDAP existant avec les utilisateurs enregistrĂ©s, augmenterons FreeRadius et configurerons WPA2-Enterprise sur le contrĂŽleur Ubnt. Tout semble simple. VoyonsâŠ
Un peu sur les méthodes EAP
Avant de poursuivre la tùche, nous devons décider quelle méthode d'authentification nous utiliserons dans notre solution.
De Wikipedia:
EAP est un cadre d'authentification souvent utilisé dans les réseaux sans fil et les connexions point à point. Le format a été décrit pour la premiÚre fois dans la RFC 3748 et mis à jour dans la RFC 5247.
EAP est utilisĂ© pour sĂ©lectionner une mĂ©thode d'authentification, transmettre des clĂ©s et traiter ces clĂ©s avec des plug-ins appelĂ©s mĂ©thodes EAP. Il existe de nombreuses mĂ©thodes EAP, dĂ©finies avec EAP lui-mĂȘme et publiĂ©es par des fournisseurs individuels. EAP ne dĂ©finit pas la couche liaison, il dĂ©finit uniquement le format du message. Chaque protocole utilisant EAP possĂšde son propre protocole d'encapsulation de messages EAP.
Les mĂ©thodes elles-mĂȘmes :
- LEAP est un protocole propriétaire développé par CISCO. Vulnérabilités trouvées. Il n'est actuellement pas recommandé d'utiliser
- EAP-TLS est bien pris en charge par les fournisseurs de services sans fil. C'est un protocole sécurisé car il succÚde aux standards SSL. La configuration du client est assez compliquée. Vous avez besoin d'un certificat client en plus du mot de passe. Pris en charge sur de nombreux systÚmes
- EAP-TTLS - largement pris en charge sur de nombreux systÚmes, offre une bonne sécurité en utilisant des certificats PKI uniquement sur le serveur d'authentification
- EAP-MD5 est un autre standard ouvert. Offre une sécurité minimale. Vulnérable, ne prend pas en charge l'authentification mutuelle et la génération de clés
- EAP-IKEv2 - basé sur Internet Key Exchange Protocol version 2. Fournit une authentification mutuelle et l'établissement de clés de session entre le client et le serveur.
- PEAP est une solution commune de CISCO, Microsoft et RSA Security en tant que standard ouvert. Largement disponible en produits, offre une trÚs bonne sécurité. Similaire à EAP-TTLS, nécessitant uniquement un certificat cÎté serveur
- PEAPv0/EAP-MSCHAPv2 est la deuxiÚme norme la plus utilisée au monde aprÚs EAP-TLS. Elle est utilisée pour la communication client-serveur par Microsoft, Cisco et Apple. Linux
- PEAPv1/EAP-GTC - Créé par Cisco comme alternative à PEAPv0/EAP-MSCHAPv2. Ne protÚge en aucun cas les données d'authentification. Non pris en charge par Windows OS
- EAP-FAST est une technique développée par Cisco pour corriger les défauts du LEAP. Utilise les informations d'identification d'accÚs protégé (PAC). ComplÚtement inachevé
Malgré cette grande variété, le choix reste limité. La méthode d'authentification requise : une sécurité optimale, une compatibilité avec tous les appareils (Windows 10, macOS, Linux, Android, iOS) et, en réalité, plus c'est simple, mieux c'est. C'est pourquoi le choix s'est porté sur EAP-TTLS associé au protocole PAP.
La question peut se poser : Pourquoi utiliser le PAP ? parce qu'il transmet des mots de passe en clair ?
Oui c'est vrai. La communication entre FreeRadius et FreeIPA s'effectuera de cette maniÚre. En mode débogage, vous pouvez suivre la maniÚre dont le nom d'utilisateur et le mot de passe sont envoyés. Oui, et laissez-les partir, vous seul avez accÚs au serveur FreeRadius.
Vous pouvez en savoir plus sur le travail de l'EAP-TTLS
GratuitRADIUS
Nous allons augmenter FreeRadius à CentOS 7.6. Il n'y a rien de compliqué ici, nous l'installons de maniÚre habituelle.
yum install freeradius freeradius-utils freeradius-ldap -yLa version 3.0.13 est installĂ©e Ă partir des packages. Ce dernier peut ĂȘtre pris
AprÚs cela, FreeRadius fonctionne déjà . Vous pouvez décommenter la ligne dans /etc/raddb/users
steve Cleartext-Password := "testing"Lancez-vous sur le serveur en mode débogage
freeradius -XEt effectuez un test de connexion depuis localhost
radtest steve testing 127.0.0.1 1812 testing123J'ai une réponse Reçu l'ID d'acceptation d'accÚs 115 de 127.0.0.1:1812 à 127.0.0.1:56081 longueur 20, ça veut dire que tout va bien. Poursuivre.
Nous connectons le module ldap.
ln -s /etc/raddb/mods-available/ldap /etc/raddb/mods-enabled/ldapEt nous le changerons tout de suite. Nous avons besoin de FreeRadius pour pouvoir accéder à FreeIPA
mods activés/ldap
ldap {
server="ldap://ldap.server.com"
port=636
start_tls=yes
identity="uid=admin,cn=users,dc=server,dc=com"
password=**********
base_dn="cn=users,dc=server,dc=com"
set_auth_type=yes
...
user {
base_dn="${..base_dn}"
filter="(uid=%{%{Stripped-User-Name}:-%{User-Name}})"
}
...Redémarrez le serveur Radius et vérifiez la synchronisation des utilisateurs LDAP :
radtest user_ldap password_ldap localhost 1812 testing123 Modification d'eap dans mods activés/eap
Ici, nous ajoutons deux instances d'eap. Ils ne différeront que par les certificats et les clés. Ci-dessous, j'expliquerai pourquoi il en est ainsi.
mods activés/eap
eap eap-client { default_eap_type = ttls timer_expire = 60 ignore_unknown_eap_types = no cisco_accounting_username_bug = no max_sessions = ${max_requests}
tls-config tls-common {
private_key_file = ${certdir}/fisrt.key
certificate_file = ${certdir}/first.crt
dh_file = ${certdir}/dh
ca_path = ${cadir}
cipher_list = "HIGH"
cipher_server_preference = no
ecdh_curve = "prime256v1"
check_crl = no
}
ttls {
tls = tls-common
default_eap_type = md5
copy_request_to_tunnel = no
use_tunneled_reply = yes
virtual_server = "inner-tunnel"
}
}
eap eap-guest {
default_eap_type = ttls timer_expire = 60 ignore_unknown_eap_types = no cisco_accounting_username_bug = no max_sessions = ${max_requests}
tls-config tls-common {
private_key_passwotd=blablabla
private_key_file = ${certdir}/server.key
certificate_file = ${certdir}/server.crt
dh_file = ${certdir}/dh
ca_path = ${cadir}
cipher_list = "HIGH"
cipher_server_preference = no
ecdh_curve = "prime256v1"
check_crl = no
}
ttls {
tls = tls-common
default_eap_type = md5
copy_request_to_tunnel = no
use_tunneled_reply = yes
virtual_server = "inner-tunnel"
}
}Modification ultérieure activé par le site/par défaut. Les sections autoriser et authentifier sont intéressantes.
activé par le site/par défaut
authorize {
filter_username
preprocess
if (&User-Name == "guest") {
eap-guest {
ok = return
}
}
elsif (&User-Name == "client") {
eap-client {
ok = return
}
}
else {
eap-guest {
ok = return
}
}
ldap
if ((ok || updated) && User-Password) {
update {
control:Auth-Type := ldap
}
}
expiration
logintime
pap
}
authenticate {
Auth-Type LDAP {
ldap
}
Auth-Type eap-guest {
eap-guest
}
Auth-Type eap-client {
eap-client
}
pap
}Dans la section autoriser, nous supprimons tous les modules dont nous n'avons pas besoin. Nous ne laissons que LDAP. Ajoutez la vérification du client par nom d'utilisateur. C'est pourquoi nous avons ajouté deux instances d'eap ci-dessus.
PAE multipleEn fait, pour connecter certains appareils, nous utiliserons des certificats systÚme et spécifierons un domaine. Nous disposons d'un certificat et d'une clé provenant d'une autorité de certification de confiance. Personnellement, je trouve cette procédure de connexion plus simple que l'installation d'un certificat auto-signé sur chaque appareil. Mais nous ne pouvions pas nous permettre d'utiliser des certificats auto-signés. Les appareils Samsung et Android La version 6 ne prend pas en charge les certificats systÚme. Par conséquent, nous créons une instance eap-guest distincte avec des certificats auto-signés. Pour tous les autres appareils, nous utiliserons eap-client avec un certificat de confiance. Le nom d'utilisateur est déterminé par le champ « Anonyme » lors de la connexion de l'appareil. Seules trois valeurs sont autorisées : « Invité », « Client » et un champ vide. Toutes les autres valeurs sont ignorées. Cette configuration s'effectue dans les politiques. Je donnerai un exemple plus loin.
Modifions les sections autoriser et authentifier dans compatible avec le site/tunnel intérieur
compatible avec le site/tunnel intérieur
authorize {
filter_username
filter_inner_identity
update control {
&Proxy-To-Realm := LOCAL
}
ldap
if ((ok || updated) && User-Password) {
update {
control:Auth-Type := ldap
}
}
expiration
digest
logintime
pap
}
authenticate {
Auth-Type eap-guest {
eap-guest
}
Auth-Type eap-client {
eap-client
}
Auth-Type PAP {
pap
}
ldap
}Ensuite, vous devez spĂ©cifier dans les politiques quels noms peuvent ĂȘtre utilisĂ©s pour la connexion anonyme. Ădition politique.d/filtre.
Vous devez trouver des lignes similaires Ă celle-ci :
if (&outer.request:User-Name !~ /^(anon|@)/) {
update request {
Module-Failure-Message = "User-Name is not anonymized"
}
reject
}Et ci-dessous, dans elsif, ajoutez les valeurs souhaitées :
elsif (&outer.request:User-Name !~ /^(guest|client|@)/) {
update request {
Module-Failure-Message = "User-Name is not anonymized"
}
reject
}Maintenant, nous devons nous déplacer vers le répertoire certs. Ici, vous devez mettre la clé et le certificat d'une autorité de certification de confiance, que nous avons déjà et dont nous avons besoin pour générer des certificats auto-signés pour eap-guest.
Changer les paramĂštres dans le fichier ca.cnf.
ca.cnf
...
default_days = 3650
default_md = sha256
...
input_password = blablabla
output_password = blablabla
...
countryName = RU
stateOrProvinceNmae = State
localityNmae = City
organizationName = NONAME
emailAddress = admin@admin.ru
commonName = "CA FreeRadius"On Ă©crit les mĂȘmes valeurs dans le fichier serveur.cnf. Nous changeons seulement
Nom commun:
serveur.cnf
...
default_days = 3650
default_md = sha256
...
input_password = blablabla
output_password = blablabla
...
countryName = RU
stateOrProvinceNmae = State
localityNmae = City
organizationName = NONAME
emailAddress = admin@admin.ru
commonName = "Server Certificate FreeRadius"Créer:
makePrĂȘt. Reçu serveur.crt Đž clĂ©.serveur nous nous sommes dĂ©jĂ enregistrĂ©s ci-dessus dans eap-guest.
Et enfin, ajoutons nos points d'accÚs au fichier client.conf. J'en ai 7. Afin de ne pas ajouter chaque point séparément, nous écrirons uniquement le réseau dans lequel ils se trouvent (mes points d'accÚs sont dans un VLAN séparé).
client APs {
ipaddr = 192.168.100.0/24
password = password_AP
}ContrĂŽleur d'ubiquiti
Nous élevons un réseau séparé sur le contrÎleur. Que ce soit 192.168.2.0/24
Allez dans paramÚtres -> profil. Nous en créons un nouveau :

Nous écrivons l'adresse et le port du serveur radius et le mot de passe qui a été écrit dans le fichier clients.conf:

Créez un nouveau nom de réseau sans fil. Sélectionnez WPA-EAP (Enterprise) comme méthode d'authentification et spécifiez le profil de rayon créé :

Nous sauvegardons tout, postulons et passons Ă autre chose.
Configuration des clients
Commençons par le plus difficile !
Windows 10
La difficulté réside dans le fait que Windows Il ne parvient toujours pas à se connecter au réseau Wi-Fi de l'entreprise via un domaine. Nous devons donc ajouter manuellement notre certificat au magasin de certificats de confiance. Vous pouvez utiliser un certificat auto-signé ou un certificat d'une autorité de certification. J'utiliserai ce dernier.
Ensuite, vous devez créer une nouvelle connexion. Pour cela, rendez-vous dans les paramÚtres réseau et Internet -> Centre Réseau et partage -> Créer et configurer une nouvelle connexion ou un nouveau réseau :



Entrez manuellement le nom du réseau et modifiez le type de sécurité. AprÚs avoir cliqué sur modifier les paramÚtres de connexion et dans l'onglet Sécurité, sélectionnez l'authentification réseau - EAP-TTLS.



On rentre dans les paramĂštres, on prescrit la confidentialitĂ© de l'authentification - client. En tant qu'autoritĂ© de certification de confiance, sĂ©lectionnez le certificat que nous avons ajoutĂ©, cochez la case "Ne pas Ă©mettre d'invitation Ă l'utilisateur si le serveur ne peut pas ĂȘtre autorisĂ©" et sĂ©lectionnez la mĂ©thode d'authentification - mot de passe non cryptĂ© (PAP).

Ensuite, allez dans les paramÚtres avancés, cochez "Spécifier le mode d'authentification". Sélectionnez "Authentification utilisateur" et cliquez sur enregistrer les informations d'identification. Ici, vous devrez entrer username_ldap et password_ldap



Nous sauvegardons tout, postulons, fermons. Vous pouvez vous connecter à un nouveau réseau.
Linux
J'ai vérifié Ubuntu 18.04, 18.10, Fedora 29, 30.
Commencez par télécharger le certificat. Je ne l'ai pas trouvé dans LinuxEst-il possible d'utiliser des certificats systÚme et existe-t-il un tel espace de stockage ?
Connectons-nous au domaine. Par consĂ©quent, nous avons besoin dâun certificat de lâautoritĂ© de certification auprĂšs de laquelle notre certificat a Ă©tĂ© achetĂ©.
Toutes les connexions sont effectuĂ©es dans une seule fenĂȘtre. SĂ©lection de notre rĂ©seau :

client anonyme
domaine - le domaine pour lequel le certificat est délivré
Android
non-Samsung
A partir de la version 7, lors de la connexion WiFi, vous pouvez utiliser les certificats systÚme en précisant uniquement le domaine :

domaine - le domaine pour lequel le certificat est délivré
client anonyme
Samsung
Comme je l'ai Ă©crit ci-dessus, les appareils Samsung ne savent pas comment utiliser les certificats systĂšme lors de la connexion au WiFi et n'ont pas la possibilitĂ© de se connecter via un domaine. Il faut donc ajouter manuellement le certificat racine de l'autoritĂ© de certification (ca.pem, nous le prenons sur le serveur Radius). Câest ici que lâauto-signĂ© sera utilisĂ©.
Téléchargez le certificat sur votre appareil et installez-le.
Installation du certificat



ParallÚlement, vous devrez définir le schéma de déverrouillage de l'écran, le code PIN ou le mot de passe, s'il n'est pas déjà défini :


J'ai montré une version compliquée de l'installation d'un certificat. Sur la plupart des appareils, cliquez simplement sur le certificat téléchargé.
Une fois le certificat installé, vous pouvez procéder à la connexion :

certificat - indiquez celui qui a été installé
utilisateur anonyme - invité
macOS
Les appareils Apple prĂȘts Ă l'emploi ne peuvent se connecter qu'Ă EAP-TLS, mais vous devez toujours leur envoyer un certificat. Pour spĂ©cifier une mĂ©thode de connexion diffĂ©rente, vous devez utiliser Apple Configurator 2. En consĂ©quence, vous devez d'abord le tĂ©lĂ©charger sur votre Mac, crĂ©er un nouveau profil et ajouter tous les paramĂštres WiFi nĂ©cessaires.
Apple Configurator

Entrez le nom de votre réseau ici
Type de sĂ©curitĂ© â WPA2 Entreprise
Types EAP acceptés - TTLS
Nom d'utilisateur et mot de passe - laisser vide
Authentification interne - PAP
Client d'identité externe
Onglet Confiance. Ici nous spécifions notre domaine
Tous. Le profil peut ĂȘtre enregistrĂ©, signĂ© et distribuĂ© aux appareils
Une fois le profil prĂȘt, vous devez le tĂ©lĂ©charger sur le coquelicot et l'installer. Pendant le processus d'installation, vous devrez spĂ©cifier le usernmae_ldap et le password_ldap de l'utilisateur :



iOS
Le processus est similaire macOSVous devez utiliser un profil (vous pouvez utiliser le mĂȘme que pour macOS(Voir ci-dessus comment crĂ©er un profil dans Apple Configurator.)
Téléchargez le profil, installez, saisissez les informations d'identification, connectez-vous :






C'est tout. Nous avons configuré un serveur Radius, l'avons synchronisé avec FreeIPA et avons demandé aux points d'accÚs Ubiquiti d'utiliser WPA2-EAP.
Questions possibles
Đ: comment transfĂ©rer un profil/certificat Ă un salariĂ© ?
Đ: Je stocke tous les certificats/profils sur FTP avec accĂšs Web. CrĂ©ation d'un rĂ©seau invitĂ© avec une limite de vitesse et un accĂšs uniquement Ă Internet, Ă l'exception de FTP.
L'authentification dure 2 jours, aprÚs quoi elle est réinitialisée et le client se retrouve sans Internet. Que. lorsqu'un employé souhaite se connecter au WiFi, il se connecte d'abord au réseau invité, accÚde au FTP, télécharge le certificat ou le profil dont il a besoin, l'installe, puis peut se connecter au réseau d'entreprise.
Đ: pourquoi ne pas utiliser le schĂ©ma avec MSCHAPv2 ? Elle est plus en sĂ©curitĂ© !
Đ: PremiĂšrement, ce systĂšme fonctionne bien pour le NPS (Windows Notre implĂ©mentation nĂ©cessite une configuration LDAP supplĂ©mentaire (FreeIPA) et le stockage des hachages de mots de passe sur le serveur. Cette configuration supplĂ©mentaire est dĂ©conseillĂ©e, car elle peut engendrer divers problĂšmes de synchronisation des comptes. De plus, le hachage Ă©tant de type MD4, il n'amĂ©liore pas significativement la sĂ©curitĂ©.
Đ: est-il possible d'autoriser des appareils par adresses MAC ?
Đ: NON, ce n'est pas sĂ»r, un attaquant peut modifier les adresses MAC, et plus encore, l'autorisation par adresses MAC n'est pas prise en charge sur de nombreux appareils
Đ: Ă quoi servent gĂ©nĂ©ralement tous ces certificats ? peux-tu nous rejoindre sans eux ?
Đ: les certificats sont utilisĂ©s pour autoriser le serveur. Ceux. lors de la connexion, l'appareil vĂ©rifie s'il s'agit d'un serveur fiable ou non. Si tel est le cas, l'authentification continue, sinon la connexion est fermĂ©e. Vous pouvez vous connecter sans certificats, mais si un attaquant ou un voisin installe chez vous un serveur radius et un point d'accĂšs du mĂȘme nom que le nĂŽtre, il pourra facilement intercepter les identifiants de l'utilisateur (n'oubliez pas qu'ils sont transmis en texte clair) . Et lorsqu'un certificat est utilisĂ©, l'ennemi ne verra dans ses journaux que notre nom d'utilisateur fictif - invitĂ© ou client et une erreur de type - Certificat CA inconnu
un peu plus sur macOShabituellement macOS La rĂ©installation du systĂšme s'effectue via Internet. En mode de rĂ©cupĂ©ration, le Mac doit ĂȘtre connectĂ© Ă un rĂ©seau Wi-Fi ; ni le rĂ©seau Wi-Fi de l'entreprise ni le rĂ©seau invitĂ© ne fonctionneront. Personnellement, j'ai configurĂ© un autre rĂ©seau, un rĂ©seau WPA2-PSK classique, cachĂ©, uniquement pour les opĂ©rations techniques. Vous pouvez Ă©galement crĂ©er une clĂ© USB bootable avec le systĂšme prĂ©installĂ©. Toutefois, si votre Mac est postĂ©rieur Ă 2015, vous aurez besoin d'un adaptateur pour cette clĂ© USB.
Source: habr.com
