RouterOS может доходить до NPS с входом OpenVPN и всё равно получать отказ, и обычная причина — два параметра, названия которых оба звучат как аутентификация. Один выбирает криптографический дайджест для туннеля; другой решает, как учётные данные пользователя передаются в RADIUS. Смена дайджеста никогда не превратит запрос PAP в MS-CHAPv2, сколько бы раз служба ни перезапускалась. Приведённый ниже чек-лист разделяет эти два параметра, а затем прослеживает один неудачный вход через политику NPS, которая его оценила.

Шаг 1: прочитайте оба параметра, прежде чем менять любой из них

Выведите действующую конфигурацию сервера OpenVPN на маршрутизаторе, который завершает туннель, а не из резервной копии или скопированного сообщения форума. Два интересующих вас поля обычно находятся в одном меню и читаются так, будто это альтернативы. Это не так: одно относится к каналу данных, другое — к обмену учётными данными.

/interface ovpn-server server print
/interface ovpn-server server export

Поле auth перечисляет дайджесты, такие как sha1 и sha256, и управляет HMAC, который аутентифицирует пакеты туннеля. Поле user-auth-method выбирает pap или mschap2 и решает, как маршрутизатор передаёт учётные данные пользователя в RADIUS. Смена дайджеста не может изменить второе поведение, поэтому тот же отказ сохраняется после любой правки первого.

Остановитесь здесь, если в вашем выпуске user-auth-method вообще не предусмотрен. Старые сборки RouterOS могут не предлагать его на сервере OpenVPN, и исправление относится к выпуску, который вы можете поддерживать, а не к команде, скопированной из более нового.

Шаг 2: найдите политику, которая действительно отклонила вход

На стороне NPS запрос на подключение оценивается по сетевым политикам, и метод аутентификации, указанный в подходящей политике, должен быть одним из тех, что клиент действительно предложил. Сопоставьте один неудачный вход по времени и пользователю, вместо того чтобы читать сводное число. Журнал безопасности записывает разрешённые и отклонённые запросы с кодом причины, что говорит гораздо больше, чем общая строка ошибки маршрутизатора.

Get-WinEvent -LogName Security -MaxEvents 200 |
  Where-Object { $_.Id -in 6272,6273 } |
  Format-List TimeCreated,Id,Message

Прочитайте в событии три вещи: имя подходящей политики, метод аутентификации и код причины. Политика, требующая MS-CHAPv2, отклоняет запрос PAP даже при правильном пароле, а политика, требующая доменную учётную запись, отклоняет локальную. Запись клиента RADIUS также должна совпадать с адресом источника маршрутизатора, иначе запрос отбрасывается ещё до обращения к любой политике. Ничего из этого не появляется в журнале OpenVPN.

Остановитесь здесь, если запрос так и не доходит до NPS. Это проблема общего секрета, адреса клиента или UDP 1812, и смена методов аутентификации её не исправит.

Шаг 3: измените один метод с обеих сторон

Если утверждённый проект — MS-CHAPv2, задайте его на маршрутизаторе и подтвердите, что подходящая политика его принимает. Измените одну сторону, повторите тест, затем измените другую; изменение обеих сразу не даст понять, какая имела значение.

/interface ovpn-server server set user-auth-method=mschap2
/interface ovpn-server server print
/log print where topics~"radius"

Не включайте на NPS все более слабые методы, чтобы ошибка исчезла. Внутренняя система должна иметь материал, который выбранный метод может проверить: MS-CHAPv2 требует доступа к паролю или домену, а политика не может выдумать этот материал. Расширение политики расширяет и то, что злоумышленник может попробовать против той же учётной записи. Запишите метод, имя политики и ссылку на изменение вместе, чтобы следующий человек унаследовал решение, а не догадку.

Оставьте проверку сертификата туннеля точно такой, какой она была. Метод учётных данных не заменяет идентичность сервера, а снижение проверок TLS ради прохождения теста меняет одну проблему на худшую.

Шаг 4: проверьте три входа и одно разрешение

Проверьте разрешённого пользователя, неверный пароль и исключённого пользователя, каждого в новой сессии. Первый доказывает путь, второй доказывает, что проверка учётных данных реальна, а третий доказывает, что политика по-прежнему исключает тех, кого должна. Кэшированная сессия может скрыть все три, поэтому отключайтесь между попытками.

/log print where topics~"ovpn"
/radius monitor 0

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

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

Похожие статьи