linux 802.1x у дротовій мережі Windows


11

Я хочу використовувати свою робочу станцію linux у мережі нашої компанії, але я зіткнувся з кількома проблемами, зокрема, вважаю 802.1xi.

Я корінь на своїй машині та адміністраторі домену Windows, тому я мав би змогу отримати доступ до всього, що мені потрібно, щоб це працювало. В даний час моя машина Linux має обмежене підключення, що призводить до того, що я вважаю, що вона введена в vlan за замовчуванням для не 802.1x клієнтів.

Я здогадуюсь, моє загальне питання: Як я можу змусити машину Linux використовувати 802.1x у мережі з провідними вікнами? Мережа є типовим доменом для Windows і використовує машинні облікові записи, а також користувацькі.

Це те, що я знаю і намагався до цього часу:

Я вважаю, що мені знадобиться отримати дійсний клієнтський сертифікат для машини, сертифікат CA для домену та приватний ключ для клієнта

Ідея 1, захопіть дійсний ключ від машини Windows / домену ca машина. Я запустив Windows VM на машині Linux і приєднався до цього домену, думаючи, що це створить дійсний клієнтський сертифікат, який я міг би зробити для машини Linux. - для цього я експортував клієнтський сертифікат і сервер з сервера Windows ca, потім конвертував їх у формат PEM, готовий до мережевого менеджера в Linux (якщо вважати, що PEM не повинен бути DER). - Потім я спробував експортувати приватний ключ у самій програмі Windows VM за допомогою certmgr, але вона була позначена як неекспортна :-(

Ідея 2 була powerbroker ... - Я використовував powerbroker open (формально так само), щоб приєднати машину Linux до домену, getent passwd тепер показує всіх користувачів домену. - Я думав, що це поставить клієнтський сертифікат і приватний ключ у системі десь (/ etc / ssl / certs?), Але я нічого не можу знайти

Ідея 3, запитайте когось, хто знає, що вони насправді роблять.

Я мушу зазначити, що спочатку на цій машині Linux були на ньому вікна (які я p2v'd після встановлення Linux), тому я знаю, що мережевий комутатор налаштовано правильно, а MAC і т.д. прийнято в мережі; Я впевнений, що це лише 802.1x питання

Редагувати: повністю забув згадати про його Fedora 21 xfce спін, 64 біт.


Якого благання ви використовуєте? Xsupplicant, wpa_supplicant або прокат власних?
Брайан

його fedora 21 з коробки, здається, встановлено лише wpa_supplicant. Я використовую мережевий менеджер, щоб спробувати підключитися, хоча (з xfce desktop).
Сірекс


так, це більш-менш підсумовує, наскільки я вже зайшов. Дивлячись на машини Windows, вони, здається, використовують PEAP з MSCHAP v2, тож ось що я спробував на машинах Linux. В основному я думаю, що я намагаюся знати, де / як отримати дійсні сертифікати, і як має виглядати моє ім’я користувача ('bob' 'bob@domain.com' 'домен \ bob'?) Я спробував досить багато способів змусивши його працювати, але успіху поки що немає, він просто знову запрошує мій пароль
Sirex

Я намагався експортувати сертифікат CA (в «ідеї 1»), але я все одно отримую репромінований пароль, і я не впевнений, що я навіть іду правильним маршрутом у форматі PEM. Поле "Не вимагається сертифікат CA" також, але я не знаю, чи хотілося б це AD (я припускаю, що це просто рішення клієнта, щоб все-таки відкинути чек CA, правда?)
Sirex

Відповіді:


10

Погані новини, всі! Схоже, у Fedora 21 є нефіксована помилка: Провідне з'єднання з 802.1x PEAP / MSCHAPv2 не працює . Тож як відповідь нижче може працювати для інших дистрибутивів, користувачам Fedora 21 наразі не пощастило.


Я ніколи цього не пробував, але ця публікація містить досить детальну інформацію щодо налаштування 802.1x між клієнтом Linux та доменом Windows. Зверніть увагу на частину запиту на сертифікат: вона повинна вирішити вашу проблему з неекспортируемим сертифікатом. Версії програмного забезпечення досить старі ( Ubuntu 8,04, так само як і раніше Trust's Power Broker ), але основна ідея мені здається твердою.

Я відформатував вищезгаданий пост, щоб полегшити його читання. Цитування робить поле коду сірим на сірому, тому я його випав, вибачте:


Відмова від відповідальності: Цей посібник написаний з точки зору дистрибуції Linux Ubuntu 8.04. Щоб ця робота працювала з іншими дистрибутивами Linux або Unix, можливо, знадобляться деякі зміни.

Дві основні речі, необхідні вашій системі Linux для автентифікації понад 802.1x, - це сертифікат клієнта та обліковий запис у домені Windows. Під час процесу аутентифікації клієнт Linux представляє свій комп'ютерний сертифікат комутатору, який, в свою чергу, подає його серверу RADIUS, який перевіряє сертифікат, і перевіряє обліковий запис комп'ютера, якому сертифікат призначений в Active Directory. Якщо сертифікат та обліковий запис комп'ютера дійсні, сервер RADIUS затверджує запит аутентифікації, надсилаючи його назад до комутатора, який, в свою чергу, автентифікує порт, до якого підключено вікно Linux.

Перше, що потрібно зробити - це приєднати комп'ютер Linux до домену Windows. Оскільки Linux не може приєднатися до домену Windows, ми мусимо завантажити необхідне програмне забезпечення, яке дозволяє нам це робити. Так само робить програмне забезпечення, яке дозволяє нам робити саме це. Встановити це на Ubuntu дуже просто, просто виконайте наступні дії:

  1. sudo apt-get update
  2. sudo apt-get install аналогічно-відкрити
  3. sudo domainjoin-cli приєднайтесь enter the FQDN of your domain here enter your admin account here, ви можете використовувати формат user@domain.com. Ви також повинні мати можливість використовувати версію GUI, перейшовши наSystem → Administration → Likewise.
  4. sudo update-rc.d так само - відкрити параметри за замовчуванням
  5. sudo /etc/init.d/likewise-відкрити старт

Якщо ви не працюєте з Ubuntu, ви можете завантажити програмне забезпечення тут http://www.likewisesoftware.com/products/likewise_open . Тепер ви можете вийти з системи та ввійти назад, використовуючи свій обліковий запис домену. Я вважаю, що або формат, user@domain.comі домен \ користувач працюють як. Я перевірю це пізніше.

На машині Linux є три файли, які повинні бути правильно налаштовані для того, щоб ця автентифікація відбулася. Ці три файли:

  1. /etc/wpa_supplicant.conf
  2. / і т.д. / мережа / інтерфейси
  3. /etc/openssl/openssl.cnf

По-перше, ми налаштуємо програмне забезпечення, яке дозволить нашій машині Linux використовувати сертифікат клієнта для автентифікації в мережі з підтримкою 802.1x; wpa_supplicantбуде використано для цього.

Виконайте наступні дії, щоб налаштувати файл wpa_supplicant.conf:

  1. sudo gedit /etc/wpa_supplicant.conf
  2. Вставте наступне у файл та збережіть його:

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

Тепер ми повинні відредагувати ваш файл інтерфейсів. Виконайте наступні дії, щоб налаштувати файл інтерфейсів:

  1. sudo gedit / тощо / мережа / інтерфейси
  2. Вставте наступне у файл під eth0інтерфейсом і збережіть його:

    # 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
    

Наступним кроком є ​​створення та встановлення ваших сертифікатів. Нам доведеться генерувати самопідписаний сертифікат, потім генерувати запит на сертифікат на основі створеного нами самопідписаного сертифіката, а потім встановити сертифікати.

Примітка. Під час створення ваших сертифікатів, коли він запитує ваше ім’я, ви повинні вказати ім'я комп'ютера, який буде автентичним. Для забезпечення безпеки я рекомендую вказати ім’я так, як воно присвоєно комп'ютеру, включаючи залежність від регістру. Якщо ви не впевнені, як це призначено вашому комп'ютеру, відкрийте термінал і введіть ім’я хоста.

Виконайте такі дії:

  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

    Приклад: 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

    Приклад: sudo openssl req -new -newkey rsa: 1024-вузли -keyout privkey.pem -out certreq.pem

Усі створені сертифікати розміщуються у вашому домашньому каталозі ( /home/<username>). Наступна частина полягає в тому, щоб запитувати сертифікат у вашої організації з використанням запиту на сертифікат, створеного на попередньому кроці. Це потрібно зробити на машині Windows, оскільки чомусь Linux і Windows не надто добре уживаються при запиті та завантаженні сертифікатів; Мені просто стало простіше надіслати запит на сертифікат собі та виконати його на машині Windows.

Виконайте такі дії, щоб виконати запит на сертифікат:

  1. Перейдіть у домашній каталог на машині Linux і знайдіть файл запиту вашого сертифіката
  2. Або надішліть файл електронною поштою самому або відкрийте файл за допомогою текстового редактора (наприклад, gedit) і скопіюйте та вставте запит в електронний лист та надішліть його собі.
  3. На клієнті Windows відкрийте веб-сторінку за допомогою IE на веб-сайті вашої організації (наприклад http://caname/certsrv).
  4. Виберіть Запит на сертифікат
  5. Розширений запит на сертифікат
  6. Тепер відкрийте свою електронну пошту та отримайте запит на сертифікат, який ви надіслали електронною поштою.
  7. Якщо ви самі надіслали файл електронною поштою, відкрийте його з блокнотом та скопіюйте та вставте вміст у поле запиту сертифікованого сертифікату Base-64. Якщо ви відправили електронною поштою вміст файла запиту на сертифікат, а не сам файл, просто скопіюйте та вставте запит звідти у поле запиту сертифікованого сертифікату Base-64.
  8. Клацніть Надіслати та завантажте сертифікат у формі Base-64, а не DER.
  9. Збережіть сертифікат на робочому столі та назвіть його your Linux machine name.pem. Система автоматично додасть її .cerдо кінця, тому просто видаліть її. Linux використовує .pem для розширень сертифікатів.
  10. Візьміть цей файл і надішліть його електронною поштою.
  11. Тепер на вашій машині Linux дістаньте свій сертифікат і збережіть його десь (бажано домашню папку, щоб все було організовано та разом).
  12. Тепер нам потрібно скопіювати ваш сертифікат, який ви тільки що отримали, у свою /etc/ssl/certsпапку, і нам потрібно скопіювати ваш приватний ключ / сертифікат та приватний ключ, створені раніше у вашій /etc/ssl/privateпапці. Тепер тільки root має дозвіл на це, тому ви можете це зробити за допомогою командного рядка, ввівши sudo cp /home/<username>/<certificate>.pem /etc/ssl/privateабо /etc/ssl/certs. Це також можна зробити з графічного інтерфейсу, скопіювавши та вставивши за допомогою команди gksudo та набравши в nautilus. Nautilus - це браузер файлів GUI, який використовує Ubuntu, і він запустить це як root, що дозволяє копіювати та вставляти в каталоги, до яких має доступ лише root.

Тепер, коли наші сертифікати вже є, нам потрібно розповісти openssl, як ми хочемо використовувати сертифікати. Для цього нам слід відредагувати файл openssl.cnf і сказати йому, щоб він автентифікував нашу Linux-машину як клієнта, а не користувача.

Для цього виконайте наступні дії:

  1. sudo gedit /etc/ssl/openssl.cnf
  2. Прокрутіть вниз близько половини, і ви побачите розділ, який називається [usr_cert]. У цьому розділі нам потрібне те, де значення nsCertTypeвизначено як "Для звичайного використання клієнта це типово" , і він повинен мати, nsCertType = client, emailі це буде прокоментовано. Відкиньте цей рядок і видаліть електронний лист, щоб він відображався nsCertType = client. Тепер збережіть файл.

Тепер у вас повинно бути все, що вам потрібно правильно налаштувати, щоб машина Linux працювала в середовищі домену Windows та аутентифікувалась за допомогою 802.1x.

Залишилося лише перезапустити мережевий сервіс, щоб Linux використовував wpa_supplicant.confфайл, який тепер прив’язаний до вашого eth0інтерфейсу, і автентифікувати. Тож просто біжи sudo service networking restart. Якщо ви не отримаєте IP-адресу після відновлення інтерфейсу, ви можете вручну запросити IP-адресу від вашого сервера DHCP, ввівши sudo dhclient.



Я тільки що спробував це, і я спробував це, коли я вперше сам знайшов цю статтю. Я спробую ще раз, хоча слово за словом, про всяк випадок.
Сірекс

ні, не можу це працювати. Я б подумав, що вдосконалений запит на підпис буде типу "робоча станція", але у мене були лише "користувач" та "веб-сервер".
Сірекс

Гаразд, так, можливо, ми могли б піти іншим маршрутом. Існує спосіб, alebit Hacky, експортні сертифікати , помічені як неекспортіруемие: github.com/iSECPartners/jailbreak або blog.gentilkiwi.com/mimikatz ( stackoverflow.com/questions/3914882 / ... ). Чи можете ви спробувати захопити cert з вашого p2v'd Windows і використовувати його для аутентифікації?
beatcracker

додаток джейлбрейка дозволить мені отримати приватний ключ. Це не працювало для мене в режимі TLS. У режимі PEAP потрібен лише сертифікат CA - який я можу зійти з сервера ca / ​​certsrv / url, але це також не працює. Можливо, це не подобається моєму "анонімному посвідченню", типу імені користувача та паролю, я припускаю, що це або "ім'я користувача", або "ім'я користувача@domain.com", але для мене це не працює. Я вставляю журнали повідомлень.
Сірекс

1
Погані новини, всі! Здається, що це помилка у Fedora 21: Провідне з'єднання з 802.1x PEAP / MSCHAPv2 не працює .
beatcracker
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.