Назад | Перейти на главную страницу

linux 802.1x в проводной сети Windows

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

Я root на своей машине и администратор домена Windows, поэтому я должен иметь доступ ко всему, что мне нужно, чтобы это работало. В настоящее время моя Linux-машина имеет ограниченные возможности подключения, что заставляет меня думать, что она помещена в vlan по умолчанию для клиентов, отличных от 802.1x.

Я предполагаю, что мой общий вопрос: как я могу заставить мою Linux-машину использовать 802.1x в проводной сети Windows? Сеть представляет собой типичный домен Windows, в котором используются как учетные записи компьютеров, так и учетные записи пользователей.

Вот что я знаю и пробовал до сих пор:

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

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

Идея 2 была powerbroker ... - Я использовал powerbroker open (формально аналогично), чтобы присоединить Linux-машину к домену, getent passwd теперь показывает всех пользователей домена. - Я думал, что это поместит сертификат клиента и закрытый ключ в систему где-нибудь (/ etc / ssl / certs?), Но я ничего не могу найти

Идея 3, спросите кого-нибудь, кто знает, что они на самом деле делают.

Я должен указать, что изначально на этой Linux-машине были окна (которые я установил после установки Linux), поэтому я знаю, что сетевой коммутатор настроен правильно, и MAC и т. Д. Принимаются в сети; я почти уверен, что это просто проблема 802.1x

Изменить: совершенно забыл упомянуть его fedora 21 xfce spin, 64bit.

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


Сам никогда не пробовал, но эта почта похоже, содержит довольно подробное пошаговое руководство по настройке 802.1x между клиентом Linux и доменом Windows. Обратите внимание на часть запроса сертификата: она должна решить вашу проблему неэкспортируемого сертификата. Версии программного обеспечения довольно старые (Ubuntu составляет 8,04 и Брокер власти Beyond Trust все еще точно так же), но основная идея мне кажется твердой.

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


Отказ от ответственности: Это руководство написано с точки зрения дистрибутива 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 также-open
  3. sudo domainjoin-cli присоединиться enter the FQDN of your domain here enter your admin account here, вы можете использовать формат user@domain.com. Вы также должны иметь возможность использовать версию с графическим интерфейсом пользователя, перейдя в System → Administration → Likewise.
  4. sudo update-rc.d аналогично открыть значения по умолчанию
  5. sudo /etc/init.d/likewise-open start

Если вы не используете 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 / etc / сеть / интерфейсы

  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 - из enter a name for your certificate request here.pem

    Пример: sudo openssl req -new -newkey rsa: 1024 -nodes -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 - это браузер файлов с графическим интерфейсом пользователя, который использует 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.