Рассмотрим на практике использование Windows Active Directory + NPS (2 сервера для обеспечения отказоустойчивости) для 802.1x аутентификации пользователей — доменных компьютеров — устройств. Ознакомиться с теорией можно в Wikipedia, по ссылке: IEEE 802.1X
Так как «лаборатория» у меня ограничена по ресурсам, совместим роли NPS и контроллера домена, но вам я рекомендую такие критичные сервисы все же разделять.
Стандартных способов синхронизации конфигураций (политик) Windows NPS я не знаю, поэтому будем использовать скрипты PowerShell, запускаемые планировщиком заданий (автор мой бывший коллега). Для аутентификации компьютеров домена и для устройств, не умеющих в 802.1x (телефоны, принтеры и пр), будет настроена групповая политика и созданы группы безопасности.
В конце статьи расскажу о некоторых тонкостях работы с 802.1x — как можно использовать неуправляемые коммутаторы, dynamic ACL и пр. Поделюсь информацией об отловленных «глюках»…
Начнем с установки и настройки failover NPS on Windows Server 2012R2 (на 2016-м все аналогично): через Server Manager -> Add Roles and Features Wizard выбираем лишь Network Policy Server.
с помощью PowerShell:
Install-WindowsFeature NPAS -IncludeManagementTools
Небольшое уточнение — так как для Protected EAP (PEAP) вам обязательно потребуется сертификат, подтверждающий подлинность сервера (с соответствующими правами на использование), который будет в доверенных на клиентских компьютерах, то вам скорее всего потребуется установить еще и роль Certification Authority. Но будем считать, что CA у вас уже установлен…
Сделаем тоже самое и на втором сервере. Создадим папку для скрипта C:\Scripts на обоих серверах и сетевую папку на втором сервере \\SRV2\NPS-config$
На первом сервере создадим PowerShell скрипт C:\Scripts\Export-NPS-config.ps1 со следующим содержанием:
Export-NpsConfiguration -Path "\\SRV2\NPS-config$\NPS.xml"
После этого настроим задание в Task Sheduler: «Export-NpsConfiguration»
powershell -executionpolicy unrestricted -f "C:\Scripts\Export-NPS-config.ps1"
Выполнять для всех пользователей - Выполнить с наивысшими правами
Ежедневно - Повторять задачу каждые 10 мин. в течении 8 ч.
На резервном NPS настроим импорт конфигурации (политик):
создадим скрипт PowerShell:
echo Import-NpsConfiguration -Path "c:\NPS-config\NPS.xml" >> C:\Scripts\Import-NPS-config.ps1
и задачу на его выполнение каждые 10 минут:
powershell -executionpolicy unrestricted -f "C:\Scripts\Import-NPS-config.ps1"
Выполнять для всех пользователей - Выполнить с наивысшими правами
Ежедневно - Повторять задачу каждые 10 мин. в течении 8 ч.
Теперь, для проверки, добавим в NPS на одном из серверов(!) пару коммутаторов в RADIUS-клиенты (IP и Shared Secret) , две политики запросов на подключение: WIRED-Connect (Условие: «Тип порта NAS — Ethernet») и WiFi-Enterprise (Условие: «Тип порта NAS — IEEE 802.11») , а также сетевую политику Access Cisco Network Devices (Network Admins) :
Условия:
Группы Windows - domain\sg-network-admins
Ограничения:
Методы проверки подлинности - Проверка открытым текстом (PAP, SPAP)
Параметры:
Атрибуты RADIUS: Стандарт - Service-Type - Login
Зависящие от поставщика - Cisco-AV-Pair - Cisco - shell:priv-lvl=15
Со стороны коммутаторов следующие настройки:
aaa new-model
aaa local authentication attempts max-fail 5
!
!
aaa group server radius NPS
server-private 192.168.38.151 auth-port 1812 acct-port 1813 key %shared_secret%
server-private 192.168.10.151 auth-port 1812 acct-port 1813 key %shared_secret%
!
aaa authentication login default group NPS local
aaa authentication dot1x default group NPS
aaa authorization console
aaa authorization exec default group NPS local if-authenticated
aaa authorization network default group NPS
!
aaa session-id common
!
identity profile default
!
dot1x system-auth-control
!
!
line vty 0 4
exec-timeout 5 0
transport input ssh
escape-character 99
line vty 5 15
exec-timeout 5 0
logging synchronous
transport input ssh
escape-character 99
После настройки, спустя 10 минут, все клиенты\политики\параметры должны появиться и на резервном NPS и мы сможем авторизоваться на коммутаторах с помощью учетной записи ActiveDirectory, члена группы domain\sg-network-admins (которую мы создали заранее).
Перейдем к настройке Active Directory — создадим групповую и парольную политики, создадим необходимые группы.
Групповая политика Computers-8021x-Settings:
Name | NPS-802-1x |
Description | 802.1x |
Setting | Value |
---|---|
Use Windows wired LAN network services for clients | Enabled |
Shared user credentials for network authentication | Enabled |
Enable use of IEEE 802.1X authentication for network access | Enabled |
Enforce use of IEEE 802.1X authentication for network access | Disabled |
Computer Authentication | Computer only |
Maximum Authentication Failures | 10 |
Maximum EAPOL-Start Messages Sent | |
Held Period (seconds) | |
Start Period (seconds) | |
Authentication Period (seconds) |
Authentication method | Protected EAP (PEAP) |
Validate server certificate | Enabled |
Connect to these servers | |
Do not prompt user to authorize new servers or trusted certification authorities | Disabled |
Enable fast reconnect | Enabled |
Disconnect if server does not present cryptobinding TLV | Disabled |
Enforce network access protection | Disabled |
Authentication method | Secured password (EAP-MSCHAP v2) |
Automatically use my Windows logon name and password(and domain if any) | Enabled |
Создадим группу безопасности sg-computers-8021x-vl100, куда мы будем добавлять компьютеры, которые мы хотим распределять в влан 100 и настроим фильтрацию для созданной ранее групповой политики на эту группу:
Убедиться в том, что политика успешно отработала можно открыв «Центр управления сетями и общим доступом (Параметры сети и Интернет) — Изменение параметров адаптера (Настройка параметров адаптера) — Свойства адаптера», где мы сможем увидеть вкладку «Проверка подлинности»:
Когда убедились, что политика успешно применяется — можно переходить к настройке сетевой политики на NPS и портов коммутатора уровня доступа.
Создадим сетевую политику neag-computers-8021x-vl100 :
Conditions:
Windows Groups - sg-computers-8021x-vl100
NAS Port Type - Ethernet
Constraints:
Authentication Methods - Microsoft: Protected EAP (PEAP) - Unencrypted authentication (PAP, SPAP)
NAS Port Type - Ethernet
Settings:
Standard:
Framed-MTU 1344
TunnelMediumType 802 (includes all 802 media plus Ethernet canonical format)
TunnelPrivateGroupId 100
TunnelType Virtual LANs (VLAN)
Типовые настройки для порта коммутатора (обращаю внимание, что используется тип аутентификации «мультидомен» — Data & Voice, а также есть возможность аутентификации по mac адресу. на время «переходного периода» есть смысл использовать в параметрах
authentication event fail action authorize vlan 100
authentication event no-response action authorize vlan 100
использовать влан id не «карантинного», а того же, куда пользовательский компьютер должен был успешно попасть, авторизовавшись — пока не убедимся, что все работает как следует. Эти же параметры могут быть использованы и в других сценариях, например, когда в этот порт воткнут неуправляемый коммутатор и вы хотите, чтобы все устройства, подключенные в него и не прошедшие аутентификацию, попадали в определенный влан («карантинный»).
default int range Gi1/0/39-41
int range Gi1/0/39-41
shu
des PC-IPhone_802.1x
switchport mode access
switchport nonegotiate
switchport voice vlan 55
switchport port-security maximum 2
authentication event fail action authorize vlan 100
authentication event no-response action authorize vlan 100
authentication host-mode multi-domain
authentication port-control auto
authentication violation restrict
mab
dot1x pae authenticator
dot1x timeout quiet-period 15
dot1x timeout tx-period 3
storm-control broadcast level pps 100
storm-control multicast level pps 110
no vtp
lldp receive
lldp transmit
spanning-tree portfast
no shu
exit
убедиться, что компьютер\телефон успешно прошли аутентификацию можно командой:
sh authentication sessions int Gi1/0/39 det
Теперь создадим группу (например, sg-fgpp-mab ) в Active Directory для телефонов и добавим в нее один аппарат для тестов (в моем случае это Grandstream GXP2160 с мас-адресом 000b.82ba.a7b1 и соотв. учетной записью domain\000b82baa7b1) . Для созданной группы понизим требования парольной политики (используя Fine-Grained Password Policies через Active Directory Administrative Center -> domain -> System -> Password Settings Container) с такими параметрами Password-Settings-for-MAB:
тем самым разрешим использовать мас-адрес устройств в качестве паролей. После этого мы сможем создать сетевую политику для аутентификации 802.1x method mab, назовем ее neag-devices-8021x-voice. Параметры следующие:
- NAS Port Type — Ethernet
- Windows Groups — sg-fgpp-mab
- EAP Types: Unencrypted authentication (PAP, SPAP)
- RADIUS Attributes — Vendor Specific: Cisco — Cisco-AV-Pair — Attribute value: device-traffic-class=voice
после успешной аутентификации (не забываем настроить порт коммутатора), посмотрим информацию с порта:
sw-02#sh authentication se int Gi1/0/34
----------------------------------------
Interface: GigabitEthernet1/0/34
MAC Address: 000b.82ba.a7b1
IP Address: 172.29.31.89
User-Name: 000b82baa7b1
Status: Authz Success
Domain: VOICE
Oper host mode: multi-domain
Oper control dir: both
Authorized By: Authentication Server
Session timeout: N/A
Idle timeout: N/A
Common Session ID: 0000000000000EB2000B8C5E
Acct Session ID: 0x00000134
Handle: 0xCE000EB3
Runnable methods list:
Method State
dot1x Failed over
mab Authc Success
Теперь, как и обещал рассмотрим пару не совсем очевидных ситуаций. Например, нам требуется подключить компьютеры\устройства пользователей через неуправляемый коммутатор (свитч). В этом случае настройки порта для него будут выглядеть следующим образом:
interface GigabitEthernet1/0/1
description *SW — 802.1x — 8 mac*
shu
switchport mode access
switchport nonegotiate
switchport voice vlan 55
switchport port-security maximum 8 ! увеличиваем кол-во допустимых мас-адресов
authentication event fail action authorize vlan 100
authentication event no-response action authorize vlan 100
authentication host-mode multi-auth ! — режим аутентификации
authentication port-control auto
authentication violation restrict
mab
dot1x pae authenticator
dot1x timeout quiet-period 15
dot1x timeout tx-period 3
storm-control broadcast level pps 100
storm-control multicast level pps 110
no vtp
spanning-tree portfast
no shu
P.S. замечен очень странный глюк — если устройство было подключено через такой свитч, а потом его воткнули в управляемый коммутатор, то оно НЕ заработает, пока мы не перезагрузим(!) свитч 🙁 Пока других способов решения этой проблемы не нашел.
Еще один момент, связанный с DHCP (если используется ip dhcp snooping) — без таких вот опций:
ip dhcp snooping vlan 1-100
no ip dhcp snooping information option
почему-то корректно ip адрес не получить…хотя может это особенность нашего DHCP сервера
А еще Mac OS & Linux (в которых поддержка 802.1x нативная) пытаются пройти аутентификацию пользователем, даже если настроена аутентификация по мас-адресу.
В следующей части статьи рассмотрим применение 802.1x для Wireless (в зависимости от группы, в которую входит учетная запись пользователя , его будем «закидывать» в соответствующую сеть (влан), хотя подключаться они будут к одному SSID).