Linux 802.1x in einem Windows-Netzwerk


11

Ich möchte meine Linux-Workstation in unserem Unternehmensnetzwerk verwenden, bin jedoch auf einige Probleme gestoßen, insbesondere auf 802.1xi.

Ich bin root auf meinem Computer und ein Windows-Domänenadministrator, sodass ich auf alles zugreifen kann, was ich brauche, damit dies funktioniert. Derzeit hat mein Linux-Computer eine eingeschränkte Konnektivität, was mich glauben lässt, dass er in ein Standard-VLAN für Nicht-802.1x-Clients gestellt wurde.

Ich denke, meine allgemeine Frage lautet: Wie kann ich meinen Linux-Computer dazu bringen, 802.1x im kabelgebundenen Windows-Netzwerk zu verwenden? Das Netzwerk ist eine typische Windows-Domäne und verwendet sowohl Computerkonten als auch Benutzerkonten.

Das weiß ich und habe es bisher versucht:

Ich glaube, ich muss ein gültiges Client-Computer-Zertifikat für den Computer, das CA-Zertifikat für die Domäne und den privaten Schlüssel für den Client erhalten

Idee 1: Holen Sie sich einen gültigen Schlüssel von einem Windows-Computer / Domänen-Computer. Ich habe eine Windows-VM auf dem Linux-Computer ausgeführt und diese mit der Domäne verbunden, da ich dachte, dies würde ein gültiges Client-Zertifikat erzeugen, das ich für den Linux-Computer schnappen könnte. - Zu diesem Zweck habe ich dann das Client-Zertifikat und das CA-Zertifikat vom Windows-Ca-Server exportiert und sie dann in das PEM-Format konvertiert, bereit für den Netzwerkmanager unter Linux (vorausgesetzt, PEM benötigt nicht DER). - Ich habe dann versucht, den privaten Schlüssel auf der Windows-VM selbst mit certmgr zu exportieren, aber er wurde als nicht exportierbar markiert :-(

Idee 2 war Powerbroker ... - Ich habe Powerbroker open (formal ebenfalls) verwendet, um den Linux-Computer mit der Domain zu verbinden. Getent passwd zeigt jetzt alle Domain-Benutzer an. - Ich dachte, dies würde irgendwo ein Client-Zertifikat und einen privaten Schlüssel auf dem System platzieren (/ etc / ssl / certs?), Aber ich kann nichts finden

Idee 3: Fragen Sie jemanden, der weiß, was er tatsächlich tut.

Ich sollte darauf hinweisen, dass ursprünglich auf diesem Linux-Computer Windows installiert war (was ich bei der Linux-Installation getan habe), damit ich weiß, dass der Netzwerk-Switch richtig eingerichtet ist und der MAC usw. im Netzwerk akzeptiert wird. Ich bin mir ziemlich sicher, dass es nur ein 802.1x-Problem ist

Bearbeiten: völlig vergessen, seinen Fedora 21 xfce Spin, 64bit zu erwähnen.


Welchen Bittsteller verwenden Sie? Xsupplicant, wpa_supplicant oder Rolling your own?
Brian

Der Fedora 21 ist sofort einsatzbereit und scheint nur wpa_supplicant installiert zu haben. Ich verwende den Netzwerkmanager, um eine Verbindung herzustellen (mit xfce desktop).
Sirex


ja, das fasst mehr oder weniger zusammen, wie weit ich schon gekommen bin. Wenn ich mir die Windows-Computer anschaue, scheinen sie PEAP mit MSCHAP v2 zu verwenden, also habe ich das auf den Linux-Computern versucht. Meistens denke ich, ich habe Probleme zu wissen, wo / wie ich gültige Zertifikate erhalten kann und wie mein Benutzername aussehen sollte ('bob' 'bob@domain.com' 'domain \ bob'? Ich habe einige Möglichkeiten ausprobiert Damit es funktioniert, aber bisher kein Erfolg, wird einfach erneut nach meinem Passwort
Sirex,

Ich habe versucht, das CA-Zertifikat zu exportieren (in 'Idee 1'), aber ich werde immer noch zur Eingabe des Passworts aufgefordert, und ich bin nicht sicher, ob ich mit dem PEM-Format überhaupt den richtigen Weg gehe. Es gibt auch ein Kontrollkästchen "Kein CA-Zertifikat erforderlich", aber ich weiß nicht, ob AD das möchte (ich gehe davon aus, dass dies nur eine clientseitige Entscheidung ist, den CA-Check trotzdem zu streichen, oder?)
Sirex

Antworten:


10

Schlechte Nachrichten, alle zusammen! Es scheint, dass Fedora 21 einen nicht behobenen Fehler aufweist: Die Kabelverbindung mit 802.1x PEAP / MSCHAPv2 funktioniert nicht . Während die folgende Antwort möglicherweise für andere Distributionen funktioniert, haben Fedora 21-Benutzer derzeit kein Glück.


Ich habe das selbst nie versucht, aber dieser Beitrag scheint eine ziemlich detaillierte Anleitung zum Einrichten von 802.1x zwischen Linux-Client und Windows-Domäne zu enthalten. Beachten Sie den Zertifikatanforderungsteil: Er sollte Ihr Problem mit nicht exportierbaren Zertifikaten lösen. Die Software - Versionen sind ziemlich alt ( Ubuntu ist 8.04 und darüber hinaus Trust Power Broker ist nach wie vor ebenfalls ), aber die Grundidee scheint mir solide.

Ich habe den oben genannten Beitrag formatiert, um das Lesen zu erleichtern. Durch das Zitieren werden Codefelder grau auf grau angezeigt, daher habe ich sie entfernt. Entschuldigung:


Haftungsausschluss: Dieses Handbuch wurde aus der Perspektive der Linux Ubuntu 8.04-Distribution geschrieben. Damit dies mit anderen Linux- oder Unix-Distributionen funktioniert, müssen möglicherweise einige Änderungen vorgenommen werden.

Die beiden wichtigsten Dinge, die Ihr Linux-Computer zur Authentifizierung über 802.1x benötigt, sind ein Client-Zertifikat und ein Konto in der Windows-Domäne. Während des Authentifizierungsprozesses präsentiert der Linux-Client sein Computerzertifikat dem Switch, der es wiederum dem RADIUS-Server vorlegt, der das Zertifikat überprüft, und überprüft das Computerkonto, dem das Zertifikat in Active Directory zugewiesen ist. Wenn das Zertifikat und das Computerkonto gültig sind, genehmigt der RADIUS-Server die Authentifizierungsanforderung, die an den Switch zurückgesendet wird, der wiederum den Port authentifiziert, mit dem die Linux-Box verbunden ist.

Als erstes müssen Sie Ihren Linux-Computer mit der Windows-Domäne verbinden. Da Linux einer Windows-Domäne nicht nativ beitreten kann, müssen wir die erforderliche Software herunterladen, damit wir dies tun können. Ebenso macht Software, damit wir genau dies tun können. Um dies unter Ubuntu zu installieren, ist es sehr einfach, folgen Sie einfach diesen Schritten:

  1. sudo apt-get update
  2. sudo apt-get install ebenfalls-open installieren
  3. sudo domainjoin-cli join enter the FQDN of your domain here enter your admin account here, können Sie das Format verwenden user@domain.com. Sie sollten auch in der Lage sein, die GUI-Version zu verwenden, indem Sie auf gehenSystem → Administration → Likewise.
  4. sudo update-rc.d ebenfalls offene Standardeinstellungen
  5. sudo /etc/init.d/likewise-open start

Wenn Sie Ubuntu nicht ausführen, können Sie die Software hier herunterladen: http://www.likewisesoftware.com/products/likewise_open . Sie können sich jetzt mit Ihrem Domain-Konto abmelden und wieder anmelden. Ich glaube, dass beide Formate von user@domain.comund domain \ user beide funktionieren. Ich werde das später testen.

Auf dem Linux-Computer befinden sich drei Dateien, die korrekt konfiguriert werden müssen, damit diese Authentifizierung stattfinden kann. Diese drei Dateien sind:

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

Zuerst konfigurieren wir die Software so, dass unser Linux-Computer ein Client-Zertifikat zur Authentifizierung bei einem 802.1x-fähigen Netzwerk verwenden kann. wpa_supplicantwird dafür verwendet.

Führen Sie die folgenden Schritte aus, um Ihre Datei wpa_supplicant.conf zu konfigurieren:

  1. sudo gedit /etc/wpa_supplicant.conf
  2. Fügen Sie Folgendes in die Datei ein und speichern Sie sie:

    # 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" 
    }
    

Jetzt müssen wir Ihre Schnittstellendatei bearbeiten. Führen Sie die folgenden Schritte aus, um Ihre Schnittstellendatei zu konfigurieren:

  1. sudo gedit / etc / network / interfaces
  2. Fügen Sie Folgendes in die Datei unter der eth0Benutzeroberfläche ein und speichern Sie sie:

    # 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
    

Der nächste Schritt ist das Generieren und Installieren Ihrer Zertifikate. Wir müssen ein selbstsigniertes Zertifikat generieren, dann eine Zertifikatanforderung basierend auf dem von uns erstellten selbstsignierten Zertifikat generieren und dann die Zertifikate installieren.

Hinweis: Wenn Sie Ihre Zertifikate erstellen und nach Ihrem Namen fragen, müssen Sie den Namen des Computers angeben, der sich authentifizieren soll. Aus Sicherheitsgründen empfehle ich, den Namen so anzupassen, wie er dem Computer zugewiesen ist, einschließlich der Groß- und Kleinschreibung. Wenn Sie sich nicht sicher sind, wie es Ihrem Computer zugewiesen ist, öffnen Sie ein Terminal und geben Sie den Hostnamen ein.

Folge diesen Schritten:

  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

    Beispiel: 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

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

Alle erstellten Zertifikate werden in Ihrem Home-Verzeichnis abgelegt ( /home/<username>). Der nächste Teil besteht darin, ein Zertifikat von Ihrer Zertifizierungsstelle mithilfe der Zertifikatanforderung anzufordern, die im vorherigen Schritt erstellt wurde. Dies muss auf einem Windows-Computer erfolgen, da Linux und Windows aus irgendeinem Grund beim Anfordern und Herunterladen von Zertifikaten nicht gut miteinander auskommen. Ich fand es einfach einfacher, die Zertifikatanforderung per E-Mail an mich selbst zu senden und auf einem Windows-Computer auszuführen.

Führen Sie die folgenden Schritte aus, um die Zertifikatanforderung abzuschließen:

  1. Wechseln Sie in Ihr Home-Verzeichnis auf dem Linux-Computer und suchen Sie Ihre Zertifikatanforderungsdatei
  2. Senden Sie die Datei entweder per E-Mail an sich selbst oder öffnen Sie sie mit einem Texteditor (z. B. gedit). Kopieren Sie die Anforderung, fügen Sie sie in eine E-Mail ein und senden Sie sie an sich selbst.
  3. Öffnen Sie auf einem Windows-Client eine Webseite mit dem Internet Explorer auf der Website Ihrer Zertifizierungsstelle (z. B. http://caname/certsrv).
  4. Wählen Sie Zertifikat anfordern
  5. Erweiterte Zertifikatsanforderung
  6. Öffnen Sie nun Ihre E-Mail und erhalten Sie die Zertifikatanforderung, die Sie selbst per E-Mail gesendet haben.
  7. Wenn Sie sich die Datei per E-Mail geschickt haben, öffnen Sie sie mit dem Editor und kopieren Sie den Inhalt und fügen Sie ihn in das Anforderungsfeld für Base-64-codierte Zertifikate ein. Wenn Sie sich den Inhalt der Zertifikatsanforderungsdatei und nicht die Datei selbst per E-Mail gesendet haben, kopieren Sie die Anforderung einfach und fügen Sie sie von dort in das Feld für die Base-64-codierte Zertifikatanforderung ein.
  8. Klicken Sie auf Senden und laden Sie das Zertifikat in Base-64-Form herunter, nicht DER.
  9. Speichern Sie das Zertifikat auf Ihrem Desktop und nennen Sie es your Linux machine name.pem. Das System hängt das automatisch .ceran das Ende an, löschen Sie es also einfach aus. Linux verwendet .pem für Zertifikatserweiterungen.
  10. Nehmen Sie diese Datei und senden Sie sie per E-Mail an sich selbst zurück.
  11. Holen Sie sich jetzt auf Ihrem Linux-Computer Ihr Zertifikat und speichern Sie es irgendwo (vorzugsweise in Ihrem Home-Ordner, um die Dinge organisiert und zusammen zu halten).
  12. Jetzt müssen wir Ihr Zertifikat, das Sie gerade erhalten haben, in Ihren /etc/ssl/certsOrdner kopieren und Ihren privaten Schlüssel / Ihr Zertifikat und Ihren privaten Schlüssel, die zuvor in Ihrem /etc/ssl/privateOrdner erstellt wurden, kopieren . Jetzt hat nur root die Berechtigung dazu. Sie können dies entweder über die Befehlszeile durch Eingabe von sudo cp /home/<username>/<certificate>.pem /etc/ssl/privateoder tun /etc/ssl/certs. Dies kann auch über die GUI erfolgen, indem Sie mit dem Befehl gksudo kopieren und einfügen und nautilus eingeben. Nautilus ist der von Ubuntu verwendete GUI-Dateibrowser, der als Root ausgeführt wird und das Kopieren und Einfügen in Verzeichnisse ermöglicht, auf die nur root Zugriff hat.

Nachdem unsere Zertifikate vorhanden sind, müssen wir openssl mitteilen, wie wir die Zertifikate verwenden möchten. Dazu müssen wir die Datei openssl.cnf bearbeiten und anweisen, unseren Linux-Computer als Client und nicht als Benutzer zu authentifizieren.

Gehen Sie dazu folgendermaßen vor:

  1. sudo gedit /etc/ssl/openssl.cnf
  2. Scrollen Sie etwa auf halber Strecke nach unten und Sie sollten einen Abschnitt namens sehen [usr_cert]. In diesem Abschnitt benötigen wir das, wo das nsCertTypeals "Für den normalen Client-Gebrauch ist dies typisch" definiert ist , und es sollte haben nsCertType = client, emailund es wird auskommentiert. Kommentieren Sie diese Zeile aus und löschen Sie die E-Mail, damit sie angezeigt wird nsCertType = client. Speichern Sie nun die Datei.

Jetzt sollten Sie alles, was Sie benötigen, richtig konfiguriert haben, damit ein Linux-Computer in einer Windows-Domänenumgebung ausgeführt und mit 802.1x authentifiziert wird.

Jetzt müssen Sie nur noch Ihren Netzwerkdienst neu starten, damit Linux die wpa_supplicant.confDatei verwendet, die jetzt an Ihre eth0Schnittstelle gebunden ist, und sich authentifiziert. Also lauf einfach sudo service networking restart. Wenn Sie nach dem Wiederherstellen Ihrer Schnittstelle keine IP-Adresse erhalten, können Sie eine IP-Adresse manuell von Ihrem DHCP-Server anfordern, indem Sie Folgendes eingeben sudo dhclient.



Ich habe es gerade versucht, und ich habe es versucht, als ich diesen Artikel zum ersten Mal selbst gefunden habe. Ich werde es noch einmal Wort für Wort versuchen, nur für den Fall.
Sirex

Nein, ich kann das nicht zum Laufen bringen. Ich hätte gedacht, dass die erweiterte Signaturanforderung vom Typ "Workstation" sein würde, aber ich hatte nur "Benutzer" und "Webserver" verfügbar.
Sirex

Ok, vielleicht könnten wir einen anderen Weg gehen. Es gibt eine Möglichkeit, alebit hacky, als nicht exportierbar gekennzeichnete Zertifikate zu exportieren: github.com/iSECPartners/jailbreak oder blog.gentilkiwi.com/mimikatz ( stackoverflow.com/questions/3914882/… ). Könnten Sie versuchen, ein Zertifikat von Ihrem p2v-Windows abzurufen und es zur Authentifizierung zu verwenden?
Beatcracker

Mit der Jailbreak-App kann ich den privaten Schlüssel erhalten. Im TLS-Modus hat es bei mir nicht funktioniert. Der PEAP-Modus möchte nur das CA-Zertifikat, das ich vom CA-Server / certsrv / url erhalten kann, aber das funktioniert auch nicht. Vielleicht mag es meine 'anonyme Identität', meinen Benutzernamen und mein Passwort nicht. Ich gehe davon aus, dass es entweder 'Benutzername' oder 'Benutzername@domain.com' ist, aber beides funktioniert bei mir nicht. Ich werde die Nachrichtenprotokolle einfügen.
Sirex

1
Schlechte Nachrichten, alle zusammen! Es scheint, dass es ein Fehler in Fedora 21 ist: Kabelverbindung mit 802.1x PEAP / MSCHAPv2 funktioniert nicht .
Beatcracker
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.