[Из песочницы] 802.1x, EX2200, NPS и все-все-все…

Идея использовать 802.1x как средство борьбы с неавторизованным доступом к сети, не нова. Каждый из нас наверняка сталкивался с курьером из службы доставки, у которого из рукава фирменной куртки виднеется патчкорд, и ты уже видишь, как он, заметив свободную RJ-45 розетку, стремительным движением бросается к ней и…

Однако, если в общем концепте использование и настройка 802.1x с авторизацией через RADIUS избита и проста, в данном случае произошел казус, решение которого я и предлагаю ниже.
Дано:

  • Коммутатор доступа — EX2200, JunOS 12.3R2.
  • RADIUS-сервер на базе NPS Windows Server 2012R2.


  • Разнообразный зоопарк устройств вида — телевизоры, AppleTV, принтеры и прочее мелкое сетевое зверье, неспособное как нормальные и адекватные участники сети авторизоваться по сертификатами или PEAP. Для каждого из девайсов в Active Directory своя учетка в соответствующем OU с sAMAccountName=MAC (в нижнем регистре, без знаков разделения), password=sAMAccountName.


Для подразделений или групп безопасности, содержащих эти девайсы, создана отдельная FineGrainedPasswordPolicy, чтобы получить возможность задания паролей, неподходящих по стандартам безопасности.

Исходный конфиг для 802.1x на EX2200:

//set actual interfaces
set interfaces interface-range ACCESS_PORTS member "ge-0/0/[0-40]"
// Config interface range as L2 ports
set interfaces interface-range ACCESS_PORTS unit 0 family ethernet-switching
set protocols dot1x authenticator authentication-profile-name dynamicvlan
set protocols dot1x authenticator radius-options use-vlan-id
set protocols dot1x authenticator interface ACCESS_PORTS supplicant single
set protocols dot1x authenticator interface ACCESS_PORTS transmit-period 10
set protocols dot1x authenticator interface ACCESS_PORTS retries 0
set protocols dot1x authenticator interface ACCESS_PORTS mac-radius
set protocols dot1x authenticator interface ACCESS_PORTS supplicant-timeout 10
 
//set actual reject-vlan and fail-vlan
set protocols dot1x authenticator interface ACCESS_PORTS server-reject-vlan default
set protocols dot1x authenticator interface ACCESS_PORTS server-fail vlan-name default
set protocols dot1x authenticator interface ACCESS_PORTS guest-vlan default
 
//set actual password
set access radius-server 172.17.x.x secret "xxx"
set access profile dynamicvlan authentication-order radius
set access profile dynamicvlan radius authentication-server 172.17.x.x


Все рабочие станции авторизовались без проблем, а вот всякая вышеперечисленная шушера — нет. Wireshark упорно показывал, что NPS шлёт Access-Reject с кодом EAP 4, что, как известно в узких кругах, означает Failure.

Информативно, впрочем, как и всегда…

Протокол, используемый supplicant для mac-radius аутентификации, по умолчанию — EAP-MD5.

Есть еще варианты PEAP и PAP.

PEAP недоступен для EX2200.

Пробуем настраивать PAP. В plain text, конечно, не очень-то хотелось, но, за не имением лучшего, вбиваем заветную команду

set protocols dot1x authenticator interface ACCESS_PORTS mac-radius authentication-protocol pap


и (барабанная дробь) — Syntax error — услужливо сообщает нам Juniper.

В ходе разборок, угроз паяльником и прочих репрессивных мер сайт Juniper подсказал, что сия опция доступна только лишь для прошивок с 15.1 релиза.

Казалось бы, вот оно, решение проблемы. Ан нет, тот же самый Juniper мало того, что рекомендует, так ещё и всячески ограждает кастомеров от такого непотребства, как прошивка 15.1 на EX2200. Грит, утилизация центрального процессора и оперативной памяти сверх нормы, посему 12.3 — потолок версии JunOS для счастливых обладателей EX2200.

Окей, будем разбираться с протоколом, которым шлёт свитч данные на NPS.

Вот и оказалось, что по умолчанию шлёт он их в eap-md5, который что? — правильно, отключен в Windows Server, начиная аж с 2008 релиза — дескать, несекьюрно. Несколько запросов в Google дают искомый результат — reg-файл, включающий нужный нам протокол.

Однако NPS упорно отвечает на запросы принтеров и прочего Access-Reject.
Достал сигареты, вспомнил, что бросил, спрятал…

Google, кто ль на свете… А нет, это из другой оперы…

Ok, Google? 802.1x MAC authentication with NPS RADIUS

Спустя несколько страниц гугла, на форуме ubnt нашёл искомое. Надобно включить несколько параметров для учетных данных девайсов, после чего пересоздать пароли и — вуаля — Miracle. Причем, получилось даже лучше чем ожидалось. Eap-md5, конечно, не бог весть что, но все же лучше, чем plain text.

Результирующий конфиг, настройки и скрины политики под спойлером.

Конфигурация EX2200, политики NPS
Магический reg-файл, включающий поддержку EAP-MD5 в Windows Server 2012 R2
Windows Registry Editor Version 5.00
 
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\PPP\EAP\4]
"RolesSupported"=dword:0000000a
"FriendlyName"="MD5-Challenge"
"Path"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,\
  00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,52,00,\
  61,00,73,00,63,00,68,00,61,00,70,00,2e,00,64,00,6c,00,6c,00,00,00
"InvokeUsernameDialog"=dword:00000001
"InvokePasswordDialog"=dword:00000001

После внесения изменений в реестр нужно перезапустить службу NPS
Stop-Service IAS
Start-Service IAS

Скрипт, выставляющий необходимые настройки для аккаунтов девайсов:
$devices=Get-ADUser -SearchBase "ou=802.1x-groups,ou=devices_groups,dc=company,dc=local" -Filter *
 foreach ($device in $devices) {
 set-aduser -Identity $device.name -UserPrincipalName ($device.name+"@company.local") -PasswordNeverExpires $true -AllowReversiblePasswordEncryption $true -CannotChangePassword $true
 Set-ADAccountPassword -Identity $device.name -NewPassword (ConvertTo-SecureString -AsPlainText $device.name -force)
 }

По сути, он выставляет параметры эквивалентно скриншоту. Но, одно дело — проставить для пары девайсов, и совсем другое — когда у тебя их более -дцати. Также скрипт переустанавливает пароль для учетной записи девайса, что есть необходимо после включения обратимого шифрования.

image

Настройки политики NPS:

  • Указываем группу с девайсами и тип порта.

    3m56nfzul_m4hgqajodg8_1o9he.png

  • После манипуляций с реестром в списке доступных протоколов появляется наш заветный MD5-Challenge. Его и выбираем.

    ivorbzx3cc3owpxytsmfzcjzpgu.png

  • Оставшиеся настройки выставляем, исходя из требований логической реализации. Ничем не отличается от стандартной настройки RADIUS + 802.1x.

    q6taz9g0pganoesjbos2kwu6_ai.png



Итог:

  • Сетевые девайсы, типа телевизоры, Apple TV, принтеры аутентифицируются по 802.1x и по принадлежности к группе.
  • Пароли передаются не в открытом виде, а худо-бедно зашифрованные.


Список указаний, руководств и ресурсов:

Рекомендации Juniper по поводу версии ПО на EX2200
Поддержка EAP-PAP на устройствах Juniper для MAC RADIUS Authentication
Комьюнити UBNT, давшее последний пинок в нужном направлении

© Habrahabr.ru