linux 802.1x sur un réseau filaire Windows

11

Je cherche à utiliser ma station de travail Linux sur notre réseau d'entreprise, mais j'ai rencontré quelques problèmes, en particulier 802.1xi.

Je suis root sur ma machine et un administrateur de domaine Windows, donc je devrais pouvoir accéder à tout ce dont j'ai besoin pour que cela fonctionne. Actuellement, ma machine Linux a une connectivité restreinte, ce qui m'amène à croire qu'elle a été placée dans un vlan par défaut pour les clients non 802.1x.

Je suppose que ma question générale est: comment puis-je faire en sorte que ma machine Linux utilise 802.1x sur le réseau Windows câblé? Le réseau est un domaine Windows typique et utilise des comptes d'ordinateur ainsi que des comptes d'utilisateurs.

Voici ce que je sais et ai essayé jusqu'à présent:

Je crois que je vais avoir besoin d'obtenir un certificat d'ordinateur client valide pour l'ordinateur, le certificat CA pour le domaine et la clé privée pour le client

Idée 1, prenez une clé valide sur une machine Windows / domaine ca.J'ai exécuté une machine virtuelle Windows sur la machine Linux, et je l'ai jointe au domaine, pensant que cela produirait un certificat client valide que je pourrais utiliser pour la machine Linux. - à cette fin, j'ai ensuite exporté le certificat client et le certificat CA hors du serveur Windows CA, puis les ai convertis au format PEM, prêt pour le gestionnaire de réseau sous Linux (en supposant que PEM ne soit pas DER). - J'ai ensuite tenté d'exporter la clé privée sur la machine virtuelle Windows elle-même à l'aide de certmgr, mais elle a été marquée comme non exportable :-(

L'idée 2 était powerbroker ... - J'ai utilisé powerbroker open (formellement de même) pour joindre la machine linux au domaine, getent passwd montre maintenant tous les utilisateurs du domaine. - Je pensais que cela mettrait un certificat client et une clé privée sur le système quelque part (/ etc / ssl / certs?) Mais je ne trouve rien

Idée 3, demandez à quelqu'un qui sait ce qu'il fait réellement.

Je dois souligner qu'à l'origine cette machine linux avait des fenêtres dessus (que j'ai p2v'd lors de l'installation de linux) donc je sais que le commutateur réseau est correctement configuré, et le MAC etc est accepté sur le réseau; Je suis sûr que c'est juste un problème 802.1x

Edit: totalement oublié de mentionner son spin fedora 21 xfce, 64bit.

Sirex
la source
Quel suppliant utilisez-vous? Xsupplicant, wpa_supplicant ou rouler le vôtre?
Brian
son fedora 21 sorti de la boîte, semble que seul wpa_supplicant est installé. J'utilise le gestionnaire de réseau pour essayer de me connecter (avec le bureau xfce).
Sirex
oui, cela résume plus ou moins jusqu'où je suis déjà allé. En regardant les machines Windows, elles semblent utiliser PEAP avec MSCHAP v2, c'est donc ce que j'ai essayé sur les machines Linux. La plupart du temps, je pense que j'ai du mal à savoir où / comment obtenir des certificats valides et à quoi devrait ressembler mon nom d'utilisateur ('bob' '[email protected]' 'domain \ bob'? J'ai essayé plusieurs façons de le faire fonctionner mais pas de succès jusqu'à présent, il redemande simplement mon mot de passe à nouveau
Sirex
J'ai essayé d'exporter le certificat CA (dans l '«idée 1»), mais je suis toujours invité à saisir le mot de passe, et je ne suis pas certain de suivre la bonne voie avec le format PEM. Il y a également une case à cocher `` aucun certificat CA n'est requis '', mais je ne sais pas si AD aimerait cela (je suppose que c'est juste une décision côté client pour abandonner le chèque CA de toute façon, non?)
Sirex

Réponses:

10

Mauvaise nouvelle, tout le monde! Il semble qu'il y ait un bogue non corrigé dans Fedora 21: La connexion filaire avec 802.1x PEAP / MSCHAPv2 ne fonctionne pas . Ainsi, bien que la réponse ci - dessous puisse fonctionner pour d'autres distributions, les utilisateurs de Fedora 21 n'ont actuellement pas de chance.


Je n'ai jamais essayé cela moi-même, mais cet article semble contenir une procédure pas à pas assez détaillée pour configurer le 802.1x entre le client Linux et le domaine Windows. Notez la partie demande de certificat: elle devrait résoudre votre problème de certificat non exportable. Les versions du logiciel sont assez anciennes ( Ubuntu est la 8.04 et le Power Broker de Beyond Trust l' est toujours également ), mais l'idée de base me semble solide.

J'ai formaté le message susmentionné pour en faciliter la lecture. La citation fait griser les zones de code sur le gris, donc je l'ai abandonné, désolé:


Avertissement: Ce guide est écrit du point de vue de la distribution Linux Ubuntu 8.04. Pour que cela fonctionne avec d'autres distributions Linux ou Unix, certaines modifications peuvent devoir être apportées.

Les deux éléments principaux nécessaires à l'authentification de votre machine Linux sur 802.1x sont un certificat client et un compte dans le domaine Windows. Au cours du processus d'authentification, le client Linux présente son certificat d'ordinateur au commutateur, qui à son tour le présente au serveur RADIUS qui vérifie le certificat et vérifie le compte d'ordinateur auquel le certificat est attribué dans Active Directory. Si le certificat et le compte d'ordinateur sont valides, le serveur RADIUS approuve la demande d'authentification qui la renvoie au commutateur, qui à son tour authentifie le port auquel le boîtier Linux est connecté.

La première chose à faire est de joindre votre ordinateur Linux au domaine Windows. Puisque Linux ne peut pas rejoindre nativement un domaine Windows, nous devons télécharger le logiciel nécessaire pour nous permettre de le faire. Fait également des logiciels pour nous permettre de faire exactement cela. Pour l'installer sur Ubuntu, c'est très simple, il suffit de suivre ces étapes:

  1. mise à jour sudo apt-get
  2. sudo apt-get installe également-open
  3. sudo domainjoin-cli join enter the FQDN of your domain here enter your admin account here, vous pouvez utiliser le format [email protected]. Vous devriez également pouvoir utiliser la version GUI en allant surSystem → Administration → Likewise.
  4. sudo update-rc.d également ouvert par défaut
  5. sudo /etc/init.d/likewise-open start

Si vous n'utilisez pas Ubuntu, vous pouvez télécharger le logiciel ici http://www.likewisesoftware.com/products/likewise_open . Vous pouvez maintenant vous déconnecter et vous reconnecter à l'aide de votre compte de domaine. Je crois que les deux formats [email protected]et domaine \ utilisateur fonctionnent tous les deux. Je testerai cela plus tard.

Il y a trois fichiers situés sur la machine Linux qui doivent être configurés correctement pour que cette authentification ait lieu. Ces trois fichiers sont:

  1. /etc/wpa_supplicant.conf
  2. / etc / network / interfaces
  3. /etc/openssl/openssl.cnf

Nous allons d'abord configurer le logiciel pour permettre à notre machine Linux d'utiliser un certificat client pour s'authentifier sur un réseau compatible 802.1x; wpa_supplicantsera utilisé pour cela.

Suivez ces étapes pour configurer votre fichier wpa_supplicant.conf:

  1. sudo gedit /etc/wpa_supplicant.conf
  2. Collez ce qui suit dans le fichier et enregistrez-le:

    # Where is the control interface located? This is the default path:
    ctrl_interface=/var/run/wpa_supplicant
    
    # Who can use the WPA frontend? Replace "0" with a group name if you
    # want other users besides root to control it.
    # There should be no need to chance this value for a basic configuration:
    ctrl_interface_group=0
    
    # IEEE 802.1X works with EAPOL version 2, but the version is defaults 
    # to 1 because of compatibility problems with a number of wireless
    # access points. So we explicitly set it to version 2:
    eapol_version=1
    
    # When configuring WPA-Supplicant for use on a wired network, we don't need to
    # scan for wireless access points. See the wpa-supplicant documentation if you
    # are authenticating through 802.1x on a wireless network:
    ap_scan=0
    
    network={ 
        ssid="<enter any name here, it doesn't matter>" 
        key_mgmt=IEEE8021X 
        eap=TLS 
        identity="<FQDN>/computers/<Linux computer name>" 
        client_cert="/etc/ssl/certs/<your authentication certificate name>.pem" 
        private_key="/etc/ssl/private/<your private key name>.pem" 
    }
    

Nous devons maintenant éditer votre fichier d'interfaces. Suivez ces étapes pour configurer votre fichier d'interface:

  1. sudo gedit / etc / network / interfaces
  2. Collez ce qui suit dans le fichier sous l' eth0interface et enregistrez-le:

    # Configure the system to authenticate with WPA-Supplicant on interface eth0
    wpa-iface eth0
    
    # In this case we have a wired network:
    wpa-driver wired
    
    # Tell the system we want to use WPA-Supplicant with our configuration file:
    wpa-conf /etc/wpa_supplicant.conf
    

L'étape suivante consiste à générer et installer vos certificats. Nous devrons générer un certificat auto-signé, puis générer une demande de certificat basée sur le certificat auto-signé que nous avons créé, puis installer les certificats.

Remarque: Lors de la création de vos certificats, chaque fois qu'il vous demande votre nom, vous devez fournir le nom de l'ordinateur qui s'authentifiera. Pour être sûr, je recommande de faire correspondre le nom à la façon dont il est attribué à l'ordinateur, y compris en respectant la casse. Si vous ne savez pas comment il est attribué à votre ordinateur, ouvrez un terminal et saisissez le nom d'hôte.

Suivez ces étapes:

  1. sudo openssl req -x509 -nodes -days enter in days how long you want the cert valid for-newkey rsa: 1024 -keyout enter a name for your private key/certificate here.pem -out enter a name for your private key/certificate here.pem

    Exemple: sudo openssl req -x509 -nodes -days 365 -newkey rsa: 1024 -keyout privcert.pem -out privcert.pem

  2. openssl req -new -newkey rsa: 1024 -nodes -keyout enter a name for your private key here.pem - out enter a name for your certificate request here.pem

    Exemple: sudo openssl req -new -newkey rsa: 1024 -nodes -keyout privkey.pem -out certreq.pem

Tous les certificats créés sont placés dans votre répertoire personnel ( /home/<username>). La partie suivante consiste à demander un certificat à votre autorité de certification à l'aide de la demande de certificat créée à l'étape précédente. Cela devra être fait sur une machine Windows, car pour une raison quelconque, Linux et Windows ne s'entendent pas très bien lors de la demande et du téléchargement de certificats; Je viens de trouver plus facile de m'envoyer la demande de certificat et de l'exécuter sur une machine Windows.

Suivez ces étapes pour terminer la demande de certificat:

  1. Accédez à votre répertoire personnel sur la machine Linux et recherchez votre fichier de demande de certificat
  2. Soit vous envoyez le fichier par e-mail, soit vous ouvrez le fichier avec un éditeur de texte (tel que gedit) et vous copiez et collez la demande dans un e-mail et vous l'envoyez.
  3. Sur un client Windows, ouvrez une page Web à l'aide d'IE sur le site Web de votre autorité de certification (par exemple http://caname/certsrv).
  4. Sélectionnez Demander un certificat
  5. Demande de certificat avancée
  6. Ouvrez maintenant votre e-mail et obtenez la demande de certificat que vous avez envoyée par e-mail.
  7. Si vous vous avez envoyé le fichier par e-mail, ouvrez-le avec le bloc-notes et copiez et collez le contenu dans la boîte de demande de certificat codé en Base-64. Si vous vous avez envoyé par e-mail le contenu du fichier de demande de certificat plutôt que le fichier lui-même, copiez-collez simplement la demande à partir de là dans la boîte de demande de certificat codée en Base-64.
  8. Cliquez sur Soumettre et téléchargez le certificat sous forme Base-64, pas DER.
  9. Enregistrez le certificat sur votre bureau et nommez-le your Linux machine name.pem. Le système ajoutera automatiquement le .cerà la fin de celui-ci, il suffit donc de le supprimer. Linux utilise .pem pour les extensions de certificat.
  10. Prenez ce fichier et renvoyez-le par e-mail.
  11. Maintenant, sur votre machine Linux, obtenez votre certificat et enregistrez-le quelque part (de préférence votre dossier personnel pour garder les choses organisées et ensemble).
  12. Maintenant, nous devons copier votre certificat que vous venez de recevoir dans votre /etc/ssl/certsdossier, et nous devons copier votre clé / certificat privé et la clé privée créés précédemment dans votre /etc/ssl/privatedossier. Maintenant, seul root a l'autorisation de le faire, vous pouvez donc le faire en ligne de commande en tapant sudo cp /home/<username>/<certificate>.pem /etc/ssl/privateou /etc/ssl/certs. Cela peut également être fait à partir de l'interface graphique en copiant et collant en utilisant la commande gksudo et en tapant nautilus. Nautilus est le navigateur de fichiers GUI qu'Ubuntu utilise et il l'exécutera en tant que root vous permettant de copier et coller dans des répertoires auxquels seule root a accès.

Maintenant que nos certificats sont en place, nous devons dire à openssl comment nous voulons utiliser les certificats. Pour ce faire, nous devons modifier le fichier openssl.cnf et lui dire d'authentifier notre machine Linux en tant que client plutôt qu'en tant qu'utilisateur.

Pour le faire, suivez ces étapes:

  1. sudo gedit /etc/ssl/openssl.cnf
  2. Faites défiler vers le bas à mi-chemin et vous devriez voir une section intitulée [usr_cert]. Dans cette section, nous avons besoin de l'endroit où le nsCertTypeest défini comme "Pour une utilisation normale par le client, c'est typique" , et il devrait l'avoir nsCertType = client, emailet il sera commenté. Décommentez cette ligne et supprimez l'e-mail pour qu'il s'affiche nsCertType = client. Enregistrez maintenant le fichier.

Vous devez maintenant avoir tout ce dont vous avez besoin configuré correctement pour qu'une machine Linux fonctionne dans un environnement de domaine Windows et s'authentifie à l'aide de 802.1x.

Il ne vous reste plus qu'à redémarrer votre service réseau afin que Linux utilise le wpa_supplicant.conffichier qui est maintenant lié à votre eth0interface et s'authentifie. Alors lancez-vous sudo service networking restart. Si vous n'obtenez pas d'adresse IP après le retour de votre interface, vous pouvez demander manuellement une IP à votre serveur DHCP en tapant sudo dhclient.


beatcracker
la source
je viens de l'essayer et je l'ai essayé la première fois que j'ai trouvé cet article. Je vais réessayer mot pour mot, juste au cas où.
Sirex
Non, je ne peux pas faire fonctionner cela. J'aurais pensé que la demande de signature approuvée serait de type «poste de travail» mais je n'avais que «utilisateur» et «serveur Web» disponibles.
Sirex
D'accord, nous pourrions peut-être emprunter une autre voie. Il existe un moyen, alebit hacky, d'exporter des certificats marqués comme non exportables: github.com/iSECPartners/jailbreak ou blog.gentilkiwi.com/mimikatz ( stackoverflow.com/questions/3914882/… ). Pourriez-vous essayer de récupérer un certificat de votre Windows p2v et de l'utiliser pour l'authentification?
beatcracker
l'application jailbreak m'a permis de récupérer la clé privée. Cela n'a pas fonctionné pour moi en mode TLS. Le mode PEAP ne veut que le certificat CA - que je peux retirer du serveur ca / ​​certsrv / url, mais ce travail fonctionne non plus. Peut-être qu'il n'aime pas mon «identité anonyme», le type de nom d'utilisateur et le mot de passe, je suppose que c'est soit «nom d'utilisateur» ou «nom d'[email protected]», mais aucun ne fonctionne pour moi. Je vais coller les journaux de messages.
Sirex
1
Mauvaise nouvelle, tout le monde! Il semble que ce soit un bogue dans Fedora 21: la connexion filaire avec 802.1x PEAP / MSCHAPv2 ne fonctionne pas .
beatcracker