web-dev-qa-db-fra.com

Linux 802.1x sur un réseau filaire Windows

Je cherche à utiliser mon poste de travail Linux sur notre réseau d'entreprise, mais je suis en train de rencontrer quelques problèmes, plus précisément 802.1x, je crois.

Je suis racine sur ma machine et un administrateur de domaine Windows afin que je puisse être capable d'accéder à tout ce dont j'ai besoin pour que cela fonctionne. Actuellement, ma machine Linux a une connectivité restreinte qui me conduit à croire qu'il a été mis dans une VLAN par défaut pour les clients non 802.1x.

Je suppose que ma question globale est la suivante: comment puis-je faire utiliser mon machine Linux 802.1x sur le réseau Windows câblé? Le réseau est un domaine Windows typique et utilise des comptes de machine ainsi que des utilisateurs.

C'est ce que je sais et j'ai essayé jusqu'à présent:

I croire Je vais avoir besoin d'obtenir un certificat de machine client valide pour la machine, le certificat CA pour le domaine et la clé privée du client

Idea 1, saisissez une clé valide d'une machine de machine/domaine de domaine Windows, j'ai exécuté une machine Windows VM sur la machine Linux et jointe au domaine, pensant que cela produirait un cert client valide i Pourrait nab pour la machine Linux. - À cette fin, j'ai ensuite exporté le client CERT et le CA CERT OFF du serveur Windows CA, puis les converties au format PEM, prêt pour le gestionnaire de réseau sur Linux (en supposant que les besoins ne doivent pas pomer). - J'ai ensuite tenté d'exporter la clé privée sur Windows VM lui-même en utilisant certmgr, mais il a été marqué comme non exportable :-(

Idea 2 était Powerbroker ... - J'ai utilisé Powerbroker ouvert (officiellement) pour rejoindre la machine Linux au domaine, getent passwd affiche maintenant tous les utilisateurs de domaine. - Ma pensée était que cela mettrait un cert 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'ils font réellement.

Je dois signaler que à l'origine que cette machine Linux était à l'origine de Windows sur celle-ci (que je P2V'd lors de l'installation de Linux), donc je sais que le commutateur réseau est configuré à droite et que le Mac, etc. est accepté sur le réseau; Je suis à peu près sûr que c'est juste un problème de 802.1x

EDIT: Totalement oublié de mentionner son Fedora 21 Xfce Spin, 64 bits.

11
Sirex

Mauvaise nouvelle, tout le monde! Il semble qu'il existe un bogue non déterminé dans Fedora 21: connexion câblée avec 802.1x PEAP/MSCHAPV2 ne fonctionne pas . Donc, alors que la réponse ci-dessous mai Travail pour d'autres distributions, les utilisateurs de Fedora 21 ont actuellement mal de chance.


Jamais essayé que moi-même, mais ce post semble contenir une procédure pas à pas assez détaillée pour la configuration de 802.1x entre le client Linux et le domaine Windows. Notez la partie de demande de certificat: il devrait résoudre votre problème de certificat non exportable. Les versions logicielles sont assez anciennes ( Ubuntu est 8.04 et Beyond Trust's Power Courtker est toujours de même), mais la base l'idée me semble solide.

J'ai formaté un poste susmentionné pour faciliter la lecture. Citant des boîtes de code pour être gris sur gris, donc je l'ai laissé tomber, désolé:


Disclaimer: Ce guide est écrit du point de vue de la distribution Linux Ubuntu 8.04. Pour rendre ce travail avec d'autres distributions Linux ou Unix, certaines modifications devront peut-être être apportées.

Les deux principales choses nécessaires à votre machine Linux pour authentifier via 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 à l'interrupteur, ce qui le présente à son tour sur RADIUS serveur qui vérifie le certificat et vérifie le compte d'ordinateur que le certificat est attribué à Active Directory. Si le certificat et le compte d'ordinateur sont valides, le RADIUS Approuve la demande d'authentification qui le renvoie à l'interrupteur, qui authentifie le port de la boîte Linux est connecté à.

La première chose à faire est de rejoindre votre ordinateur Linux dans le domaine Windows. Étant donné que Linux ne peut pas rejoindre de manière native de domaine Windows, nous devons télécharger le logiciel nécessaire pour nous permettre de le faire. De même, facilite le logiciel pour nous permettre de faire exactement cela. Pour l'installer sur Ubuntu, c'est très simple, suivez simplement ces étapes:

  1. Sudo apt-obtenez la mise à jour
  2. sudo apt-get d'installation également-ouvert
  3. Sudo Domainjoin-Cli Rejoignez enter the FQDN of your domain hereenter your admin account here, vous pouvez utiliser le format [email protected]. Vous devriez également pouvoir utiliser la version de l'interface graphique en allant à System → Administration → Likewise.
  4. sudo update-rc.d également-ouvrir par défaut
  5. sudo /etc/init.d/ikewise-Open commence

Si vous n'exécutez pas Ubuntu, vous pouvez télécharger le logiciel ici http://www.likewiseoftware.com/products/ikewise_open_open . Vous pouvez maintenant vous déconnecter et vous connecter à l'aide de votre compte de domaine. Je crois que le format de [email protected] et le domaine\utilisateur les deux fonctionnent. Je vais tester cela plus tard.

Il existe trois fichiers sur la machine Linux qui doit être configurée correctement pour que cette authentification ait lieu. Ces trois fichiers sont:

  1. /etc/wpa_supplicant.conf
  2. /etc/réseau/interfaces
  3. /etc/openssl/openssl.cnf

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

Suivez ces étapes pour configurer votre fichier WPA_SUPPLICANT.CONF:

  1. sudo gedit /etc/wpa_supplicant.conf
  2. Collez le texte suivant 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 modifier votre fichier d'interfaces. Suivez ces étapes pour configurer votre fichier d'interfaces:

  1. sudo gedit/etc/réseau/interfaces
  2. Collez le texte suivant dans le fichier sous la eth0 interface et enregistrez-la:

    # 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
    

La prochaine étape 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é créé, puis installer les certificats.

Remarque: Lors de la création de vos certificats, chaque fois que cela vous demande votre nom, vous devez fournir le nom de l'ordinateur qui s'authentifiera. Pour être en sécurité, je recommande de faire correspondre le nom de la manière dont il est attribué à l'ordinateur, y compris d'être sensible à la casse. Si vous n'êtes pas sûr de savoir comment il est attribué à votre ordinateur, ouvrez un terminal et tapez nom d'hôte.

Suivez ces étapes:

  1. Sudo OpenSSL REQ -X509 -NODES -ADIES 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 privilcert.pem -out privcert.pem

  2. OpenSSL REQ -NEW -NEWKEY RSA: 1024 -NODES -NODES -OYOUT 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 privatekey.pem -out -out certreq.pem

Tous les certificats créés sont placés dans votre répertoire domestique (/home/<username>). La partie suivante consiste à demander un certificat de votre CA à 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 trop bien lors de la demande et du téléchargement de certificats; Je viens de trouver plus facile d'envoyer une demande de certification à moi-même et de l'exécuter sur une machine Windows.

Suivez ces étapes pour remplir la demande de certificat:

  1. Allez dans votre répertoire de maison sur la machine Linux et trouvez votre fichier de demande de certificat
  2. Soit écrivez le fichier sur vous-même ou ouvrez le fichier avec un éditeur de texte (tel que GEDIT) et copiez-la et collez la demande dans un email et envoyez-vous cela à vous-même.
  3. Sur un client Windows, ouvrez une page Web à l'aide de IE sur le site Web de votre CA (tel que http://caname/certsrv).
  4. Sélectionnez Demander un certificat
  5. Demande de certification avancée
  6. Ouvrez maintenant votre email et obtenez la demande de certificat que vous vous êtes envoyé par courrier électronique.
  7. Si vous êtes envoyé par courrier électronique au fichier, ouvrez-le avec un bloc-notes et copiez-la et collez le contenu dans la zone de demande de certificat codé de base-64. Si vous êtes envoyé par courrier électronique au contenu du fichier de demande de certificat plutôt que le fichier lui-même, puis copiez et collez la demande à partir de là dans la zone de demande de certificat codé de base-64.
  8. Cliquez sur Soumettre et téléchargez le certificat de base-64, pas der.
  9. Enregistrez le certificat sur votre bureau et nommez-le your Linux machine name. Pem. Le système appendra automatiquement le .cer à la fin de celui-ci, alors supprimez-le simplement. Linux utilise .pem pour des extensions de certificat.
  10. Prenez ce fichier et écrivez-le à vous-même.
  11. Maintenant, sur votre machine Linux, obtenez votre certificat et enregistrez-le quelque part (de préférence votre dossier à domicile pour garder les choses organisées et ensemble).
  12. Maintenant, nous devons copier votre certificat que vous venez de recevoir à votre /etc/ssl/certs Dossier, et nous devons copier votre clé privée et votre clé privée créée précédemment dans votre /etc/ssl/private dossier. Maintenant, seule la racine a la permission de le faire, de sorte que vous pouvez le faire soit par la ligne de commande en tapant Sudo cp /home/<username>/<certificate>.pem /etc/ssl/private ou /etc/ssl/certs. Cela peut également être fait de l'interface graphique en copiant et en collant en utilisant la commande gksudo et en tapant dans Nautilus. Nautilus est le navigateur de fichiers d'interface graphique que Ubuntu utilise et il fonctionnera comme une racine vous permettant de copier et de coller des répertoires que la racine 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 éditer le fichier openssl.cnf et le dire d'authentifier notre machine Linux en tant que client plutôt qu'un utilisateur.

Pour le faire, suivez ces étapes:

  1. sudo gedit /etc/ssl/openssl.cnf
  2. Faites défiler environ la moitié et vous devriez voir une section appelée [usr_cert]. Dans cette section, nous avons besoin de l'endroit où le nsCertType est défini comme "pour une utilisation normale du client, c'est typique" , et il devrait avoir nsCertType = client, email et ce sera commenté. Définissez cette ligne et supprimez l'e-mail afin qu'il affiche nsCertType = client. Maintenant enregistrer le fichier.

Vous devez maintenant avoir tout ce dont vous avez besoin correctement configuré pour avoir une machine Linux en cours d'exécution dans un environnement de domaine Windows et authentifier à l'aide de 802.1x.

Tout ce qui reste est maintenant consiste à redémarrer votre service de réseau afin que Linux utilise le wpa_supplicant.conf Fichier qui est maintenant attaché à votre eth0 interface et authentification. Donc, il suffit de courir Sudo service networking restart. Si vous n'obtenez pas d'adresse IP après la sauvegarde de votre interface, vous pouvez demander une adresse IP manuelle à partir de votre serveur DHCP en tapant Sudo dhclient.


10
beatcracker