Вопрос или проблема
У нас действительно неудобная проблема с следующим
Настройка выглядит так:
Клиентская сторона
- Клиент Windows 11 23H2
- Нативный клиент Windows VPN с использованием следующей конфигурации VPN
- Установлен Yubikey Minidriver (пробовали без него, то же самое)
- Yubikey 5C NFC с прошивкой 5.7.1
Серверная сторона
- Debian 12 Strongswan 5.9.8 с swanctl (конфигурация ниже; все
сертификаты действительны и доверены)
У нас есть два Windows клиента (одинаковый образ), два Yubikey и несколько выданных сертификатов от одного ЦС. Некоторые с ключами RSA 2048 бит, некоторые с 4096 (оба поддерживаются с Yubikey прошивкой 5.7.1 и Windows и уже известны как работающие, так как мы можем подключиться с обоими типами иногда)
Проблема совершенно случайна (для нас), поэтому происходит такое:
Сценарий A
- Сертификат пользователя A загружен на Yubikey A и используется с клиентом A для подключения через IPSec -> Все работает нормально; Соединение IPSec успешно
- Тот же сертификат A загружен на Yubikey B и используется с клиентом B для подключения -> Соединение не удалось
Сценарий B
- Сертификат пользователя B (тот же ЦС, другой CN) загружен на Yubikey B и используется с клиентом B для подключения -> соединение успешно
- Сертификат пользователя B загружен на Yubikey A и используется с клиентом A для подключения -> соединение не удалось
Сценарий C
- Сертификат пользователя C (тот же ЦС, другой CN) загружен на Yubikey A и используется с клиентом A для подключения -> соединение не удалось
- Сертификат пользователя C загружен на Yubikey B и используется с клиентом B для подключения -> соединение не удалось
Самое странное, что это может меняться со временем. В один день конфигурация (например, сертификат A загружен на Yubikey A, использованный на клиенте A), которая ранее не работала, может внезапно заработать, даже если раньше этого не происходило.
В strongswan это сообщение появляется, указывая, что клиент EAP-TLS (устройство Windows) сбросил соединение с фатальной tls-ошибкой. До этого момента логи идентичны рабочей попытке:
Журнал Strongswan
2024-12-09T10:35:22.392364+01:00 debian charon-systemd[15870]: 05[ENC] разобран запрос IKE_AUTH 7 [ EAP/RES/TLS ]
2024-12-09T10:35:22.392440+01:00 debian charon-systemd[15870]: 05[TLS] EAP_TLS полезная нагрузка => 17 байт @ 0x7f704c05d8a0
2024-12-09T10:35:22.392494+01:00 debian charon-systemd[15870]: 05[TLS] 0: 02 D4 00 11 0D 80 00 00 00 07 15 03 03 00 02 02 ................
2024-12-09T10:35:22.392546+01:00 debian charon-systemd[15870]: 05[TLS] 16: 31 1
2024-12-09T10:35:22.392625+01:00 debian charon-systemd[15870]: 05[TLS] обработка записи TLS Alert (2 байта)
2024-12-09T10:35:22.392700+01:00 debian charon-systemd[15870]: 05[TLS] получен фатальный TLS сигнал 'доступ запрещен'
2024-12-09T10:35:22.392765+01:00 debian charon-systemd[15870]: 05[IKE] Метод EAP EAP_TLS завершился неудачно для пира 192.168.30.114
2024-12-09T10:35:22.392841+01:00 debian charon-systemd[15870]: 05[ENC] генерирование ответа IKE_AUTH 7 [ EAP/FAIL ]
2024-12-09T10:35:22.392908+01:00 debian charon-systemd[15870]: 05[NET] отправка пакета: от 192.168.30.116[4500] до 192.168.30.1[64917] (88 байт)
2024-12-09T10:35:22.392985+01:00 debian charon-systemd[15870]: 05[IKE] IKE_SA eap-tls[9078] изменение состояния: CONNECTING => DESTROYING
2024-12-09T10:35:22.393082+01:00 debian charon-systemd[15870]: полученный пакет: от 192.168.30.1[64917] до 192.168.30.116[4500] (104 байта)
2024-12-09T10:35:22.393214+01:00 debian charon-systemd[15870]: разобран запрос IKE_AUTH 7 [ EAP/RES/TLS ]
2024-12-09T10:35:22.393292+01:00 debian charon-systemd[15870]: получен фатальный TLS сигнал 'доступ запрещен'
2024-12-09T10:35:22.393403+01:00 debian charon-systemd[15870]: Метод EAP EAP_TLS завершился неудачно для пира 192.168.30.114
2024-12-09T10:35:22.393491+01:00 debian charon-systemd[15870]: генерирование ответа IKE_AUTH 7 [ EAP/FAIL ]
2024-12-09T10:35:22.393580+01:00 debian charon-systemd[15870]: отправка пакета: от 192.168.30.116[4500] до 192.168.30.1[64917] (88 байт)
Журналы SCHANNEL Windows
Журналы SCHANNEL показывают, как используется Microsoft Base Smart Card Crypto Provider, но процесс завершается с ошибкой.
Информация 12/9/2024 10:45:18 Schannel 36867 None
Создается клиентский сертификат TLS.
процесс клиента SSPI svchost[EapHost] (PID: 5776).
Информация 12/9/2024 10:45:18 Schannel 36868 None
У клиентского сертификата TLS открытый ключ следующие свойства:
Имя CSP: Microsoft Base Smart Card Crypto Provider
Тип CSP: 1
Имя ключа: 7d6ba0cb-8ab2-36e4-325b-bf23475fc105
Тип ключа: обмен ключами
Идентификатор ключа: 0x0
Приложенные данные содержат сертификат.
Информация 12/9/2024 10:45:18 Schannel 36888 None
Сгенерирован и отправлен фатальный сигнал на удалённую конечную точку.
Это может привести к завершению соединения.
Фатальный сигнал, определенный протоколом TLS, имеет следующий код: 40.
Имя цели:
Процесс клиента SSPI является svchost[EapHost] (PID: 5776).
Регистратор сигналов TLS находится по адресу: http://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-6
Что странно, потому что, когда соединение успешно, журнал schannel показывает, что вместо “Microsoft Base SmartCard Crypto Provider” используется “Microsoft Smart Card Key Storage Provider”, как показано ниже:
Информация 12/9/2024 10:45:18 Schannel 36867 None
Создается клиентский сертификат TLS.
процесс клиента SSPI svchost[EapHost] (PID: 5776).
Информация 12/9/2024 10:48:44 Schannel 36868 None
У клиентского сертификата TLS открытый ключ следующие свойства:
Имя CSP: Microsoft Smart Card Key Storage Provider
Тип CSP: 0
Имя ключа: 72c27e3d-737e-301e-c312-23a1ef5fc105
Тип ключа: н/д
Флаг ключа: 0x0
Приложенные данные содержат сертификат.
Информация 12/9/2024 10:48:46 AM Schannel 36880 None
Клиентское согласование для TLS было выполнено успешно. Переговоренные криптографические параметры:
Версия протокола: TLS 1.2
CipherSuite: 0xC030
Сила обмена: 384 бита
Контекстный дескриптор: 0x1defdf9c800
Имя цели:
Локальное имя субъекта сертификата: CN=######
Удаленное имя субъекта сертификата: CN=#######
Мы не знаем, что вызывает это случайное поведение, и надеемся, что вы сможете нам помочь. Нет никаких признаков того, что Yubikey или сервер strongswan делают что-то неправильно, вместо этого Microsoft, кажется, случайно решает, когда действительно отправляет закрытый ключ, используя провайдер хранения ключей должным образом.
Спасибо заранее за любую помощь.
Настройки VPN Windows
Имя : test
АдресСервера : #########
ОбщийПользовательскийСоединение : Ложь
GUID : {4E1CF7BC-B9B7-42BC-AC55-159E3143806E}
ТипТуннеля : Ikev2
МетодАутентификации : {Eap}
УровеньШифрования : Пользовательский
L2tpIPsecAuth :
ИспользоватьКреденциалыWinlogon : Ложь
EapConfigXmlStream : #документ
СтатусСоединения : Отключено
ЗапомнитьКреденциалы : Ложь
РазделенноеТуннелирование : Истина
DnsSuffix :
IdleDisconnectSeconds : 0
AuthenticationTransformConstants : SHA256128
CipherTransformConstants : AES256
DHGroup : ECP384
IntegrityCheckMethod : SHA384
PfsGroup : ECP384
МетодШифрования : AES256
Strongswan
connections {
eap-tls {
pools = ipv4
local {
auth = pubkey
certs = servercert.pem
id = ###############
}
remote {
auth = eap-tls
cacerts = cacertificate.pem
eap_id = %any
}
children {
eap-tls {
local_ts = 0.0.0.0/0
esp_proposals = aes256-sha256
}
}
}
}
pools {
ipv4 {
addrs = 10.10.1.64/26
}
}
Ответ или решение
Проблема с VPN-клиентом Windows, использующим YubiKey PIV и EAP-TLS: Изучаем причины и решения
Введение
В условиях современных информационных технологий и удаленного доступа к корпоративным ресурсам использование VPN (в виртуальных частных сетях) стало стандартом. Однако, если вы столкнулись с проблемами при использовании нативного VPN-клиента Windows 11 и YubiKey PIV, такими как ошибка ‘access denied’ и сбой рукопожатия TLS (ошибка 40), это может вызвать серьезные затруднения. В этой статье мы подробно рассмотрим возможные причины и шаги по устранению основных проблем, связанных с вашей конфигурацией.
Описание проблемы
Вы предоставили информацию о случайных сбоях при соединении через VPN с использованием EAP-TLS на устройствах под управлением Windows 11 и YubiKey 5C NFC. Изучив предоставленные вами логи, можно выделить несколько ключевых моментов:
- Случайность ошибок: Некоторые сертификаты работают на одном устройстве, но не работают на другом, несмотря на то, что они все выданы одним и тем же центром сертификации (CA).
- Различные поставщики криптографических ключей: В логах наблюдается использование разных провайдеров при успешном и неуспешном подключении (Microsoft Base Smart Card Crypto Provider против Microsoft Smart Card Key Storage Provider).
- Различные типы ключей: Использование как RSA 2048, так и RSA 4096 имеет свои особенности и может влиять на поведение.
Возможные причины ошибок
-
Конфигурация сертификатов:
- Убедитесь, что все сертификаты корректно установлены и являются действительными. Проверьте цепочку доверия и наличие сертификатов CA, а также их актуальность (не просрочены ли они и не отозваны).
- Разные устройства могут использовать разные профили для хранения ключей, что может приводить к несоответствию.
-
Проблемы с совместимостью программного обеспечения:
- Убедитесь, что используемые версии клиентских программ и сертификатов полностью совместимы. Проверьте наличие последнего обновления для Windows 11 и драйверов YubiKey.
- Иногда установленные модули или драйверы могут конфликтовать друг с другом, что приводит к различным ошибкам.
-
Проблемы с провайдером хранилища ключей:
- Паттерн использования
Microsoft Smart Card Key Storage Provider
для успешных подключений иMicrosoft Base Smart Card Crypto Provider
для неудачных, может указывать на проблему с тем, каким образом ключи загружаются и используются. - Попробуйте переустановить драйверы YubiKey, чтобы гарантировать корректное использование провайдера.
- Паттерн использования
-
Неправильные или конфликтующие настройки VPN:
- Проверка конфигурации вашего VPN-сервера и клиента имеет ключевое значение. Убедитесь, что настройки шифрования и аутентификации настроены единообразно и что сервер полностью поддерживает EAP-TLS.
- Установите более строгие настройки безопасности на стороне сервера и клиента для исключения возможных уязвимостей.
Рекомендации по устранению неполадок
-
Тестирование с различными сертификатами:
- Проводите тестирование с разными сертификатами на всех устройствах, чтобы выявить, где возникают сбои.
- Настройте разные профили для разных сертификатов, чтобы минимизировать вероятность конфликта.
-
Анализ более детализированных логов:
- Просматривайте расширенные логи как на стороне клиента, так и на сервере, для выявления аномалий. Это может помочь найти четкие силы и определить направленность работы.
-
Переустановите VPN-клиент и драйверы YubiKey:
- Часто переустановка клиента и драйверов может устранить конфликт программного обеспечения.
-
Обратитесь к сообществу:
- Не забывайте использовать форумы и сообщества, такие как Stack Overflow, для вопросов по аналогичным проблемам. Обсуждения могут содержать практические советы и решения.
Заключение
Проблемы с EAP-TLS и YubiKey PIV на Windows 11 могут варьироваться, и часто решение требует многогранного подхода. Важно не только обновлять программное обеспечение, но и систематически тестировать и анализировать различные настройки. Если после всех проведенных шагов проблема остается, рекомендуется обратиться к официальной поддержке Microsoft или Yubico для дальнейшей диагностики и помощи.