Мне удалось запустить strongswan с аутентификацией eap-mschapv2 с использованием сертификата сервера. Теперь я хочу попробовать использовать плагин eap-radius с NPS, работающим на сервере Windows 2012 R2, для аутентификации в Active Directory.
На контроллере домена я создал нового пользователя и группу (VPN_USERS) для удаленного доступа.
На сервере VPN, если я проверю системный журнал, я вижу следующее:
vpn charon: 08[IKE] received cert request for "C=US,O=CR-51 Test,CN=Root CA"
...
vpn charon: 09[CFG] selected peer config 'ikev2-vpn'
...
vpn charon: 09[IKE] authentication of 'vpn.cr-51-test.local' (myself) with pre-shared key
...
vpn charon: 09[ENC] generating IKE_AUTH response 1 [ IDr AUTH EAP/REQ/ID ]
...
vpn charon: 09[IKE] successfully created shared key MAC
....
vpn charon: 11[JOB] deleting half open IKE_SA after timeout
На клиенте Windows 10 при попытках подключения возникает следующая ошибка:
dialed a connection named IKEv2 which has failed. The error code returned on failure is 13801.
На сервере NPS в средстве просмотра событий есть запись, в которой указано, что сервер политики сети отказал пользователю в доступе, и предлагается изменить параметры дозвона пользователя в AD, чтобы разрешить доступ или разрешить NPS управлять доступом. Первоначально он был настроен на разрешение NPS управлять доступом, но по-прежнему не работает, когда он настроен на разрешение доступа.
Также я не могу войти в систему с учетными записями на контроллере домена, кроме учетной записи администратора домена, после настройки NPS.
Вот текущие конфигурации
ipsec.conf:
config setup
charondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2, mgr 2"
uniqueids=no
conn ikev2-vpn
auto=add
compress=no
type=tunnel
keyexchange=ikev2
fragmentation=yes
forceencaps=yes
ike=aes256-sha1-modp1024,3des-sha1-modp1024!
esp=aes256-sha1,3des-sha1-modp1024!
dpdaction=clear
dpddelay=300s
rekey=no
left=%any
leftauth=pubkey
leftid=@vpn.cr-51-test.local
leftcert=/etc/ipsec.d/certs/vpn.cr-51-test.local.crt.pem
leftsendcert=always
leftsubnet=0.0.0.0/0
lefthostaccess=yes
leftfirewall=yes
right=%any
rightid=%any
rightauth=eap-radius
rightgroups="CN=VPN_USERS/CN=Users"
rightsourceip=10.10.0.0/24
rightdns=192.150.150.10
rightsendcert=never
rightfirewall=yes
eap_identity=%identity
/etc/strongswan.d/charon/eap-radius.conf:
(Только те разделы, которые я изменил)
load = yes
...
secret = testpass
server = 192.150.150.20
ipsec.secrets:
vpn : RSA "/path/to/key"
: PSK "testpass"
Конфигурация NPS:
Сервер NPS зарегистрирован в домене.
Freindly name: vpn
Addresss (IP or DNS): 192.150.150.11
Shared secret: testpass
Политика запроса подключения
Type of network access server: Remote Access Server(VPN-Dialup)
Conditions:
NAS Port Type: VPN
Client Friendly Name: vpn
Политика доступа к сети
Type of network access server: vpn
Conditions:
NAS Port Type: VPN
Client Friendly Name: vpn
User Groups: VPN_USERS
Constraints:
Authentication Methods: EAP-MSCHAP v2
NAS Port Type: VPN
Имя журнала: Источник безопасности: Microsoft-Windows-Security-Auditing Дата: 22.06.2018 17:25:02 Идентификатор события: 6273 Категория задачи: Уровень сервера сетевой политики: Ключевые слова: Ошибка аудита Пользователь: Н / Д Компьютер: nps.cr-51-test.local Описание: Сервер сетевой политики отказал пользователю в доступе.
Обратитесь к администратору сервера политики сети для получения дополнительной информации.
Пользователь: Идентификатор безопасности: CR-51-TEST \ tuser Имя учетной записи: tuser@cr-51-test.local Домен учетной записи: CR-51-TEST Полное имя учетной записи: CR-51-TEST \ tuser
Клиентский компьютер: Идентификатор безопасности: NULL SID Имя учетной записи: - Полное имя учетной записи: - Версия ОС: - Идентификатор вызываемой станции: 192.250.250.11 [4500] Идентификатор вызывающей станции: 192.173.1.90 [4500]
NAS: IPv4-адрес NAS: 192.250.250.11 IPv6-адрес NAS: - Идентификатор NAS: strongSwan Тип порта NAS: Порт виртуального NAS: 4
Клиент RADIUS: Удобное для клиента имя: IP-адрес клиента vpn: 192.250.250.11
Сведения об аутентификации: Имя политики запроса на подключение: Использовать проверку подлинности Windows для всех пользователей Имя сетевой политики: - Поставщик проверки подлинности: Сервер проверки подлинности Windows: nps.cr-51-test.local Тип проверки подлинности: EAP Тип EAP: - Идентификатор сеанса учетной записи: - Результаты ведения журнала : Учетная информация была записана в локальный файл журнала. Код причины: 48 Причина: запрос на соединение не соответствует настроенной сетевой политике.
Событие Xml: 6273 1 0 12552 0 0x8010000000000000 531 Безопасность nps.cr-51-test.local S-1-5-21-2365315230-2476318153-1929964036-1111 tuser@cr-51-test.local CR-51-TEST CR -51-TEST \ tuser S-1-0-0 - - - 192.250.250.11 [4500] 192.173.1.90 [4500] 192.250.250.11 - strongSwan Virtual 4 vpn 192.250.250.11 Использовать проверку подлинности Windows для всех пользователей - Windows nps.cr -51-test.local EAP - - 48 Запрос на подключение не соответствует настроенной сетевой политике. Учетная информация была записана в локальный файл журнала.
Комбинирование EAP с аутентификацией по предварительному ключу не является строго допустимым в соответствии с RFC 7296:
Как правило, эти методы асимметричны (предназначены для аутентификации пользователя на сервере) и могут не быть взаимными. По этой причине эти протоколы обычно используются для аутентификации инициатора перед ответчиком и ДОЛЖНЫ использоваться вместе с аутентификацией ответчика перед инициатором на основе открытого ключа и подписи.
Некоторые реализации, такие как strongSwan, позволяют настраивать его, но многие другие - нет, и будут настаивать на аутентификации сервера с помощью сертификата.
Поскольку у вас уже есть сертификат и закрытый ключ, вам может потребоваться только установить leftauth=pubkey
. При условии, что на клиенте уже установлен сертификат ЦС.
Для тех, кто ищет решение более надежное, чем простое разрешение всех видов подключений к серверу NPS, есть простая настройка, которую нужно изменить, и она отлично работает с strongSwan.
Что касается причины, по которой это все меняет, я не уверен, почему. Я думаю, это просто потому, что политика, созданная с помощью мастера, предполагает, что наш клиент (сервер VPN) является стандартным оборудованием OEM, которое поставляется с предварительно настроенными параметрами, которые заставят его отправлять дополнительные флаги, которые будут определять, что у него есть "Удаленный доступ Сервер (VPN-Dial up) ». На самом деле, если у кого-то есть четкие объяснения по этому поводу, это было бы очень признательно. Либо измените ответ, либо оставьте комментарий. Спасибо.
Итак, чтобы начать все сначала, щелкните корневой узел «NPS (локальный)», затем на главной панели щелкните «Настроить VPN или удаленное подключение». Следуйте инструкциям, как обычно. Когда вы закончите работу с мастером, будут созданы 2 политики с указанным вами именем; Один в «Политике запросов на подключение», а другой в «Сетевых политиках». В обеих политиках на вкладке «Обзор» в разделе «Метод сетевого подключения» для параметра «Тип сервера доступа к сети» установлено значение «Сервер удаленного доступа (VPN Dial up)». Измените этот параметр на «Не указано». И это все. Внесение этого изменения для меня было единственным, что нужно было сделать, чтобы клиентский запрос имел доступ к нему должным образом. После этого обе политики будут приняты во внимание.
Надеюсь, поможет.
Поэтому я отключил политики, которые я сделал для VPN-подключений на сервере NPS, и изменил политики по умолчанию, которые NPS сделал с минимальными ограничениями, и я смог успешно аутентифицировать пользователей Active Directory через strongswan vpn. Эти политики должны быть хорошей отправной точкой для тестирования.
Как предложил ecdsa в ipsec.conf
Я установил leftauth=pubkey
.
Обеспечить Предоставление доступа выбран
Позволять EAP-MSCHAPv2
Я не уверен, было ли это необходимо, но я также прокомментировал rightgroups
параметр, который я установил в ipsec.conf
файл, так как strongswan жаловался на это в журналах.