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

Подводные камни 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 этапов:

  1. Внедрение единой системы CA.
  2. Использование стандартных протоколов (SCEP, ACME) для автоматического выпуска сертификатов.
  3. Автоматизация через скрипты с использованием сторонних утилит: sscep, certmonger, Ansible, и тд.
  4. Организация мониторинга сроков действия сертификатов и их автоматического перевыпуска
  5. Обеспечение вопросов безопасности: аутентификация и авторизация, разделение и ограничение прав доступа.
  6. Мониторинг работы комплекса и журналирование для быстрого устранения проблем.

В контексте проблем 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 требует серьезной работы и тщательного присмотра за безопасностью.

Avanpost
Автор: Avanpost
Аванпост - ведущий российский разработчик систем идентификации и управления доступом к информационным ресурсам предприятия, работает на рынке информационных технологий и информационной безопасности с 2007 года и к настоящему моменту является технологическим лидером в сегменте Identity Management.
Комментарии: