Настройка аутентификации по смарт-картам
Аутентификация пользователей с использованием смарт-карт возможна с рабочих станций на ОС 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 при использовании смарт-карты выполните следующие шаги:
-
Измените файл конфигурации
/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), которым подписаны клиентские сертификаты десктоп-клиентов. -
Проверьте отредактированный файл конфигурации с помощью команды:
sudo haproxy -f /etc/haproxy/haproxy.cfg -cВывод команды не должен содержать ошибок. Предупреждения (warnings) не являются ошибками.
-
Перезапустите службу с помощью команды:
sudo systemctl restart haproxy -
Проверьте доступность Termit по URL адресу, указанному при установке брокера.
Если используется другой балансировщик нагрузки, необходимо настроить аналогичную передачу клиентского сертификата, чтобы брокер мог выполнять аутентификацию пользователей по смарт-картам.
Аутентификация в десктоп-клиенте и на портале администрирования на ОС Windows
Для аутентификации в десктоп-клиенте и на портале администрирования на ОС Windows с ТС на ОС Windows по смарт-карте необходимо выполнить следующие шаги:
-
Сконфигурируйте балансировщик нагрузки по инструкции.
-
Добавьте сертификат центра сертификации, которым подписан сертификат смарт-карты, в доверенные в UI брокера.
-
Установите на клиентскую машину драйвер смарт-карты.
-
Убедитесь, что сертификат со смарт-карты соответствует требованиям.
-
Убедитесь, что сертификат со смарт-карты импортирован в Личные сертификаты пользователя.
Аутентификация в десктоп-клиенте и на портале администрирования на ОС Linux
|
Не работает аутентификация по смарт-карте с десктоп-клиента на ОС Linux на терминальный сервер/ВРМ на ОС Windows. |
Для аутентификации в десктоп-клиенте и на портале администрирования по смарт-карте необходимо выполнить следующие шаги:
-
Добавьте PKCS#11 библиотеку используемого устройства в базу данных NSS, чтобы браузер и приложения могли получать доступ к сертификатам, хранящимся на смарт-карте. Пример для Рутокен:
modutil -dbdir sql:$HOME/.pki/nssdb/ -add "rutoken test" -libfile /opt/aktivco/rcc/librtpkcs11ecp.so -mechanisms FRIENDLYДля других типов смарт-карт необходимо указать соответствующую PKCS#11 библиотеку, предоставляемую производителем устройства.
-
Проверьте, что токен подключен в один из слотов с помощью команды:
modutil -dbdir sql:$HOME/.pki/nssdb/ -list -
Сконфигурируйте балансировщик нагрузки по инструкции.
-
Добавьте сертификат центра сертификации, которым подписан сертификат смарт-карты, в доверенные в UI брокера.
-
Установите на клиентскую машину драйвер смарт-карты.
-
Убедитесь, что сертификат со смарт-карты соответствует требованиям.
Аутентификация в приложениях на ТС/ВРМ под управлением ОС Windows
|
Аутентификация работает только с десктоп-клиента на ОС Windows. |
Для аутентификации в приложениях на ТС/ВРМ под управлением ОС Windows необходимо выполнить следующие шаги:
-
Установите драйвер смарт-карты на терминальный сервер.
-
Убедитесь, что в политиках Termit разрешён проброс смарт-карт.
-
Убедитесь, что в настройках десктоп-клиента включен проброс смарт-карт.
-
Аутентифицируйтесь в десктоп-клиенте по смарт-карте после соответствующих настроек.
Аутентификация в приложениях на ТС/ВРМ под управлением ОС Linux
Для аутентификации в приложениях на ТС/ВРМ под управлением ОС Linux необходимо выполнить следующие шаги:
-
Установите драйвер смарт-карты на терминальный сервер. Обычно присутствует в ОС Linux.
-
Установите библиотеку PKCS#11 на терминальный сервер. Например, соответствующую библиотеку для rutoken можно скачать по ссылке https://www.rutoken.ru/support/download/pkcs/, выбрав нужный файл.
-
На Astra Linux и Debian терминальных серверах установите пакет krb5-pkinit на терминальный сервер. Данный шаг пропускается для других ОС.
-
Внесите следующие изменения в файл /etc/krb5.conf в секции [libdefaults] на терминальном сервере:
-
Добавьте параметр pkinit_anchors (можно задать несколько пар параметр-значение), и в качестве значения укажите путь до корневого сертификата в формате
PEMцентра сертификации, который сгенерировал сертификат, записанный на смарт-карту, с префиксом «FILE:». Например,pkinit_anchors = FILE:/certs/ca.pem. -
Добавьте параметр pkinit_identities (можно задать несколько пар параметр-значение), и в качестве значения укажите путь до библиотеки PKCS#11, соответствующей используемым смарт-картам, с префиксом «PKCS11:». Например,
pkinit_identities = PKCS11:/opt/aktivco/rutokenecp/x86_64/librtpkcs11ecp.so.
-
-
В файл /etc/krb5.conf в секцию [realms] добавьте нужный realm домена:
pkinit_kdc_hostname=ad.termit.local pkinit_eku_checking=kpServerAuth -
Убедитесь, что настроена аутентификация по сертификатам в ` sshd_config`. Учтите, что параметр
AuthenticationMethodsбудет только со значениемpublickey, например:TrustedUserCAKeys /etc/termit-agent/termit-ssh-ca.pub AuthenticationMethods publickey Match User ИМЯ_АДМИНИСТРАТОРА_СИСТЕМЫ AuthenticationMethods password publickey Match allПодробнее в разделе.
-
Убедитесь, что в политиках Termit разрешён проброс смарт-карт.
-
Убедитесь, что в настройках десктоп-клиента включен проброс смарт-карт.
-
Аутентифицируйтесь в десктоп-клиенте по смарт-карте после соответствующих настроек.