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

Требования к правам для запуска 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), файл цепочки CA (необязательно) и файл закрытого ключа (.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.
  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 и права модулей должны проверяться отдельно в соответствии с базовым уровнем безопасности хоста.

Пример конфигурации sudoers в Linux

Следующий пример показывает только степень детализации прав. Фактические пути скорректируйте в соответствии с целевым хостом.

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) политике брандмауэра хоста.