Indeed CM Agent
Клиентский агент Indeed CM Agent – дополнительный компонент, который позволяет удаленно управлять устройствами пользователей (USB-токенами, смарт-картами). Indeed CM Agent устанавливается на рабочие станции пользователей после настройки серверных компонентов Indeed CM.
С помощью агента на рабочих станциях пользователей выполняются следующие операции:
- Добавление и назначение устройства
- Выпуск пустого или назначенного устройства
- Продолжение выпуска и обновления устройства в состоянии В ожидании
- Запрос смены PIN-кода пользователя по расписанию
- Блокировка и сброс PIN-кода пользователя
- Обновление содержимого устройства
- Очистка и инициализация устройства при отзыве
- Смена PIN-кода администратора устройства
- Контроль использования устройств и блокировка пользовательской сессии и устройства
- Мониторинг устройств с информацией об устройствах с заблокированным PIN-кодом пользователя и администратора, о попытках ввода неверного PIN-кода и о подключении незарегистрированных устройств
Установка и настройка
Установите Indeed CM Agent вместе с Indeed CM Middleware на рабочие станции, к которым подключаются устройства.
- Подготовьте сертификаты для работы агента.
- Настройте защищенное соединение с сайтом агента.
- Откройте Мастер настройки Indeed CM и укажите параметры для работы с агентами.
- Установите и настройте агенты на рабочих станциях.
Подготовка сертификатов агента
Для работы агента создайте следующие сертификаты:
| Сертификат УЦ | Используется для выдачи сертификатов рабочим станциям пользователей, на которых устанавливаются агенты. |
| Сертификат проверки подлинности | Используется для установки двустороннего защищенного соединения между сервером Indeed CM и рабочей станцией с установленным агентом. Подписывается сертификатом УЦ. Выдается на имя рабочей станции, на которой установлен сервер Indeed CM. |
| Сертификат агента | Выдается автоматически при регистрации агента. Подписывается сертификатом УЦ. Обращаясь к серверу, клиентская рабочая станция предоставляет свой сертификат, а сервер Indeed CM проверяет его подлинность. После проверки сервер добавляет клиентскую рабочую станцию в список доверенных и может передавать на нее задачи. |
Подготовьте сертификаты одним из способов:
С помощью утилиты Cm.Agent.Cert.Generator
Выпустите самоподписанный сертификат УЦ и сертификат проверки подлинности с помощью утилиты Cm.Agent.Cert.Generator.
В удостоверяющем центре (УЦ)
Заполните файлы конфигурации сервисов агента (agentregistrationapi и agentserviceapi) для автоматического выпуска сертификатов агента (поддерживаются сертификаты, выпущенные в SafeTech CA).
- Cm.Agent.Cert.Generator
- SafeTech CA
Параметры утилиты Cm.Agent.Cert.Generator
Параметры генерации самоподписанного сертификата УЦ и SSL-сертификата
| Параметр | Описание |
|---|---|
/root | Генерация самоподписанного сертификата УЦ. |
/rootKeySize | Опциональный параметр. Размер закрытого ключа самоподписанного сертификата УЦ. По умолчанию генерируется закрытый ключ размером 4096 бит. Возможный диапазон – от 512 до 8192 бит. |
/sn <DNS-имя сервера> | Генерация SSL-сертификата сайта агента на указанное DNS-имя сервера. |
/csn | Генерация SSL-сертификата сайта агента на имя сервера, на котором запущена утилита Cm.Agent.Cert.Generator. |
/sslKeySize | Опциональный параметр. Размер закрытого ключа SSL-сертификата сайта агента. По умолчанию генерируется закрытый ключ размером 2048 бит. Возможный диапазон – от 512 до 4096 бит. |
/pwd | Опциональный параметр. Пароль SSL-сертификата сайта агента. |
/installToStore | Опциональный параметр. Публикация SSL-сертификата сайта агента, выпущенного утилитой, в хранилище Личных сертификатов рабочей станции, на которой установлен сервер Indeed CM. |
Параметры генерации SSL-сертификата с помощью самоподписанного сертификата УЦ
| Параметр | Описание |
|---|---|
/rootKey | Путь до файла самоподписанного сертификата УЦ. |
/ssl | Генерация SSL-сертификата сайта агента. |
/sn <DNS-имя сервера> | Генерация SSL-сертификата сайта агента на указанное DNS-имя сервера. |
/csn | Генерация SSL-сертификата сайта агента на имя сервера, на котором запущена утилита Cm.Agent.Cert.Generator. |
/pwd | Опциональный параметр. Пароль SSL-сертификата сайта агента. |
/sslKeySize | Опциональный параметр. Размер закрытого ключа SSL-сертификата сайта агента. По умолчанию генерируется закрытый ключ размером 2048 бит. Возможный диапазон – от 512 до 4096 бит. |
Выберите инструкцию в зависимости от операционной системы, где установлен сервер Indeed CM.
- Windows
- Linux
Чтобы создать сертификаты агента:
Перейдите в каталог IndeedCM.WindowsServer\Misc\AgentCertGenerator на сервере Indeed CM.
От имени администратора запустите в командной строке утилиту Cm.Agent.Cert.Generator c параметрами и дождитесь завершения ее работы.
Cm.Agent.Cert.Generator.exe /root /csn /installToStoreВ каталоге с утилитой появятся следующие файлы:
- agent_root_ca.json – самоподписанный сертификат УЦ с закрытым ключом в формате JSON
- agent_root_ca.cer – самоподписанный сертификат УЦ
- agent_root_ca.key – закрытый ключ самоподписанного сертификата УЦ
- agent_ssl_cert.cer – SSL-сертификат сайта агента
- agent_ssl_cert.key – закрытый ключ SSL-сертификата сайта агента
- agent_ssl_cert.pfx – SSL-сертификат сайта агента с закрытым ключом в формате PFX
Поместите сертификат agent_root_ca.cer в Доверенные корневые центры сертификации (Trusted Root Certification Authorities) на сервере Indeed CM.
Для инсталляций с несколькими серверами Indeed CM
Если в вашей инфраструктуре развернуто несколько серверов Indeed CM с агентами, то выпустите SSL-сертификат сайта агента для каждого сервера с помощью сертификата УЦ. Используйте один и тот же сертификат УЦ на всех серверах.
Чтобы создать SSL-сертификат дополнительного сервера или обновить истекший сертификат:
Перенесите на сервер каталог с утилитой Cm.Agent.Cert.Generator и сертификат УЦ с закрытым ключом в формате JSON (agent_root_ca.json).
Выполните команду:
Cm.Agent.Cert.Generator.exe /rootKey <путь к файлу agent_root_ca.json> /ssl /sn <DNS-имя сервера Indeed CM> /installToStoreПримерCm.Agent.Cert.Generator.exe /rootKey "C:\AgentCertGenerator\agent_root_ca.json" /ssl /sn server.domain.loc /installToStore
Чтобы создать сертификаты агента:
Откройте терминал на сервере Indeed CM, перейдите в каталог IndeedCM.LinuxServer\Misc\AgentCertGenerator и добавьте право на выполнение файла Cm.Agent.Cert.Generator.
sudo chmod +x Cm.Agent.Cert.Generator.dllЗапустите утилиту c параметрами
/root /csnи дождитесь завершения ее работы.dotnet Cm.Agent.Cert.Generator.dll /root /csnВ каталоге с утилитой появятся следующие файлы:
- agent_root_ca.json – самоподписанный сертификат УЦ с закрытым ключом в формате JSON
- agent_root_ca.cer – самоподписанный сертификат УЦ
- agent_root_ca.key – закрытый ключ самоподписанного сертификата УЦ
- agent_ssl_cert.cer – SSL-сертификат сайта агента
- agent_ssl_cert.key – закрытый ключ SSL-сертификата сайта агента
- agent_ssl_cert.pfx – SSL-сертификат сайта агента с закрытым ключом в формате PFX
Поместите сертификат agent_root_ca.cer в Доверенные корневые центры сертификации (Trusted Root Certification Authorities) на сервере Indeed CM.
Для инсталляций с несколькими серверами Indeed CM
Если в вашей инфраструктуре развернуто несколько серверов Indeed CM с агентами, то выпустите SSL-сертификат сайта агента для каждого сервера с помощью сертификата УЦ. Используйте один и тот же сертификат УЦ на всех серверах.
Чтобы создать SSL-сертификат дополнительного сервера или обновить истекший сертификат:
Перенесите на сервер каталог с утилитой Cm.Agent.Cert.Generator и сертификат УЦ с закрытым ключом в формате JSON (agent_root_ca.json).
Выполните команду:
dotnet Cm.Agent.Cert.Generator.dll /rootKey <путь к файлу agent_root_ca.json> /ssl /sn <DNS-имя сервера Indeed CM>Примерdotnet Cm.Agent.Cert.Generator.dll /rootKey ./agent_root_ca.json /ssl /sn domain.loc1
Настройка автоматического выпуска сертификатов агента в УЦ
Внесите изменения в файлы конфигурации appsettings.json сервисов агента:
- agentregistrationapi
- agentserviceapi
Создайте шаблон сертификата в SafeTech CA.
Как создать шаблон сертификата в SafeTech CA
- Войдите в веб-интерфейс SafeTech CA от имени сервисной учетной записи, выберите нужный УЦ и нажмите Работать с этим УЦ.
- Перейдите в раздел Настройки → Шаблоны и нажмите Добавить шаблон
- Укажите следующие параметры:
- Наименование шаблона
- Описание шаблона
- Тип протокола: ST_CA
- Максимальный срок действия сертификата в днях
- Минимальная длина ключа: выберите любое значение из предложенных
- Установите следующие параметры выпуска сертификата:
- Сценарий выпуска: Стандартный
- Настройка криптографии: включите опцию Требуется настройка и выберите алгоритм шифрования RSA
- Алгоритмы подписи: SHA256WITHRSA
- Длина ключа: выберите любое значение из предложенных
- В разделе Использование ключа выберите Подпись и включите опцию Использовать значения из шаблона.
- В разделе Роли шаблона задайте права на действия с шаблоном. Администратор по умолчанию обладает всеми правами. Чтобы настроить права для роли Оператора:
- Нажмите Добавить.
- В выпадающем списке выберите Оператор.
- Выдайте необходимые права.
- В разделе Атрибуты сертификата в выпадающем списке выберите Enhanced Key Usage и нажмите Добавить. Поле Значение атрибута оставьте пустым.
- В разделе Расширения использования ключей (EKU):
- Нажмите Добавить расширение, выберите Client Authentication и нажмите Подтвердить.
- Включите опцию Использовать значения из шаблона.
- Нажмите Создать, затем нажмите Сохранить на сервер.
Откройте файл конфигурации appsettings.json сервиса регистрации агентов agentregistrationapi. Расположение файла:
- Windows: C:\inetpub\wwwroot\cm\agent\agentregistrationapi
- Linux: /opt/indeed/cm/agentregistrationapi
В секции
agentCertificateSettingsнастройте параметры выпуска сертификатов агента в УЦ.agentCertificateSettingscheckCertificateRevocationStatusПроверка статуса отзыва сертификата агента в УЦ. Допустимые значения: true– включить проверку. Если сертификат агента приостановлен или отозван, статус агента изменится на Отозван, и агент не будет выполнять задачи.false– отключить проверку. Значение по умолчанию.
certificateKeyLengthМинимальная длина ключа сертификата агента. Значение по умолчанию – 2048 бит. caTypeТип УЦ, в котором будут выпускаться сертификаты агента. Укажите значение SafeTech.В секции
safeTechCaSettingsнастройте параметры подключения к SafeTech CA.
Подробнее в инструкции по настройке SafeTech CAsafeTechCaSettingsserviceUrlURL-aдрес веб-службы CA Gateway.
Например,https://<имя сервера УЦ>:9443/ca-core/api/v1.authServiceUrlURL-aдрес веб-службы авторизации – адрес Realm (области) Keycloak, в которой находятся клиенты и пользователи (st-ca по умолчанию).
Например,https://<имя сервера УЦ>:8443/realms/st-ca.clientIdИдентификатор клиента — значение параметра Client IDв Keycloak.
Например,ca-gateway. Убедитесь, что у клиента есть роль Администратора или Оператора УЦ.clientSecretЗначение параметра Client Secretв Keycloak.
Например,vtG4VuWYbG6t4SxbIzsTCyxpMmqr4RPy.userNameИмя сервисной учетной записи. passwordПароль сервисной учетной записи. certificateTemplateНазвание шаблона сертификата в УЦ, по которому будут выпускаться сертификаты для агентов. Сохраните изменения в файле appsettings.json сервиса регистрации агентов agentregistrationapi.
Откройте файл конфигурации appsettings.json сервиса агентов для удаленного выполнения задач agentserviceapi. Расположение файла:
- Windows: C:\inetpub\wwwroot\cm\agent\agentserviceapi
- Linux: /opt/indeed/cm/agentserviceapi
В секции
agentCertificateSettingsнастройте параметры выпуска сертификатов агента в УЦ. Используйте те же параметры и значения, что и в файле конфигурации agentregistrationapi (шаг 3).В секции
safeTechCaSettingsнастройте параметры SafeTech CA. Используйте те же параметры и значения, что и в файле конфигурации agentregistrationapi (шаг 4).Сохраните изменения в файле appsettings.json сервиса агентов для удаленного выполнения задач agentserviceapi.
При регистрации агента на клиентской рабочей станции сервер Indeed CM автоматически устанавливает два сертификата:
- Корневой сертификат УЦ – в доверенные корневые центры сертификации компьютера
- Сертификат агента – в личное хранилище службы CM Agent Service
В Консоли управления в разделе Сводная информация → Сервисные сертификаты доступна информация о корневом сертификате УЦ, который выдает сертификаты рабочим станциям с установленными агентами.
Убедитесь, что корневой сертификат УЦ установлен на сервере Indeed CM.
Подготовка SSL-сертификата
В качестве SSL-сертификата можно использовать RSA-сертификат, выпущенный c любого доверенного УЦ на имя сервера Indeed CM.
Убедитесь, что сертификат соответствует следующим требованиям:
- Субъект (Subject) сертификата содержит атрибут Общее имя (Common Name) (FQDN сервера Indeed CM).
- Дополнительное имя субъекта (Subject Alternative Name) сертификата содержит атрибут DNS-имя (DNS Name) (FQDN сервера Indeed CM). Например,
server.domain.locили соответствующую запись с подстановочными знаками:*. domain.loc(Wildcard certificate). - Улучшенный ключ (Enhanced Key Usage) сертификата содержит значение «Проверка подлинности сервера» (Server Authentication).
Настройка защищенного соединения с сайтом сервисов агента
- Windows
- Linux
Откройте Диспетчер служб IIS (Internet Information Services (IIS) Manager).
Выберите сайт IndeedCM Agent Site и перейдите в раздел Привязки... (Bindings...).
Выберите привязку по порту 3003.
ПримечаниеПорт 3003 используется по умолчанию. Если вы используете другой порт, то создайте и настройте новую привязку. Убедитесь, что порт открыт для входящих подключений в брандмауэре.
Нажмите Изменить... (Edit...).
В поле SSL-сертификат выберите SSL/TLS сертификат, выпущенный с любого доверенного УЦ на имя сервера Indeed CM, и нажмите OK.
Выберите инструкцию в зависимости от операционной системы, где установлен сервер Indeed CM.
- Debian-based
- RHEL-based
Скопируйте SSL-сертификат сайта агента и закрытый ключ сертификата в соответствующие хранилища на сервере Indeed CM.
#Копировать сертификат в хранилище сертификатов
sudo cp ./agent_ssl_cert.cer /etc/ssl/certs/
#Копировать закрытый ключ в хранилище закрытых ключей
sudo cp ./agent_ssl_cert.key /etc/ssl/private/Скопируйте сервисный сертификат агента в хранилище доверенных корневых сертификатов и конвертируйте его формат в CRT.
sudo cp ./agent_root_ca.cer /usr/local/share/ca-certificates/agent_root_ca.crtОбновите хранилище доверенных корневых сертификатов.
sudo update-ca-certificates -fУкажите пути до сертификата и закрытого ключа в файле конфигурации используемого веб-сервера в разделе, который описывает сайт сервисов агента.
Скопируйте SSL-сертификат сайта агента и закрытый ключ сертификата в хранилище /etc/ssl/ на сервере Indeed CM.
sudo cp ./agent_ssl_cert.cer /etc/ssl/
sudo cp ./agent_ssl_cert.key /etc/ssl/Скопируйте сервисный сертификат агента в хранилище доверенных корневых сертификатов.
sudo cp ./agent_root_ca.cer /etc/pki/ca-trust/source/anchors/Обновите хранилище доверенных корневых сертификатов.
sudo update-ca-trust extractУкажите пути до SSL-сертификата и закрытого ключа в конфигурационном файле используемого веб-сервера в разделе, который описывает сайт агента.
Пример конфигурационного файла веб-сервера NGINX
server {
listen 3003 ssl;
server_name server.domain.loc;
ssl_certificate "/etc/ssl/certs/agent_ssl_cert.cer";
ssl_certificate_key "/etc/ssl/private/agent_ssl_cert.key";
ssl_verify_client optional_no_ca;
location /agentregistrationapi
{ include /etc/nginx/conf.d/proxy.conf;
proxy_pass http://localhost:5006/agentregistrationapi; }
location /agentserviceapi
{ include /etc/nginx/conf.d/proxy.conf;
proxy_pass http://localhost:5007/agentserviceapi;
proxy_set_header x-ssl-client-cert $ssl_client_escaped_cert; }
}
Пример конфигурационного файла веб-сервера Apache
<VirtualHost *:3003>
protocols h2 http/1.1
SSLCertificateFile /etc/apache2/ssl/agent_ssl_cert.cer
SSLCertificateKeyFile /etc/apache2/ssl/agent_ssl_cert.key
SSLCipherSuite @SECLEVEL=1:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
ErrorLog logs/error.log
CustomLog logs/access.log combined
SSLEngine on
SSLProtocol -all +TLSv1.2
SSLHonorCipherOrder off
SSLCompression off
SSLSessionTickets on
SSLUseStapling off
SSLProxyEngine on
RequestHeader set X-Forwarded-Proto https
Header always set Strict-Transport-Security "max-age=63072000"
ProxyPass /agentregistrationapi http://localhost:5006/agentregistrationapi
ProxyPassReverse /agentregistrationapi http://localhost:5006/agentregistrationapi
<Location "/agentserviceapi">
SSLVerifyClient optional_no_ca
SSLOptions +ExportCertData
RequestHeader unset x-ssl-client-cert
RequestHeader set x-ssl-client-cert "expr=%{escape:%{SSL_CLIENT_CERT}}"
#RequestHeader set x-ssl-client-cert "expr=%{escape:%{SSL_CLIENT_S_DN}}"
ProxyPass http://localhost:5007/agentserviceapi
ProxyPassReverse http://localhost:5007/agentserviceapi
</Location>
</VirtualHost>
Порт 3003 используется по умолчанию. Если вы используете другой порт, то создайте и настройте новую привязку. Убедитесь, что порт открыт для входящих подключений в брандмауэре.