linux 802.1x w sieci przewodowej Windows

11

Chcę używać mojej stacji roboczej z linuksem w naszej sieci firmowej, ale napotkałem kilka problemów, a konkretnie 802.1xi.

Jestem rootem na moim komputerze i administratorem domeny Windows, więc powinienem mieć dostęp do wszystkiego, czego potrzebuję, aby to działało. Obecnie mój komputer z linuksem ma ograniczoną łączność, co prowadzi mnie do wniosku, że został ustawiony w domyślnym vlan dla klientów innych niż 802.1x.

Wydaje mi się, że moje ogólne pytanie brzmi: w jaki sposób mogę zmusić moją maszynę linux do używania standardu 802.1x w przewodowej sieci Windows? Sieć jest typową domeną systemu Windows i korzysta zarówno z kont komputerów, jak i użytkowników.

Oto, co wiem i próbowałem do tej pory:

Ja wierzę i będę musiał uzyskać ważny certyfikat komputera klienta do maszyny CERT CA dla domeny i klucz prywatny dla klienta

Pomysł 1, weź prawidłowy klucz z maszyny z systemem Windows / maszyny z domeną ca Uruchomiłem maszynę wirtualną z systemem Windows na maszynie z systemem Linux i dołączyłem do tej domeny, myśląc, że dzięki temu uzyskasz prawidłowy certyfikat klienta, który mógłbym zdobyć dla maszyny z systemem Linux. - w tym celu wyeksportowałem następnie certyfikat klienta i certyfikat ca serwera Windows ca, a następnie przekonwertowałem je na format PEM, gotowy do menedżera sieci w systemie Linux (przy założeniu, że PEM nie wymaga DER). - Następnie próbowałem wyeksportować klucz prywatny na maszynie wirtualnej systemu Windows za pomocą certmgr, ale został on oznaczony jako nieeksportowalny :-(

Idea 2 była powerbrokerem ... - Użyłem powerbrokera open (podobnie formalnie), aby dołączyć maszynę linux do domeny, getent passwd pokazuje teraz wszystkich użytkowników domeny. - Myślałem, że to umieści gdzieś certyfikat klienta i klucz prywatny w systemie (/ etc / ssl / certs?), Ale nic nie mogę znaleźć

Pomysł 3, zapytaj kogoś, kto wie, co faktycznie robi.

Powinienem zaznaczyć, że pierwotnie ta maszyna linuksowa miała na sobie okna (które p2v'd po instalacji linuxa), więc wiem, że przełącznik sieciowy jest prawidłowo ustawiony, a MAC itp. Jest akceptowany w sieci; jestem prawie pewien, że to tylko problem 802.1x

Edycja: całkowicie zapomniałem wspomnieć o fedora 21 xfce spin, 64-bit.

Sirex
źródło
Jakiego suplikanta używasz? Xsupplicant, wpa_supplicant czy toczenie własnego?
Brian
fedora 21 po wyjęciu z pudełka, wygląda na to, że zainstalowany jest tylko wpa_supplicant. Używam menedżera sieci, aby spróbować się połączyć (z Xfce Desktop).
Sirex,
tak, to mniej więcej podsumowuje, jak daleko już mam. Patrząc na maszyny z systemem Windows, wydają się używać PEAP z MSCHAP v2, więc tego właśnie próbowałem na maszynach z systemem Linux. Głównie myślę, że staram się wiedzieć, gdzie / jak uzyskać ważne certyfikaty i jak powinna wyglądać moja nazwa użytkownika („bob” „[email protected]” „domain \ bob”? Próbowałem już kilku sposobów uruchomienie, ale jak dotąd brak sukcesu, po prostu ponownie wyświetla monit o
podanie
Próbowałem wyeksportować certyfikat CA (w „pomyśle 1”), ale wciąż pojawia się monit o hasło i nie jestem pewien, czy idę właściwą drogą w formacie PEM. Jest też pole wyboru „nie jest wymagany certyfikat CA”, ale nie wiem, czy AD by tego chciał (zakładam, że to tylko decyzja klienta, aby zrezygnować z czeku CA, prawda?)
Sirex

Odpowiedzi:

10

Złe wieści, wszyscy! Wygląda na to, że w Fedorze 21 występuje nierozwiązany błąd: Połączenie przewodowe z PEAP / MSCHAPv2 802.1x nie działa . Więc chociaż poniższa odpowiedź może działać w przypadku innych dystrybucji, użytkownicy Fedory 21 nie mają obecnie szczęścia.


Nigdy tego nie próbowałem, ale wydaje się, że ten post zawiera dość szczegółowy opis konfiguracji 802.1x między klientem Linux a domeną Windows. Zwróć uwagę na część żądania certyfikatu: powinna rozwiązać problem z certyfikatem niewymagalnym. Wersje oprogramowania są dość stare ( Ubuntu to 8.04, a Power Broker Beyond Trust nadal jest podobny ), ale podstawowy pomysł wydaje mi się solidny.

Sformatowałem wyżej wymieniony post, aby ułatwić czytanie. Cytowanie powoduje, że pola kodu stają się szare na szaro, więc zrezygnowałem z tego, przepraszam:


Oświadczenie: Ten przewodnik został napisany z perspektywy dystrybucji systemu Linux Ubuntu 8.04. Aby działało to z innymi dystrybucjami Linuksa lub Uniksa, konieczne może być wprowadzenie pewnych zmian.

Dwie główne rzeczy, które są niezbędne do uwierzytelnienia komputera z systemem Linux w standardzie 802.1x, to certyfikat klienta i konto w domenie Windows. Podczas procesu uwierzytelniania klient Linux przedstawia przełącznikowi swój certyfikat komputerowy, który z kolei przedstawia go serwerowi RADIUS, który weryfikuje certyfikat, i weryfikuje konto komputera, do którego certyfikat jest przypisany w usłudze Active Directory. Jeśli certyfikat i konto komputera są prawidłowe, serwer RADIUS zatwierdza żądanie uwierzytelnienia, wysyłając je z powrotem do przełącznika, który z kolei uwierzytelnia port, do którego podłączony jest moduł Linux.

Pierwszą rzeczą, którą należy zrobić, jest dołączenie komputera z systemem Linux do domeny Windows. Ponieważ Linux nie może natywnie dołączyć do domeny Windows, musimy pobrać niezbędne oprogramowanie, aby nam to umożliwić. Podobnie tworzy oprogramowanie, które pozwala nam to zrobić. Aby zainstalować to na Ubuntu, jest to bardzo proste, wystarczy wykonać następujące kroki:

  1. sudo apt-get update
  2. sudo apt-get install podobnie otwarte
  3. dołącz do sudo domainjoin-cli enter the FQDN of your domain here enter your admin account here, możesz użyć tego formatu [email protected]. Powinieneś także móc korzystać z wersji GUI, przechodząc doSystem → Administration → Likewise.
  4. sudo update-rc.d podobnie domyślnie otwarte
  5. sudo /etc/init.d/likewise-open start

Jeśli nie używasz Ubuntu, możesz pobrać oprogramowanie tutaj http://www.likewisesoftware.com/products/likewise_open . Możesz się teraz wylogować i zalogować ponownie przy użyciu konta domeny. Uważam, że [email protected]działa zarówno format, jak i domena \ użytkownik. Przetestuję to później.

Istnieją trzy pliki znajdujące się na komputerze z systemem Linux, które muszą być poprawnie skonfigurowane, aby to uwierzytelnienie miało miejsce. Te trzy pliki to:

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

Najpierw skonfigurujemy oprogramowanie, aby umożliwić naszemu komputerowi z systemem Linux używanie certyfikatu klienta do uwierzytelniania w sieci obsługującej standard 802.1x; wpa_supplicantzostaną wykorzystane do tego.

Wykonaj następujące kroki, aby skonfigurować plik wpa_supplicant.conf:

  1. sudo gedit /etc/wpa_supplicant.conf
  2. Wklej następujące elementy do pliku i zapisz:

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

Teraz musimy edytować plik interfejsów. Wykonaj następujące kroki, aby skonfigurować plik interfejsów:

  1. sudo gedit / etc / network / interfaces
  2. Wklej następujące elementy do pliku w eth0interfejsie i zapisz go:

    # 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
    

Następnym krokiem jest wygenerowanie i zainstalowanie certyfikatów. Będziemy musieli wygenerować certyfikat z podpisem własnym, następnie wygenerować żądanie certyfikatu na podstawie utworzonego przez nas certyfikatu z podpisem własnym, a następnie zainstalować certyfikaty.

Uwaga: Tworząc certyfikaty, ilekroć prosi o twoje imię, musisz podać nazwę komputera, który będzie uwierzytelniany. Dla bezpieczeństwa zalecam dopasowanie nazwy do sposobu przypisania do komputera, w tym rozróżnianie wielkości liter. Jeśli nie masz pewności, w jaki sposób jest on przypisany do twojego komputera, otwórz terminal i wpisz nazwę hosta.

Wykonaj następujące kroki:

  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

    Przykład: 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

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

Wszystkie utworzone certyfikaty są umieszczone w katalogu domowym ( /home/<username>). Następną częścią jest zażądanie certyfikatu od urzędu certyfikacji przy użyciu żądania certyfikatu utworzonego w poprzednim kroku. Trzeba będzie to zrobić na komputerze z systemem Windows, ponieważ z jakiegoś powodu Linux i Windows nie radzą sobie zbyt dobrze podczas żądania i pobierania certyfikatów; Po prostu łatwiej mi przesłać e-mailem żądanie certyfikatu i wykonać je na komputerze z systemem Windows.

Wykonaj następujące kroki, aby ukończyć żądanie certyfikatu:

  1. Przejdź do katalogu domowego na komputerze z systemem Linux i znajdź plik żądania certyfikatu
  2. Prześlij plik do siebie e-mailem lub otwórz go za pomocą edytora tekstu (takiego jak gedit), a następnie skopiuj i wklej żądanie do wiadomości e-mail i wyślij je do siebie.
  3. Na kliencie z systemem Windows otwórz stronę internetową przy użyciu IE na stronie internetowej swojego urzędu certyfikacji (np. http://caname/certsrv).
  4. Wybierz Poproś o certyfikat
  5. Zaawansowane żądanie certyfikatu
  6. Teraz otwórz swój e-mail i otrzymaj prośbę o certyfikat, który sam wysłałeś e-mailem.
  7. Jeśli plik został wysłany e-mailem, otwórz go za pomocą notatnika i skopiuj i wklej zawartość do pola żądania certyfikatu zakodowanego w standardzie Base-64. Jeśli sam wysłałeś e-mailem zawartość pliku żądania certyfikatu, a nie sam plik, po prostu skopiuj i wklej stamtąd żądanie do pola żądania certyfikatu zakodowanego w standardzie Base-64.
  8. Kliknij Prześlij i pobierz certyfikat w formacie Base-64, a nie DER.
  9. Zapisz certyfikat na pulpicie i nazwij go your Linux machine name.pem. System automatycznie dołączy go .cerdo końca, więc po prostu go usuń. Linux używa .pem do rozszerzeń certyfikatów.
  10. Weź ten plik i wyślij go z powrotem do siebie.
  11. Teraz na komputerze z systemem Linux zdobądź certyfikat i zapisz go gdzieś (najlepiej w folderze domowym, aby wszystko było uporządkowane i razem).
  12. Teraz musimy skopiować otrzymany właśnie certyfikat do /etc/ssl/certsfolderu i musimy skopiować Twój klucz prywatny / certyfikat i klucz prywatny utworzony wcześniej w tym /etc/ssl/privatefolderze. Teraz tylko root ma na to pozwolenie, więc możesz to zrobić albo z linii poleceń, wpisując sudo cp /home/<username>/<certificate>.pem /etc/ssl/privatelub /etc/ssl/certs. Można to również zrobić z GUI, kopiując i wklejając, używając polecenia gksudo i wpisując nautilus. Nautilus jest przeglądarką plików GUI używaną przez Ubuntu i będzie działać jako root, umożliwiając kopiowanie i wklejanie do katalogów, do których dostęp ma tylko root.

Teraz, gdy nasze certyfikaty są na miejscu, musimy powiedzieć openssl, w jaki sposób chcemy korzystać z certyfikatów. Aby to zrobić, musimy edytować plik openssl.cnf i nakazać mu uwierzytelnienie naszego komputera z systemem Linux jako klienta, a nie użytkownika.

Aby to zrobić, wykonaj następujące kroki:

  1. sudo gedit /etc/ssl/openssl.cnf
  2. Przewiń w dół około połowy, a powinieneś zobaczyć sekcję o nazwie [usr_cert]. W tej sekcji potrzebujemy miejsca, w którym nsCertTypejest ono zdefiniowane jako „Do normalnego użytku przez klienta jest to typowe” , i powinno to mieć nsCertType = client, emaili zostanie skomentowane. Usuń komentarz z tego wiersza i usuń wiadomość e-mail, aby się pojawiła nsCertType = client. Teraz zapisz plik.

Teraz powinieneś mieć wszystko, czego potrzebujesz poprawnie skonfigurowane, aby komputer z systemem Linux działał w środowisku domeny Windows i uwierzytelniał się przy użyciu 802.1x.

Teraz wystarczy zrestartować usługę sieciową, aby Linux użył wpa_supplicant.confpliku powiązanego z eth0interfejsem i uwierzytelnił się. Więc po prostu biegnij sudo service networking restart. Jeśli nie otrzymasz adresu IP po ponownym uruchomieniu interfejsu, możesz ręcznie zażądać adresu IP z serwera DHCP, wpisując sudo dhclient.


beatcracker
źródło
właśnie tego próbowałem i próbowałem, kiedy sam znalazłem ten artykuł. Na wszelki wypadek spróbuję to słowo w słowo.
Sirex
nie, nie mogę tego zrobić. Myślałem, że zalecane żądanie podpisania będzie typu „stacja robocza”, ale mam tylko „użytkownika” i „serwer WWW”.
Sirex
Ok, więc może moglibyśmy przejść inną drogą. Istnieje sposób, alebit hacky, na eksport certyfikatów oznaczonych jako nieeksportowalne: github.com/iSECPartners/jailbreak lub blog.gentilkiwi.com/mimikatz ( stackoverflow.com/questions/3914882/... ). Czy możesz spróbować pobrać certyfikat z systemu Windows XP i użyć go do uwierzytelnienia?
beatcracker
aplikacja jailbreak pozwala mi zdobyć klucz prywatny. Nie działało to dla mnie w trybie TLS. Tryb PEAP chce tylko certyfikatu CA - który mogę pobrać z serwera ca / ​​certsrv / url, ale to też nie działa. Być może nie podoba mi się moja „anonimowa tożsamość”, typ nazwy użytkownika i hasło, zakładam, że jest to „nazwa użytkownika” lub „nazwa uż[email protected]”, ale żadna z nich nie działa. Wkleję dzienniki wiadomości.
Sirex
1
Złe wieści, wszyscy! Wygląda na to, że jest to błąd w Fedorze 21: Połączenie przewodowe z PEAP / MSCHAPv2 802.1x nie działa .
beatcracker