Подводные камни Autoenrollment’а сертификатов в Linux

Изображение: recraft
Все чаще современные IT-инфраструктуры «живут» в гибридной парадигме, когда Linux-системы сосуществуют с Windows-доменами, облачными сервисами и контейнерами. Постепенно переводя экосистемы на рельсы СПО и российских операционных систем, администраторы сталкиваются с отсутствием привычных средств автоматизации управления инфраструктурой открытых ключей PKI (Public Key Infrastructure). В отличие от Windows, где Active Directory Certificate Services (AD CS) и Data Protection API (DPAPI) обеспечивают централизованное и безопасное управление сертификатами, в Linux отсутствуют встроенные аналоги этих механизмов.
В основе всех проблем управления сертификатами в Linux-инфраструктурах лежит тот факт, что Linux — это семейство операционных систем. Если вся инфраструктура Windows является частью корпоративной среды Microsoft, то у каждого дистрибутива Linux свой производитель, что и обуславливает в свою очередь разницу в подходах к реализации одного и того же функционала.
В Linux нет единого стандарта хранения сертификатов
В отличие от Windows, где Active Directory Certificate Services (AD CS) и Group Policy обеспечивают централизованное управление сертификатами, в Linux нет унифицированного решения. В итоге разные дистрибутивы используют разные хранилища сертификатов, например, /etc/ssl/certs, /etc/pki/tls/certs и так далее. И если в Windows есть встроенный механизм автоматической регистрации в корпоративном CA (Certificate Authority), в Linux его нет! Все это приводит к тому, что при попытке централизовать работу нужно приводить сложившийся «зоопарк» к единообразию.
Интеграция с корпоративными центрами сертификации превращается в отдельный проект
Часто для решения этой задачи в ОС вы не найдете даже нужных утилит. Если в Windows, как уже отметили, поддержка доменного AD CS встроена, , то в Linux требуется установка дополнительных пакетов, например, sscep.
И, разумеется, нам не избежать сложностей с автоматическим перевыпуском сертификатов, потому что в Linux нет аналога certreq из Windows. Чтобы его заместить приходится использовать скрипты, например, openssl, curl + API CA.
Автоматическое развертывание и обновление сертификатов само по себе не работает так, как мы этого хотим
Чтобы работало автоматическое обновление сертификатов, необходимы соответствующие правила, утилиты и триггеры. В Linux отсутствуют механизмы оповещения об истечении срока действия сертификатов. Чтобы добиться такой же оперативности автоматического выпуска, приходится создавать аналог встроенных в Windows событий. То есть нужно внедрять системы мониторинга и автоматизации, которые смогут отследить срок действия сертификатов, а также автоматизировать каким-то образом процесс их обновления.
Контроль доступа к сертификатам может быть вообще не реализован
В Windows ключи защищены через DPAPI, тогда как в Linux они часто лежат просто в файлах. А механизмы, которые будут отслеживать права доступа к ним, нужно реализовывать самостоятельно. Режим chmod 600 часто не соблюдается, и ключи оказываются незащищенными.
Учитывая сложность построения практик работы с сертификатами, соблазн использовать простой SCEP без дополнительной аутентификации оказывается большим. Зачастую даже одноразовый challenge-пароль является “константой”, что однозначно является слабым местом в безопасности, которым рано или поздно кто-то воспользуется.
Для работы с сертификатами облачных и контейнерных сред требуется еще больше дополнительных инструментов
Когда мы говорим о контейнерах, проблема автоматизации работы с сертификатами становится еще острее. И хотя в Kubernetes используются сертификаты с TTL до 1 года, для security best practices рекомендуется TTL на уровне 30-90 дней. А это значит, что перевыпуск будет частым, и при большом количестве контейнеров мы получаем серьезную головную боль.
Другими словами, процесс автоматизации выпуска, обновления и отзыва сертификатов в Linux-доменах – дело трудоёмкое и рискованное. И не стоит недооценивать опасности нерешенных задач на каждом из этих уровней. Без должной автоматизации управление сертификатами в Linux останется рутинной задачей, решение которой требует комбинации PKI-инструментов, средств оркестрации и мониторинга. Если коротко, то для построения достаточно защищенной и автоматизированной системы нужно пройти 6 этапов:
- Внедрение единой системы CA.
- Использование стандартных протоколов (SCEP, ACME) для автоматического выпуска сертификатов.
- Автоматизация через скрипты с использованием сторонних утилит: sscep, certmonger, Ansible, и тд.
- Организация мониторинга сроков действия сертификатов и их автоматического перевыпуска
- Обеспечение вопросов безопасности: аутентификация и авторизация, разделение и ограничение прав доступа.
- Мониторинг работы комплекса и журналирование для быстрого устранения проблем.
В контексте проблем autoenrollment’a сертификатов в Linux, у Avanpost есть набор уже интегрированных решений – Avanpost DS + CA.
Возможности обоих продуктов позволят полностью решить задачу autoenrollment-а сертификатов в Linux-инфраструктурах, используя стандартные и безопасные механизмы: служба каталога LDAP, Kerberos, разграничение доступа по доменным группам, использование доменных политик и шаблонов.
Какие задачи выполняет Avanpost CA:
- выпуск сертификатов для компьютеров Linux на основании доменных политик DS
- автоматический перевыпуск согласно настройкам шаблонов и срокам действия
- автоматическую публикацию корневых сертификатов и CRL в структуре LDAP-каталога DS
- автоматическую публикацию сертификатов пользователей и компьютеров домена DS в профили (учетные записи) LDAP-каталога
Какие задачи выполняет Avanpost DS:
- надежную аутентификацию компьютеров Linux при доступе к сервисам CA с использованием Kerberos
- разграничение доступа к функциям администрирования и шаблонам CA через доменные группы
- доменный клиент (CLI) для реализации доменных политик и доступа к сервисам CA для получения и проверки сертификатов
- автоматическую доставку и обновление корневых и промежуточных сертификатов и CRL в локальных хранилищах компьютеров Linux
Таким образом комбинация решений DS и CA обеспечивают как сервисы выдачи и валидации сертификатов, так и полноценные механизмы автоматизированного управления ими. Поддержка механизмов Kerberos а также разграничение прав доступа по доменным группам обеспечивают достаточный уровень безопасности для управления сертификатами в корпоративной среде.
Автоматизация управления сертификатами в Linux-инфраструктурах — это сложная, но решаемая задача.
Сейчас уже понятно, что Linux-инфраструктуры могут достичь уровня безопасности и автоматизации Windows-доменов, но только при комбинации готовых решений и дополнительных практик — таких как DevOps-ориентированные подходы к управлению сертификатами. Возможно, в будущем мы получим Microsoft-подобные решения с автоматизацией «из коробки», но пока автоматический enrollment требует серьезной работы и тщательного присмотра за безопасностью.
