SELinux (Security-Enhanced Linux) — это расширение для Linux, которое обеспечивает усиленный контроль доступа на основе политик. Разработанное NSA и внедренное в ядро Linux, SELinux добавляет слой безопасности, который может значительно повысить защиту системы от несанкционированного доступа и атак.

Основная концепция SELinux заключается в использовании модели контроля доступа на основе политик, что позволяет управлять доступом на уровне процессов, пользователей и объектов.

 

Основные компоненты SELinux

Политики безопасности

Политики SELinux определяют, какие действия разрешены или запрещены для различных процессов и пользователей. Они включают:

  • Политики уровня ядра: Управляют доступом на уровне системных вызовов.
  • Политики пользовательского уровня: Определяют доступ к файлам, сетевым портам и другим ресурсам на уровне приложений.

Пример команды для просмотра текущей политики:

bash
sestatus

Эта команда покажет текущий статус SELinux, включая режим работы и загруженные политики.

Контексты безопасности

Каждый объект в системе (файл, процесс, порт) имеет свой контекст безопасности, который состоит из:

  • Тип (Type): Указывает тип объекта и используется для применения правил политики.
  • Роль (Role): Определяет, какие роли имеет процесс или пользователь.
  • Пользователь (User): SELinux-пользователь, связанный с объектом.
  • Уровень (Level): Используется для управления многослойной безопасностью (MLS).

Пример команды для проверки контекста файла:

bash
ls -Z /path/to/file

Эта команда покажет SELinux-контекст для указанного файла.

Режимы работы

SELinux может работать в нескольких режимах:

  • Enforcing (Принудительный): Политики полностью применяются, и любые нарушения блокируются.
  • Permissive (Разрешающий): Политики не применяются, но нарушения регистрируются в журналах.
  • Disabled (Отключён): SELinux полностью отключён.

Пример команды для изменения режима работы:

bash
setenforce 1 # Переключение в режим Enforcing setenforce 0 # Переключение в режим Permissive

Основные команды CLI SELinux

Работа с SELinux требует знания основных команд для управления политиками, контекстами и журналами. Вот список наиболее часто используемых команд и их описание:

Команды для управления режимами SELinux

  • Проверка текущего режима SELinux:

    bash
    sestatus

    Вывод включает текущий режим SELinux, активность, политику и статус контекстов.

  • Изменение режима SELinux (требуются права суперпользователя):

    bash
    setenforce [0|1]
    • 0 — режим Permissive (разрешающий).
    • 1 — режим Enforcing (принудительный).

Команды для управления политиками

  • Просмотр загруженных политик:

    bash
    semodule -l

    Отображает список всех загруженных модулей политики.

  • Загрузка нового модуля политики:

    bash
    semodule -i /path/to/module.pp

    Загрузка и установка пользовательского модуля политики в формате .pp.

  • Удаление модуля политики:

    bash
    semodule -r module_name

    Удаление указанного модуля политики из системы.

Команды для управления контекстами

  • Просмотр контекста безопасности файла:

    bash
    ls -Z /path/to/file

    Показывает SELinux-контекст для указанного файла или каталога.

  • Изменение контекста безопасности файла:

    bash
    chcon -t target_type /path/to/file

    Устанавливает SELinux-контекст типа для указанного файла.

  • Восстановление стандартных контекстов для файлов:

    bash
    restorecon -Rv /path/to/directory

    Восстанавливает контексты безопасности для всех файлов в указанном каталоге.

Команды для анализа журналов

  • Просмотр записей о нарушениях SELinux в журнале аудита:

    bash
    ausearch -m avc

    Выводит записи о нарушениях, связанных с доступом к ресурсам.

  • Создание модуля политики на основе записей о нарушениях:

    bash
    audit2allow -a -M mypolicy semodule -i mypolicy.pp

    Создает и загружает новый модуль политики на основе анализа журнала аудита.

Лучшие практики использования SELinux

1. Настройка политики в режиме Permissive

Перед переключением в режим Enforcing запускайте SELinux в режиме Permissive для диагностики нарушений. Это позволит вам корректировать политику, не прерывая работу системы.

Пример диагностики нарушений:

bash
ausearch -m avc --start today

Эта команда ищет нарушения в журнале аудита SELinux за текущий день.

2. Использование правильных контекстов безопасности

Следите за корректностью контекстов безопасности для всех файлов и процессов. Применяйте restorecon для восстановления правильных контекстов.

Пример восстановления контекста для файла:

bash
restorecon -Rv /path/to/directory

Команда восстанавливает контексты для всех файлов и поддиректорий указанного каталога.

3. Мониторинг и анализ журналов

Регулярный мониторинг журналов SELinux позволяет обнаруживать и устранять проблемы. Используйте audit2allow для генерации и проверки политик на основе логов.

Пример использования audit2allow:

bash
grep avc /var/log/audit/audit.log | audit2allow -M mypolicy semodule -i mypolicy.pp

Эти команды создают модуль политики на основе записей в журнале аудита и загружают его в систему.

4. Периодическое обновление политик

Убедитесь, что политики SELinux обновляются в соответствии с изменениями в конфигурациях системы и установленных приложениях. Регулярно проверяйте и при необходимости корректируйте политику для соответствия текущему состоянию системы.

5. Тестирование новых приложений и служб

При установке новых приложений и служб запускайте их в режиме Permissive для проверки возможных нарушений политики.

Пример создания пользовательской политики:

bash
audit2allow -a -M mycustompolicy semodule -i mycustompolicy.pp

Этот процесс создаст и загрузит пользовательскую политику на основе зарегистрированных нарушений.

6. Создание и использование собственных политик

Создавайте и модифицируйте политики в ответ на конкретные потребности вашей системы. Используйте semanage для управления правилами безопасности.

Пример добавления новой категории для файла:

bash
semanage fcontext -a -t my_custom_t '/path/to/file(/.*)?' restorecon -Rv /path/to/file

Эти команды добавляют новую категорию для указанного пути и применяют её к файлам в указанной директории.

7. Обучение и документация

Обучение персонала и поддержка актуальной документации критичны для эффективного использования SELinux. Ознакомьтесь с ресурсами от Red Hat и других разработчиков SELinux для получения подробных инструкций и лучших практик.

Пример защиты web-сервера с помощью SELinux

Рассмотрим пример защиты Apache Web-сервера с использованием SELinux. Мы настроим SELinux, чтобы обеспечить, что веб-сервер имеет доступ только к необходимым ресурсам и портам.

Шаг 1: Проверка и настройка режима SELinux

Убедитесь, что SELinux включен и работает в режиме Enforcing:

bash
sestatus

Если SELinux работает в режиме Permissive, переключитесь на Enforcing:

bash
setenforce 1

Шаг 2: Установка и настройка Apache

Убедитесь, что Apache установлен и работает:

bash
yum install httpd systemctl start httpd systemctl enable httpd

Шаг 3: Проверка контекста безопасности

По умолчанию файлы веб-контента должны иметь контексты безопасности, соответствующие типу httpd_sys_content_t. Проверьте контексты для файлов веб-контента:

bash
ls -Z /var/www/html

Если файлы не имеют нужного контекста, измените его:

bash
chcon -R -t httpd_sys_content_t /var/www/html

Шаг 4: Настройка политик SELinux

SELinux уже включает политики для большинства веб-серверов, но иногда может понадобиться создание пользовательских политик. Для настройки доступа к определенным ресурсам или портам используйте следующие команды:

Пример 1: Разрешение Apache доступ к нестандартному порту

Если вы хотите, чтобы Apache имел доступ к нестандартному порту (например, 8080), добавьте его в список разрешенных портов:

bash
semanage port -a -t http_port_t -p tcp 8080

Пример 2: Разрешение Apache записи в определенные каталоги

Если необходимо, чтобы Apache имел право записывать в определенные каталоги, создайте и примените пользовательскую политику:

bash
audit2allow -M myhttpdpolicy semodule -i myhttpdpolicy.pp

Пример 3: Разрешение Apache доступа к сетевым ресурсам

Для доступа Apache к сетевым ресурсам, например, для соединений с базами данных, убедитесь, что все необходимые контексты и правила разрешены. Используйте audit2allow для создания политики:

bash
ausearch -m avc -ts recent | audit2allow -M httpd_network semodule -i httpd_network.pp

Шаг 5: Тестирование и мониторинг

После настройки убедитесь, что веб-сервер работает корректно. Проверьте журналы SELinux для выявления возможных нарушений:

bash
ausearch -m avc --start today

Если обнаружены нарушения, отреагируйте на них, создав или обновив политику, и повторите процесс проверки.

Заключение

SELinux представляет собой мощный инструмент для обеспечения безопасности систем на базе Linux, добавляя уровень контроля доступа, который значительно повышает защиту от атак и уязвимостей. Знание основных команд CLI SELinux и умение применять их на практике позволяют эффективно управлять безопасностью системы.

Пример защиты веб-сервера показывает, как можно настроить SELinux для обеспечения строгого контроля доступа, что повышает защиту вашего сервера и приложений.

Следование лучшим практикам и регулярное обновление политик помогут поддерживать высокий уровень безопасности вашей инфраструктуры.

 

Получить консультацию о системах резервного копирования
Внимание! Данная статья не является официальной документацией.
Использование информации необходимо выполнять с осторожностью, используя для этого тестовую среду.
Закажите бесплатную пробную версию программного обеспечения для резервного копирования и кибербезопасности от ведущих мировых производителей: Воспользуйтесь бесплатным сервисом расчета спецификации программного обеспечения для резервного копирования и кибербезопасности:

 

Если у вас есть вопросы о построении современных систем резервного копирования, репликации, синхронизации данных и защиты от программ вымогателей обратитесь в нашу компанию для получения консультации о современных технологиях резервного копирования и восстановления данных.

Наша компания имеет более чем 25-летний опыт в этой области.

 

Современные системы виртуализации Современные технологии виртуальных контейнеров Защита виртуализации и контейнеров Программное обеспечение

Переход на OpenStack

Переход на oVirt

Переход на Proxmox

Переход на XCP-ng

Переход на zStack

Переход на контейнеры CRI-O

Переход на контейнеры Docker

Переход на контейнеры LXC

Переход на контейнеры Podman

Переход на контейнеры rkt

План аварийного восстановления (Disaster recovery plan)

Эффективная защита  виртуальных серверов

Эффективная защита виртуальных контейнеров

Программное обеспечение для виртуальных серверов и виртуальных контейнеров

Бесплатный расчет спецификации программного обеспечения

Получение пробной версии программного обеспечения

 

Управление и оркестрация виртуальными контейнерами

 Лучшие практики защиты виртуальных систем

Лучшие разные практики
 

Оркестратор Kubernetes

Оркестратор Docker Swarm

Оркестратор LXD

Лучшие практики защиты OpenStack

Лучшие практики защиты oVirt

Лучшие практики защиты Proxmox

Лучшие практики защиты XCP-ng

Лучшие практики защиты zStack

Разные лучшие практики
Moderne IT Technologies
  • Пользователи 1
  • Материалы 162
  • Кол-во просмотров материалов 17268

Если вас интересует всё, что связано с построением систем резервного копирования и защиты данных, приобретением необходимого программного обеспечения или получением консультаций - свяжитесь с нами.

Возможно это важно для вас. Все кто покупает у нас программное обеспечение получают бесплатную техническую поддержку экспертного уровня.