NPS и RADIUS в Windows Server: аутентификация Wi-Fi

NPS — встроенный RADIUS-сервер Windows Server

Network Policy Server (NPS) — это RADIUS-сервер от Microsoft, встроенный в Windows Server. Никакого FreeRADIUS, никаких сторонних систем — NPS аутентифицирует пользователей Wi-Fi прямо через Active Directory.

Классический сценарий, с которым мы работаем чаще всего: корпоративная Wi-Fi сеть на WPA2-Enterprise, сотрудники подключаются по своим доменным учётным данным. NPS проверяет логин и пароль в Active Directory, при необходимости назначает VLAN и применяет нужные политики доступа. Всё это — без единого стороннего компонента.

Преимущества NPS для Windows-инфраструктуры:

  • Нативная интеграция с Active Directory — без сторонних модулей
  • Групповые политики для автоматической настройки клиентов
  • Поддержка EAP-TLS, PEAP, EAP-TTLS
  • Условные политики доступа: по группам AD, времени суток, типу устройства
  • Журналирование в Event Log и SQL Server
  • Поддержка RADIUS accounting

NPS работает на Windows Server 2016, 2019 и 2022 — в редакциях Standard и Datacenter. Отдельно лицензировать его не нужно: роль входит в стоимость серверной лицензии.

Установка роли NPS и выпуск сертификата

Установка NPS через PowerShell:

Install-WindowsFeature NPAS -IncludeManagementTools
Install-WindowsFeature ADCS-Cert-Authority -IncludeManagementTools

Для PEAP-аутентификации NPS нужен серверный сертификат. Если в домене уже поднят центр сертификации (AD CS), просто запрашиваем сертификат:

# Проверяем наличие подходящего шаблона
certutil -template | findstr /i "RAS"

# Запрос сертификата через MMC:
# 1. Откройте certlm.msc (сертификаты компьютера)
# 2. Personal → Certificates → правый клик → All Tasks → Request New Certificate
# 3. Выберите шаблон "RAS and IAS Server"
# 4. Завершите мастер

Если AD CS не развёрнут, установите его:

# Установка AD CS (Enterprise Root CA)
Install-AdcsCertificationAuthority -CAType EnterpriseRootCA `
    -CryptoProviderName "RSA#Microsoft Software Key Storage Provider" `
    -KeyLength 4096 `
    -HashAlgorithmName SHA256 `
    -ValidityPeriod Years `
    -ValidityPeriodUnits 10 `
    -CACommonName "Company-CA"

После установки CA сертификат для NPS выпустится автоматически через Autoenrollment — руками ничего делать не придётся. Проверяем:

Get-ChildItem Cert:\LocalMachine\My | Where-Object { $_.EnhancedKeyUsageList -match "Server Authentication" }

Регистрация NPS в Active Directory

NPS нужно зарегистрировать в Active Directory — иначе сервер просто не сможет читать dial-in атрибуты учётных записей пользователей:

# PowerShell
netsh ras add registeredserver

# Или через GUI:
# Откройте NPS Console → правый клик на NPS (Local) → Register server in Active Directory

Эта команда добавляет учётную запись компьютера NPS-сервера в группу RAS and IAS Servers в Active Directory.

Проверяем членство:

Get-ADGroupMember "RAS and IAS Servers" | Select-Object Name

Добавление RADIUS-клиентов

Каждая точка доступа или контроллер WLAN должны быть прописаны в NPS как RADIUS-клиент. Без этого шага аутентификация просто не заработает.

Через PowerShell:

# Добавление контроллера WLAN
New-NpsRadiusClient -Name "WLC-Main" `
    -Address "10.0.1.5" `
    -SharedSecret "R@diusS3cret2026!" `
    -VendorName "Cisco"

# Добавление отдельных точек доступа
New-NpsRadiusClient -Name "AP-Floor1" `
    -Address "10.0.1.10" `
    -SharedSecret "APsecret123!" `
    -VendorName "RADIUS Standard"

New-NpsRadiusClient -Name "AP-Floor2" `
    -Address "10.0.1.11" `
    -SharedSecret "APsecret123!" `
    -VendorName "RADIUS Standard"

# Добавление по подсети (все AP в сети)
New-NpsRadiusClient -Name "All-APs" `
    -Address "10.0.1.0/24" `
    -SharedSecret "APsecret123!"

Через GUI: NPS Console → RADIUS Clients and Servers → RADIUS Clients → New.

Убедитесь, что shared secret одинаковый на NPS и на точке доступа. На практике советуем генерировать секреты длиной от 22 символов — более короткие уже несколько раз приводили к проблемам у наших клиентов.

Создание политик доступа к сети

Политики NPS — это то, что реально управляет доступом: кто подключается к Wi-Fi и с какими параметрами. Создаём политику через PowerShell:

# Создание Connection Request Policy
# (обычно используется стандартная — "Use Windows authentication for all users")

# Создание Network Policy для сотрудников
New-NpsNetworkPolicy -Name "WiFi-Employees" `
    -ProcessingOrder 1 `
    -PolicyEnabled $true `
    -AccessType GRANT `
    -EapType 25 `
    -AuthenticationMethod "EAP"

Через GUI всё нагляднее. Откройте NPS Console → Policies → Network Policies → New:

  1. Policy Name: WiFi-Employees
  2. Conditions (условия):
    • Windows Groups: COMPANY\WiFi-Users
    • NAS Port Type: Wireless - IEEE 802.11
  3. Constraints (ограничения):
    • Authentication Methods: Microsoft: Protected EAP (PEAP)
    • Выберите сертификат сервера NPS
  4. Settings (настройки):
    • RADIUS Attributes → Standard:
      Tunnel-Type: VLAN
      Tunnel-Medium-Type: 802 (includes all 802 media)
      Tunnel-Private-Group-Id: 100

Для гостевой сети создаём отдельную политику:

  1. Policy Name: WiFi-Guests
  2. Conditions: Windows Groups: COMPANY\WiFi-Guests
  3. Settings: Tunnel-Private-Group-Id: 300 (гостевой VLAN)

Порядок политик — не мелочь. NPS идёт по списку сверху вниз и применяет первую подходящую. Если перепутать очерёдность, гости могут получить доступ в корпоративный сегмент, и такое у нас однажды случалось на проекте.

Ограничение по времени и типу устройства

NPS поддерживает дополнительные условия:

  • Day and Time Restrictions: разрешить Wi-Fi только в рабочее время (пн-пт 8:00-20:00)
  • Machine Groups: разрешить только доменным компьютерам (через EAP-TLS с компьютерным сертификатом)
  • Health Policies: проверка состояния NAP (механизм устаревший, но в Windows Server 2022 всё ещё поддерживается)

Ограничение по времени добавляется через GUI: Conditions → Day and Time Restrictions → выбираете разрешённые временные интервалы. Занимает буквально минуту.

Настройка точек доступа и контроллера

Точки доступа нужно перевести в режим WPA2-Enterprise и указать RADIUS-сервер. Пример для контроллера Cisco WLC:

! Создание WLAN
config wlan create 1 Corporate corporate-wifi
config wlan security wpa akm 802.1x enable 1
config wlan security wpa wpa2 ciphers aes enable 1

! Настройка RADIUS
config radius auth add 1 10.0.1.2 1812 R@diusS3cret2026!
config radius acct add 1 10.0.1.2 1813 R@diusS3cret2026!
config wlan radius_server auth add 1 1
config wlan radius_server acct add 1 1

! Включение WLAN
config wlan enable 1

Для MikroTik (RouterOS 7):

/radius
add address=10.0.1.2 secret="R@diusS3cret2026!" service=wireless

/interface wifi security
add name=wpa2-enterprise authentication-types=wpa2-eap

/interface wifi
set [ find default-name=wifi1 ] \
    configuration.ssid=Corporate \
    security=wpa2-enterprise

Для UniFi (через контроллер):

  1. Settings → WiFi → Create New WiFi Network
  2. Name: Corporate, Security: WPA2 Enterprise
  3. RADIUS Profile: создайте профиль с IP NPS-сервера и shared secret

Настройка клиентов через GPO

Чтобы не настраивать Wi-Fi вручную на каждом компьютере, используйте групповую политику — она раскатает всё сама:

  1. Откройте gpmc.msc → создайте новый GPO «WiFi Configuration»
  2. Computer Configuration → Policies → Windows Settings → Security Settings → Wireless Network (IEEE 802.11) Policies
  3. Создайте новую политику Windows Vista and Later
  4. Добавьте Infrastructure-профиль:
    • SSID: Corporate
    • Security: WPA2-Enterprise, AES
    • Authentication: Microsoft: Protected EAP (PEAP)
    • Validate server certificate: включено
    • Trusted Root CA: выберите корневой сертификат вашего CA
    • Authentication Method: Secured password (EAP-MSCHAPv2)

Профили удобно переносить через PowerShell — экспорт и импорт делаются буквально двумя командами:

# Экспорт Wi-Fi профиля с эталонного ПК
netsh wlan export profile name="Corporate" folder=C:\WiFi

# Распространение через GPO Scripts или SCCM
netsh wlan add profile filename="C:\WiFi\Corporate.xml" user=all

Если нужна компьютерная аутентификация — то есть до того, как пользователь вообще залогинился — в профиле прописываем отдельный блок настроек:

# В XML-профиле Wi-Fi:
<authMode>machineOrUser</authMode>
<singleSignOn>
  <type>preLogon</type>
  <maxDelay>10</maxDelay>
</singleSignOn>

Журналирование и диагностика

NPS пишет все события аутентификации в штатный журнал Windows. Дополнительно — по желанию — можно настроить вывод в текстовые файлы или прямо в SQL Server. Второй вариант удобен, когда нужно строить аналитику по подключениям за несколько месяцев.

Как включить расширенное журналирование:

# Включение Accounting через NPS Console:
# NPS → Accounting → Configure Accounting
# Выберите "Log to a text file on the local computer"
# Путь: C:\Windows\System32\LogFiles\NPS\

# Или через PowerShell:
Set-NpsAccountingConfig -AccountingLogPath "C:\NPS-Logs" `
    -LogPeriod Daily

Как читать события аутентификации в Event Viewer:

# PowerShell: последние 20 событий NPS
Get-WinEvent -LogName "Security" -FilterXPath "*[System[EventID=6272 or EventID=6273]]" -MaxEvents 20 |
    Format-Table TimeCreated, Id, Message -Wrap

# EventID 6272 = Access-Accept (успешная аутентификация)
# EventID 6273 = Access-Reject (отказ)
# EventID 6274 = Discard (отброшен)

Что делать, когда что-то пошло не так — диагностика проблем подключения:

# Включить подробную трассировку NPS
netsh nps set tracing *=verbose

# Трассировка записывается в C:\Windows\Tracing\nps*.log
# После диагностики отключите:
netsh nps set tracing *=disable

С какими проблемами сталкиваемся чаще всего:

  • Ошибка «The client could not be authenticated»: первым делом смотрим на сертификат NPS. Он должен быть выпущен доверенным CA и обязательно содержать EKU «Server Authentication» — без этого PEAP просто не взлетит
  • Ошибка «The RADIUS client is not configured on the NPS server»: классика — забыли добавить IP точки доступа в список RADIUS Clients
  • Ошибка «Access denied» при корректных учётных данных: здесь два места для проверки. Первое — пользователь должен состоять в группе, прописанной в условиях политики. Второе — свойство «Dial-in» учётной записи в AD, там доступ должен быть разрешён явно

Часто задаваемые вопросы

Один NPS-сервер спокойно переваривает тысячи аутентификаций в минуту. Для офиса до 500 Wi-Fi пользователей этого с головой хватает. Другой вопрос — отказоустойчивость. Поднимите второй NPS и синхронизируйте конфигурацию через Export-NpsConfiguration / Import-NpsConfiguration. Мы в таких проектах обычно гоняем синхронизацию каждые 30 минут — и ни разу не подводило.

Да, NPS прекрасно работает как RADIUS-сервер для VPN (PPTP, L2TP/IPSec, SSTP, IKEv2), проводной сети 802.1X, Wi-Fi и Remote Desktop Gateway. На каждый тип подключения создаёте отдельную Network Policy с нужным условием NAS Port Type — и всё разграничено чисто.

На основном сервере запускаете Export-NpsConfiguration -Path C:\nps-backup.xml, на резервном — Import-NpsConfiguration -Path C:\nps-backup.xml. Автоматизируется элементарно: Scheduled Task с PowerShell-скриптом, запуск каждые 30 минут. На точках доступа прописываете два RADIUS-сервера — primary и secondary. При падении основного трафик уходит на резервный за секунды.

Нет, отдельный сервер под NPS не обязателен — роль ставится хоть на контроллер домена, хоть вместе с другими ролями. Но в продакшене мы всегда рекомендуем выделенную машину или хотя бы отдельную VM. Причина простая: когда надо перезагрузить NPS для отладки, не хочется класть заодно и AD.

EAP-TLS — это уже серьёзно: клиентский сертификат нужен на каждом устройстве. Для доменных компьютеров проблема решается через Autoenrollment по GPO — сертификаты разъезжаются сами. В Network Policy на NPS меняете метод аутентификации на «Microsoft: Smart Card or other certificate». Для мобильных устройств и всего, что вне домена, используйте SCEP или раздачу через MDM.

Нужна помощь с настройкой?

Команда АйТи Фреш занимается такими внедрениями больше 15 лет — поможем настроить NPS и Wi-Fi-инфраструктуру под ваши задачи. Обслуживание от 15 000 ₽/мес.

📞 Связаться с нами
#NPS#RADIUS#Windows Server#Wi-Fi аутентификация#WPA2-Enterprise#Active Directory Wi-Fi#Network Policy Server#PEAP
Комментарии 0

Оставить комментарий

загрузка...