Требования к правам для запуска clmBot
clmBot при автоматическом обновлении сертификатов должен иметь возможность читать и записывать целевые файлы сертификатов, а после обновления — перезагружать или перезапускать соответствующие службы промежуточного ПО. В этой статье описаны рекомендуемые минимальные права для различных сценариев работы с промежуточным ПО.
Команды reload / restart промежуточного ПО определяются в поле servers[].after_script объекта config.yaml, и пользователь может корректировать их в зависимости от фактического окружения. clmBot не требуется постоянная работа под учётной записью с высокими привилегиями, такой как root или Administrator.
Принцип минимальных привилегий
Рекомендуется запускать clmBot под выделенной системной учётной записью (например, clmbot) и следовать следующим принципам:
- Предоставлять этой учётной записи только права, необходимые для чтения конфигурации clmBot, каталогов журналов и целевой точки установки сертификатов.
- Предоставлять права на запись только файлам сертификатов и закрытых ключей, управляемым clmBot, а также каталогам, в которых они находятся.
- Разрешать выполнение только проверенных команд reload / restart промежуточного ПО, не предоставляя
NOPASSWD: ALLили полные права root. before_script,after_scriptдолжны проходить ручной аудит, а права, необходимые скриптам, следует выдавать по отдельности.
Не рекомендуется:
- Обеспечьте долгосрочную работу clmBot от имени
rootилиAdministrator. - Предоставьте clmBot полный доступ к каталогу конфигурации промежуточного ПО, каталогу сертификатов или правам управления системными службами.
- Предоставьте
bash,powershell.exe,systemctlнеограниченные права на выполнение.
Требования к правам для каждого промежуточного ПО
nginx
clmBot требуются следующие права:
- Права на чтение и запись в каталоге сертификатов: права на чтение и запись в каталоге, где находятся целевой файл сертификата (
.crt), файл цепочки ЦС (необязательно) и файл закрытого ключа (.key), чтобы записывать новый сертификат и создавать резервную копию.bak. - Выполните команду reload:
after_scriptпо умолчанию создает следующий скрипт для перезагрузки nginx после обновления сертификата:
nginx -t && nginx -s reload
Рекомендации по минимальным привилегиям:
- Открывайте доступ только к целевому каталогу сертификатов, не предоставляйте права на чтение и запись для всего
/etc/nginx. - Через sudoers точно разрешайте
nginx -tиnginx -s reload, не предоставляйте полный root shell.
Apache HTTP Server
clmBot требуются следующие разрешения:
- Права на чтение и запись каталога сертификатов: наличие прав на чтение и запись для каталогов, где находятся
SSLCertificateFile,SSLCertificateChainFile,SSLCertificateKeyFile. - Выполнение команды перезапуска службы:
after_scriptпо умолчанию создаёт один из следующих скриптов (в зависимости от дистрибутива):
systemctl restart httpd.service
systemctl restart apache2.service
Минимальные рекомендации по разрешениям:
- Открывайте только целевой каталог сертификатов, не предоставляйте доступ ко всему конфигурационному каталогу Apache.
- Через sudoers предоставляйте права
restartтолько для того имени службы Apache, которое фактически используется в текущей системе.
Tomcat
clmBot требует следующих разрешений:
- Права на чтение и запись в каталоге сертификатов: права на чтение и запись для каталога, в котором находятся PEM-файлы сертификата/закрытого ключа или файл JKS keystore.
- Выполнение скриптов остановки и запуска:
after_scriptпо умолчанию создаёт следующие скрипты:
export JAVA_HOME="<java_home>" && "<catalina_base>/bin/shutdown.sh" && "<catalina_base>/bin/startup.sh"
Минимальные рекомендации по разрешениям:
- По возможности размещайте clmBot и Tomcat в одной бизнес-группе и предоставляйте права на чтение и запись только целевого keystore или каталога сертификатов.
- Разрешайте выполнение только
shutdown.shиstartup.shсоответствующего экземпляра Tomcat, не предоставляя прав на весь каталог/opt. - В среде с несколькими экземплярами Tomcat разрешения следует разделять по экземплярам.
IIS
Сценарий IIS использует скрипт Windows PowerShell для импорта PFX и обновления привязок HTTPS, требуются права администратора.
clmBot необходимы следующие разрешения:
- Запуск с правами администратора: выполнение
powershell.exe -NoProfile -ExecutionPolicy Bypassдля импорта временного PFX и обновления привязок сайта IIS. - Права на чтение и запись каталога сертификатов: создание и удаление временного PFX-файла.
Минимальные рекомендации по разрешениям:
- Используйте выделенную сервисную учетную запись Windows и предоставляйте только права, необходимые для управления привязками целевых сайтов IIS.
- Политики выполнения PowerShell и права модулей следует проверять отдельно в соответствии с базовыми требованиями безопасности хоста.
Пример конфигурации Linux sudoers
Следующие примеры показывают только степень детализации разрешений; фактические пути следует адаптировать под целевой хост.
nginx:
clmbot ALL=(root) NOPASSWD: /usr/sbin/nginx -t
clmbot ALL=(root) NOPASSWD: /usr/sbin/nginx -s reload
Apache:
clmbot ALL=(root) NOPASSWD: /bin/systemctl restart apache2.service
Tomcat:
clmbot ALL=(tomcat) NOPASSWD: /opt/apache-tomcat/bin/shutdown.sh
clmbot ALL=(tomcat) NOPASSWD: /opt/apache-tomcat/bin/startup.sh
Пример прав доступа к каталогу сертификатов:
chown -R root:clmbot /etc/ssl/example
chmod 0750 /etc/ssl/example
chmod 0640 /etc/ssl/example/site.crt /etc/ssl/example/ca.crt
chmod 0640 /etc/ssl/example/site.key
Если необходимо разрешить clmBot записывать и создавать резервные копии вышеуказанных файлов, можно использовать ACL для точного предоставления прав:
setfacl -m u:clmbot:rwx /etc/ssl/example
setfacl -m u:clmbot:rw- /etc/ssl/example/site.crt
setfacl -m u:clmbot:rw- /etc/ssl/example/ca.crt
setfacl -m u:clmbot:rw- /etc/ssl/example/site.key
Предпусковая проверка прав доступа
Перед развёртыванием clmBot рекомендуется по пунктам проверить указанные ниже настройки прав.
- Использует ли clmBot выделенную учётную запись, а не
rootили администратора. - Разрешены ли чтение и запись
config.yamlтолько необходимым учётным записям. - Открыты ли необходимые права на чтение и запись только для файлов сертификатов, на которые указывает каждый
servers[].format. - Разрешено ли в каталоге с файлами сертификатов создание и очистка резервных файлов
.bak. - Проведён ли вручную аудит
before_script,after_script. - Проверьте, содержит ли sudoers только точные команды, а не
ALL,bashили полныйsystemctl. - Проверьте, распространяются ли права на reload или restart nginx / Apache / Tomcat только на целевые экземпляры.
- Проверьте, соответствуют ли адрес и порт, которые прослушивает служба (режим
clm-bot server), политике межсетевого экрана хоста.