Как предотвратить установку epel-release?

Вопрос или проблема

Я ищу способ предотвратить установку epel-release RPM на моих системах RHEL 8 и 9. Мы используем внутреннее зеркало репозитория для этого, которое конфликтует с версией, на которую указывает epel-release. Некоторые менее опытные системные администраторы иногда пытаются следовать инструкциям, найденным в Интернете, и иногда идут на большие ухищрения, чтобы обойти уже установленные мною ограничения.

Я уже добавил следующее в мой dnf.conf:

[main]
... # другие настройки здесь
excludepkgs = epel-release

но это не предотвращает загрузку epel-release RPM и установку его с помощью rpm.

Еще одна ситуация, создающая проблемы, это когда другой RPM включает epel-release как зависимость. Это тоже должно вызывать ошибку, но может быть обойдено аналогичным способом.

Кроме того, я также автоматически отключаю все “внешние” репозитории.

/etc/dnf/plugins/subscription-manager.conf

[main]
enabled=1
disable_system_repos = 1

Но и это легко обойти.

Я хотел бы полностью предотвратить установку любого пакета с именем epel-release (любой версии), независимо от того, используется ли для этого dnf, yum или rpm.

Есть ли способ достичь этого?

Ответ или решение

Для предотвращения установки пакета epel-release в системах RHEL 8 и 9, даже при попытках опытных или неопытных администраторов обойти имеющиеся ограничения, необходимо предпринять несколько последовательных стратегий:

Теория

Чтобы полностью запретить установку конкретного пакета, такого как epel-release, необходимо учесть несколько моментов. Стандартные методы, такие как использование excludepkgs в dnf.conf, могут предотвратить установку пакета через dnf или yum, но не защищают от прямой установки при помощи rpm.

Кроме того, может возникнуть ситуация, когда пакет epel-release будет включен как зависимость в другом пакете. Здесь простое ограничение с использованием excludepkgs не поможет, так как зависимость может быть установлена одновременно с основным пакетом. Также стоит учитывать, что отключение внешних репозиториев может быть временной мерой, так как администраторы могут их снова включить.

Пример

Рассмотрим, как можно составить стратегию, используя политики конфигурации и системные механизмы контроля:

  1. Контроль доступа на уровне пакетов: Используйте механизм безопасности SELinux. Создайте или измените соответствующий модуль SELinux, чтобы запретить доступ к epel-release. Так как SELinux может контролировать доступ к файловым системам и управлять процессами, это может стать эффективной первой линией обороны.

  2. Фильтрации через пакеты-модули: Используйте пакетные модули, такие как rpm-plugin для создания фильтров на базе известных конфигураций для предотвращения установки через rpm.

  3. Мониторинг и предупреждения: Настройте систему мониторинга, например, используя Auditd, чтобы отслеживать все попытки установки определенного пакета. Это позволит быстро реагировать на инциденты и предотвращать повторные попытки обхода ограничений.

Применение

С целью запрета установки epel-release можно использовать следующий пошаговый подход:

  1. Настройки SELinux:

    • Создайте новый домен или измените существующий, например, используя:
      semanage fcontext -a -t bin_t '/usr/bin/rpm'
      semanage boolean -m --on domain_can_have_interactive_subdomain
      service auditd start
    • Добавьте EPOLICY в файл конфигурации для запрета:
      echo "allow domain_t bin_t:exec *rm;" >> /etc/selinux/targeted/modules/active/itas/admin.policy
      semodule -B
  2. Контроль процессов: Системы контроля, такие как AppArmor или более настойчивые DAC (Discretionary Access Control), могут помочь в установке ограничений на уровне процессов. Moeжно установить рамки, в которых определенные процессы смогут выполнять или не выполнять действия в системе.

  3. Использование Immutable System State: Используйте утилиты, такие как chattr, для защитной блокировки ключевых файлов и конфигураций:

    chattr +i /etc/dnf/dnf.conf
  4. Настройка службы Auditd и журналирование:

    • Добавьте правила в конфигурацию auditd, чтобы фиксировать попытки установить epel-release:
      auditctl -a always,exit -F arch=b64 -S execve -k epelrelease-attempts
    • Настройте так, чтобы любое использование rpm для установки epel-release отправляло тревогу на вашу систему мониторинга.
  5. Обучение и осведомленность: Убедитесь, что все системные администраторы и пользователи в курсе строгих политик использования epel-release. Проводите регулярные тренинги и утверждайте политические документы для описания использования разрешенных репозиториев.

Заключение

Реализовав описанные выше меры, вы сможете создать многослойную защиту от установки конфликтующего пакета epel-release в ваших системах RHEL 8 и 9. Сочетание системных настроек, ограничения доступа, активного мониторинга и обучения персонала поможет обеспечить соблюдение политики, повышения безопасности и отказоустойчивости системы в целом.

Оцените материал
Добавить комментарий

Капча загружается...