Клиент VPN Windows Native с Yubikey PIV иногда вызывает сбой на стороне клиента EAP-TLS. Фатальная ошибка TLS ‘доступ запрещен’ и ошибка сбоя рукопожатия TLS 40.

Вопрос или проблема

У нас действительно неудобная проблема с следующим

Настройка выглядит так:

Клиентская сторона

  • Клиент 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. Изучив предоставленные вами логи, можно выделить несколько ключевых моментов:

  1. Случайность ошибок: Некоторые сертификаты работают на одном устройстве, но не работают на другом, несмотря на то, что они все выданы одним и тем же центром сертификации (CA).
  2. Различные поставщики криптографических ключей: В логах наблюдается использование разных провайдеров при успешном и неуспешном подключении (Microsoft Base Smart Card Crypto Provider против Microsoft Smart Card Key Storage Provider).
  3. Различные типы ключей: Использование как RSA 2048, так и RSA 4096 имеет свои особенности и может влиять на поведение.

Возможные причины ошибок

  1. Конфигурация сертификатов:

    • Убедитесь, что все сертификаты корректно установлены и являются действительными. Проверьте цепочку доверия и наличие сертификатов CA, а также их актуальность (не просрочены ли они и не отозваны).
    • Разные устройства могут использовать разные профили для хранения ключей, что может приводить к несоответствию.
  2. Проблемы с совместимостью программного обеспечения:

    • Убедитесь, что используемые версии клиентских программ и сертификатов полностью совместимы. Проверьте наличие последнего обновления для Windows 11 и драйверов YubiKey.
    • Иногда установленные модули или драйверы могут конфликтовать друг с другом, что приводит к различным ошибкам.
  3. Проблемы с провайдером хранилища ключей:

    • Паттерн использования Microsoft Smart Card Key Storage Provider для успешных подключений и Microsoft Base Smart Card Crypto Provider для неудачных, может указывать на проблему с тем, каким образом ключи загружаются и используются.
    • Попробуйте переустановить драйверы YubiKey, чтобы гарантировать корректное использование провайдера.
  4. Неправильные или конфликтующие настройки VPN:

    • Проверка конфигурации вашего VPN-сервера и клиента имеет ключевое значение. Убедитесь, что настройки шифрования и аутентификации настроены единообразно и что сервер полностью поддерживает EAP-TLS.
    • Установите более строгие настройки безопасности на стороне сервера и клиента для исключения возможных уязвимостей.

Рекомендации по устранению неполадок

  1. Тестирование с различными сертификатами:

    • Проводите тестирование с разными сертификатами на всех устройствах, чтобы выявить, где возникают сбои.
    • Настройте разные профили для разных сертификатов, чтобы минимизировать вероятность конфликта.
  2. Анализ более детализированных логов:

    • Просматривайте расширенные логи как на стороне клиента, так и на сервере, для выявления аномалий. Это может помочь найти четкие силы и определить направленность работы.
  3. Переустановите VPN-клиент и драйверы YubiKey:

    • Часто переустановка клиента и драйверов может устранить конфликт программного обеспечения.
  4. Обратитесь к сообществу:

    • Не забывайте использовать форумы и сообщества, такие как Stack Overflow, для вопросов по аналогичным проблемам. Обсуждения могут содержать практические советы и решения.

Заключение

Проблемы с EAP-TLS и YubiKey PIV на Windows 11 могут варьироваться, и часто решение требует многогранного подхода. Важно не только обновлять программное обеспечение, но и систематически тестировать и анализировать различные настройки. Если после всех проведенных шагов проблема остается, рекомендуется обратиться к официальной поддержке Microsoft или Yubico для дальнейшей диагностики и помощи.

Оцените материал
Добавить комментарий

Капча загружается...