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