Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

Настройка аутентификации по смарт-картам

Аутентификация пользователей с использованием смарт-карт возможна с рабочих станций на ОС Windows и ОС Linux. Смарт-карты могут использоваться в качестве метода многофакторной аутентификации на портале администрирования, брокере и в корпоративных приложениях. Одно из требований использования смарт-карт для аутентификации — это наличие балансировщиков нагрузки перед брокерами.

Требования к архитектуре

В инфраструктуре Termit должен использоваться балансировщик нагрузки перед брокерами, настроенный по инструкции из раздела Установка и настройка HAProxy.

Требования к сертификату

  • В «Точках распространения списков отзыва (CRL)» необходимо указать путь до CRL в формате URL=http:// , и соответственно нужно, чтобы CRL-файл был опубликован по этому пути.

  • SAN (дополнительное имя субъекта) — Имя субъекта=%UPN%, где %UPN% — User Principal Name, например user1@termit.local.

  • Опубликованный по http CRL-файл не старше 7 дней.

  • Использования ключа — Цифровая подпись, Шифрование ключей (a0).

  • Улучшенный ключ:

    • Проверка подлинности клиента (1.3.6.1.5.5.7.3.2);

    • Вход со смарт-картой (1.3.6.1.4.1.311.20.2.2).

  • При работе с Центром сертификации Active Directory рекомендуется использовать шаблон «Вход по смарт-карте» или его копию.

Требования к смарт-картам

  • К клиентской машине может быть подключена одна смарт-карта.

  • Смарт-карты Рутокен Lite и JaCarta LT не подходят для аутентификации на терминальных серверах (ТС) и виртуальных рабочих местах (ВРМ) под управлением ОС Linux.

Настройка системы

Перед настройкой аутентификации по смарт-картам, убедитесь, что можете открыть опубликованные на ТС/ВРМ приложения через Termit с использованием логина/пароля или SSO.

Настройка балансировщиков нагрузки

Для корректной работы аутентификации пользователей с помощью смарт-карт, балансировщик нагрузки должен передавать клиентский сертификат брокеру. Это необходимо, чтобы брокер мог проверить подлинность пользователя и сопоставить его с учётной записью. В HAProxy это реализуется с помощью настроек в секции frontend, обслуживающей HTTPS-трафик - frontend termit_https. Остальные настройки HAProxy до изменения должны соответствовать рекомендуемым в инструкции.

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

Для настройки балансировщика нагрузки HAProxy при использовании смарт-карты выполните следующие шаги:

  1. Измените файл конфигурации /etc/haproxy/haproxy.cfg на внутреннем и (при наличии) внешних балансировщиках:

    Пример конфигурации для внутреннего балансировщика в режиме SSL Bridging

    Измените строку с:

    bind :443 ssl crt /etc/haproxy/cert.pem

    на следующее значение:

    bind :443 ssl crt /etc/haproxy/cert.pem force-tlsv12 ca-file /etc/haproxy/ca-clients.pem verify optional
    http-request set-header X-SSL-Client-Cert "-----BEGIN CERTIFICATE-----%{+Q}[ssl_c_der,base64]-----END CERTIFICATE-----"

    где /etc/haproxy/ca-clients.pem - корневой сертификат (CA), которым подписаны клиентские сертификаты десктоп-клиентов.

    Пример конфигурации для внешнего балансировщика в режиме SSL Bridging

    Измените строку с:

    bind :443 ssl crt /etc/haproxy/external-lb-cert.pem

    на следующее значение:

    bind :443 ssl crt /etc/haproxy/external-lb-cert.pem force-tlsv12 ca-file /etc/haproxy/ca-clients.pem verify optional
    http-request set-header X-SSL-Client-Cert "-----BEGIN CERTIFICATE-----%{+Q}[ssl_c_der,base64]-----END CERTIFICATE-----"

    где /etc/haproxy/ca-clients.pem - корневой сертификат (CA), которым подписаны клиентские сертификаты десктоп-клиентов.

  2. Проверьте отредактированный файл конфигурации с помощью команды:

    sudo haproxy -f /etc/haproxy/haproxy.cfg -c

    Вывод команды не должен содержать ошибок. Предупреждения (warnings) не являются ошибками.

  3. Перезапустите службу с помощью команды:

    sudo systemctl restart haproxy
  4. Проверьте доступность Termit по URL адресу, указанному при установке брокера.

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

Аутентификация в десктоп-клиенте и на портале администрирования на ОС Windows

Для аутентификации в десктоп-клиенте и на портале администрирования на ОС Windows с ТС на ОС Windows по смарт-карте необходимо выполнить следующие шаги:

  1. Сконфигурируйте балансировщик нагрузки по инструкции.

  2. Добавьте сертификат центра сертификации, которым подписан сертификат смарт-карты, в доверенные в UI брокера.

  3. Установите на клиентскую машину драйвер смарт-карты.

  4. Убедитесь, что сертификат со смарт-карты соответствует требованиям.

  5. Убедитесь, что сертификат со смарт-карты импортирован в Личные сертификаты пользователя.

Аутентификация в десктоп-клиенте и на портале администрирования на ОС Linux

Не работает аутентификация по смарт-карте с десктоп-клиента на ОС Linux на терминальный сервер/ВРМ на ОС Windows.

Для аутентификации в десктоп-клиенте и на портале администрирования по смарт-карте необходимо выполнить следующие шаги:

  1. Добавьте PKCS#11 библиотеку используемого устройства в базу данных NSS, чтобы браузер и приложения могли получать доступ к сертификатам, хранящимся на смарт-карте. Пример для Рутокен:

    modutil -dbdir sql:$HOME/.pki/nssdb/ -add "rutoken test" -libfile /opt/aktivco/rcc/librtpkcs11ecp.so -mechanisms FRIENDLY

    Для других типов смарт-карт необходимо указать соответствующую PKCS#11 библиотеку, предоставляемую производителем устройства.

  2. Проверьте, что токен подключен в один из слотов с помощью команды:

    modutil -dbdir sql:$HOME/.pki/nssdb/ -list
  3. Сконфигурируйте балансировщик нагрузки по инструкции.

  4. Добавьте сертификат центра сертификации, которым подписан сертификат смарт-карты, в доверенные в UI брокера.

  5. Установите на клиентскую машину драйвер смарт-карты.

  6. Убедитесь, что сертификат со смарт-карты соответствует требованиям.

Аутентификация в приложениях на ТС/ВРМ под управлением ОС Windows

Аутентификация работает только с десктоп-клиента на ОС Windows.

Для аутентификации в приложениях на ТС/ВРМ под управлением ОС Windows необходимо выполнить следующие шаги:

  1. Установите драйвер смарт-карты на терминальный сервер.

  2. Убедитесь, что в политиках Termit разрешён проброс смарт-карт.

  3. Убедитесь, что в настройках десктоп-клиента включен проброс смарт-карт.

  4. Аутентифицируйтесь в десктоп-клиенте по смарт-карте после соответствующих настроек.

Аутентификация в приложениях на ТС/ВРМ под управлением ОС Linux

Для аутентификации в приложениях на ТС/ВРМ под управлением ОС Linux необходимо выполнить следующие шаги:

  1. Установите драйвер смарт-карты на терминальный сервер. Обычно присутствует в ОС Linux.

  2. Установите библиотеку PKCS#11 на терминальный сервер. Например, соответствующую библиотеку для rutoken можно скачать по ссылке https://www.rutoken.ru/support/download/pkcs/, выбрав нужный файл.

  3. На Astra Linux и Debian терминальных серверах установите пакет krb5-pkinit на терминальный сервер. Данный шаг пропускается для других ОС.

  4. Внесите следующие изменения в файл /etc/krb5.conf в секции [libdefaults] на терминальном сервере:

    1. Добавьте параметр pkinit_anchors (можно задать несколько пар параметр-значение), и в качестве значения укажите путь до корневого сертификата в формате PEM центра сертификации, который сгенерировал сертификат, записанный на смарт-карту, с префиксом «FILE:». Например, pkinit_anchors = FILE:/certs/ca.pem.

    2. Добавьте параметр pkinit_identities (можно задать несколько пар параметр-значение), и в качестве значения укажите путь до библиотеки PKCS#11, соответствующей используемым смарт-картам, с префиксом «PKCS11:». Например, pkinit_identities = PKCS11:/opt/aktivco/rutokenecp/x86_64/librtpkcs11ecp.so.

  5. В файл /etc/krb5.conf в секцию [realms] добавьте нужный realm домена:

    pkinit_kdc_hostname=ad.termit.local
    pkinit_eku_checking=kpServerAuth
  6. Убедитесь, что настроена аутентификация по сертификатам в ` sshd_config`. Учтите, что параметр AuthenticationMethods будет только со значением publickey, например:

    TrustedUserCAKeys /etc/termit-agent/termit-ssh-ca.pub
    
    AuthenticationMethods publickey
    
    Match User ИМЯ_АДМИНИСТРАТОРА_СИСТЕМЫ
        AuthenticationMethods password publickey
    Match all

    Подробнее в разделе.

  7. Убедитесь, что в политиках Termit разрешён проброс смарт-карт.

  8. Убедитесь, что в настройках десктоп-клиента включен проброс смарт-карт.

  9. Аутентифицируйтесь в десктоп-клиенте по смарт-карте после соответствующих настроек.