Перейти к основному содержимому

Требования к правам для запуска 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 требуются следующие права:

  1. Права на чтение и запись в каталоге сертификатов: права на чтение и запись в каталоге, где находятся целевой файл сертификата (.crt), файл цепочки ЦС (необязательно) и файл закрытого ключа (.key), чтобы записывать новый сертификат и создавать резервную копию .bak.
  2. Выполните команду reload: after_script по умолчанию создает следующий скрипт для перезагрузки nginx после обновления сертификата:
nginx -t && nginx -s reload

Рекомендации по минимальным привилегиям:

  • Открывайте доступ только к целевому каталогу сертификатов, не предоставляйте права на чтение и запись для всего /etc/nginx.
  • Через sudoers точно разрешайте nginx -t и nginx -s reload, не предоставляйте полный root shell.

Apache HTTP Server​

clmBot требуются следующие разрешения:

  1. Права на чтение и запись каталога сертификатов: наличие прав на чтение и запись для каталогов, где находятся SSLCertificateFile, SSLCertificateChainFile, SSLCertificateKeyFile.
  2. Выполнение команды перезапуска службы: after_script по умолчанию создаёт один из следующих скриптов (в зависимости от дистрибутива):
systemctl restart httpd.service
systemctl restart apache2.service

Минимальные рекомендации по разрешениям:

  • Открывайте только целевой каталог сертификатов, не предоставляйте доступ ко всему конфигурационному каталогу Apache.
  • Через sudoers предоставляйте права restart только для того имени службы Apache, которое фактически используется в текущей системе.

Tomcat​

clmBot требует следующих разрешений:

  1. Права на чтение и запись в каталоге сертификатов: права на чтение и запись для каталога, в котором находятся PEM-файлы сертификата/закрытого ключа или файл JKS keystore.
  2. Выполнение скриптов остановки и запуска: 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 необходимы следующие разрешения:

  1. Запуск с правами администратора: выполнение powershell.exe -NoProfile -ExecutionPolicy Bypass для импорта временного PFX и обновления привязок сайта IIS.
  2. Права на чтение и запись каталога сертификатов: создание и удаление временного 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), политике межсетевого экрана хоста.