Гид по технологиям

Установка и настройка SELinux на Ubuntu

6 min read Безопасность Обновлено 02 Apr 2026
Установка и настройка SELinux на Ubuntu
Установка и настройка SELinux на Ubuntu

TL;DR

SELinux добавляет обязательное разграничение доступа (MAC) к ядру Linux и повышает защиту хоста. На Ubuntu по умолчанию используется AppArmor — можно сменить его на SELinux: выключить или удалить AppArmor, установить пакеты selinux-basics, policycoreutils и selinux-utils, активировать SELinux, выбрать режим (permissive/enforcing) и проверить логи. Перед изменениями обязательно сделайте резервную копию системы или снимок виртуальной машины.

Важно: изменение ОС-уровневой безопасности может привести к нестабильности. Тестируйте на стенде и имейте план отката.

логотип безопасности на экране

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

Что такое SELinux?

SELinux — это модуль ядра и набор утилит для реализации Mandatory Access Control (MAC). Основные понятия:

  • Политика — набор правил, кто и что может делать.
  • Контекст — метаданные (label) файла или процесса, которые используются при проверке прав.
  • Enforcing/Permissive/Disabled — режимы работы, определяющие, блокируются ли нарушения или только логируются.

Краткое определение: SELinux контролирует доступ на уровне политик, а не только через традиционные UNIX-права.

Основные преимущества и ограничения

  • Преимущества: уменьшает размах атаки при компрометации, изолирует сервисы, помогает защищать веб-сервера и хранилища данных.
  • Когда не подходит: легкие embedded-системы со строгими требованиями к размеру; старые приложения с нестандартным поведением, которые сложно правильно профилировать без значительной доработки.

Альтернативы

  • AppArmor — профильный MAC по умолчанию в Ubuntu; проще в настройке, но менее гибкий в сложных сценариях.
  • TOMOYO, Smack — другие MAC-системы с собственными моделями.
  • Grsecurity — коммерческая/патчная защита ядра (подходит для специфичных задач).

Подготовка и общие рекомендации

  1. Сделайте резервную копию системы или снимок виртуальной машины (VM snapshot).
  2. Работайте на тестовой машине перед продакшеном.
  3. Документируйте текущие профили AppArmor и их влияние на сервисы.
  4. План отката: как быстро вернуть AppArmor и удалить SELinux.

Пошаговая инструкция: установка SELinux на Ubuntu

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

Шаг 1. Обновите систему

Откройте терминал (Ctrl+Alt+T) и выполните:

sudo apt update && sudo apt upgrade -y

Это гарантирует, что вы устанавливаете последние пакеты и зависимости.

Шаг 2. Отключите или удалите AppArmor

Выберите отключение (быстрый тест) или полное удаление (чистая система). Для временного отключения:

sudo systemctl stop apparmor
sudo systemctl disable apparmor
systemctl status apparmor

Если хотите удалить AppArmor полностью:

sudo apt-get remove --purge apparmor -y
sudo apt autoremove -y

После удаления или отключения перезагрузите систему:

sudo reboot

AppArmor остановлен и отключён в Ubuntu

Примечание: для тестирования достаточно отключить сервис. Полное удаление полезно, если вы уверены, что переход к SELinux — навсегда.

Шаг 3. Установка пакетов SELinux

Установите основные пакеты:

sudo apt-get install policycoreutils selinux-utils selinux-basics -y

После установки запустите инструмент активации (предоставляется пакетом selinux-basics):

sudo selinux-activate

selinux-activate выполняет конфигурацию, но на некоторых системах может потребоваться ручная правка конфигурационного файла. Если команда недоступна, убедитесь, что пакет selinux-basics установлен.

Шаг 4. Файлы конфигурации и постоянное включение

Основные файлы:

  • /etc/selinux/config — основной конфигурационный файл режима SELinux.

Чтобы включить SELinux постоянно, откройте файл и измените строку SELINUX=:

sudo nano /etc/selinux/config

Установите:

SELINUX=enforcing

Сохраните и выйдите (Ctrl+X, Y, Enter).

Шаг 5. Режимы SELinux и проверка

SELinux поддерживает состояния:

  • disabled — отключён
  • permissive — нарушения не блокируются, только логируются
  • enforcing — нарушения блокируются и логируются

Для немедленного переключения используйте:

sudo setenforce 1   # включить enforcing
sudo setenforce 0   # включить permissive
getenforce          # показывает текущий режим
sestatus            # подробный статус SELinux

После смены конфигурации рекомендуется перезагрузить систему:

sudo reboot

текущий режим SELinux установлен в permissive

Замечание: getenforce печатает только текущий режим (Enforcing/Permissive/Disabled), а sestatus даёт подробности о политике и состоянии.

Шаг 6. Просмотр логов SELinux

Логи находят в /var/log/audit/audit.log (если работает auditd) и в системном журнале:

grep selinux /var/log/audit/audit.log
ausearch -m avc -ts today
journalctl -t setroubleshoot

Понимание AVC (Access Vector Cache) сообщений — ключ к исправлению блокировок: они содержат процесс, цель операции и необходимые контексты.

Краткий SOP: быстрая процедура для администратора

  1. Сделать snapshot/резервную копию.
  2. Обновить пакеты.
  3. Отключить AppArmor (systemctl stop/disable).
  4. Установить selinux-basics, selinux-utils, policycoreutils.
  5. Выполнить sudo selinux-activate.
  6. Переключить в permissive и перезагрузить.
  7. Мониторить логи, исправлять AVC с помощью audit2allow (только после анализа).
  8. Переключить в enforcing, повторно тестировать.

Как безопасно переводить в enforcing

  1. Сначала permissive: так вы увидите, какие правила будут блокироваться.
  2. Анализируйте логи (ausearch, audit2allow). Не создавайте автоматически политики без ревью.
  3. Применяйте исключения точечно: пишите минимальные правила.
  4. Переходите в enforcing поэтапно, контролируя сервисы и тесты.

Отладка и откат — аварийный план

Если после включения SELinux сервисы перестали работать:

  1. Быстро временно переведите систему в permissive:
sudo setenforce 0
  1. Просмотрите последние AVC записи:
ausearch -m avc -ts recent
ausearch -m avc --start recent --raw | audit2allow -M myfix
semodule -i myfix.pp   # только после ревью содержимого
  1. Если восстановить не получается, откатитесь к резервной копии или снимку VM.

Как полностью удалить SELinux

Если вы приняли решение убрать SELinux:

sudo apt-get remove --purge policycoreutils selinux-utils selinux-basics -y
sudo apt autoremove -y
sudo reboot

После удаления проверьте, что /etc/selinux/config указывает SELINUX=disabled или файл отсутствует.

Критерии приёмки

  • SELinux включён в режиме enforcing и отвечает getenforce: Enforcing.
  • Ключевые сервисы (веб, БД, sshd) проходят интеграционные тесты без нежелательных блокировок.
  • Нет непринятых AVC ошибок в логах в течение заданного окна наблюдения (обычно 24–72 часа).
  • Документированы все созданные пользовательские модули и внесённые изменения в политики.

Тестовые сценарии и критерии приёмки

  • Проверка старта сервисов: nginx, mysql/postgres, sshd должны стартовать и отвечать.
  • Функциональные тесты: страницы приложения, авторизация, запись данных.
  • Нагрузочные тесты: базовые запросы под нагрузкой без новых AVC ошибок.
  • Безопасность: попытка доступа к защищённым файлам из приложений должна блокироваться.

Чек-листы по ролям

Администратор:

  • Сделал snapshot/резервную копию.
  • Отключил AppArmor.
  • Установил SELinux пакеты.
  • Включил permissive и собрал логи.
  • Составил и проверил пользовательские модули.

Разработчик:

  • Прогнал интеграционные тесты при permissive.
  • Сообщил о блокировках инфраструктуре безопасности.

Команда безопасности:

  • Проанализировала AVC и одобрила правила.
  • Контролировала deployment в enforcing режиме.

Полезные команды (cheat sheet)

sudo apt update && sudo apt upgrade -y
sudo systemctl stop apparmor
sudo systemctl disable apparmor
sudo apt-get remove --purge apparmor -y
sudo apt-get install policycoreutils selinux-utils selinux-basics -y
sudo selinux-activate
sudo setenforce 1          # enforcing
sudo setenforce 0          # permissive
getenforce
sestatus
ausearch -m avc -ts today
audit2allow -w -a          # показать, почему правило не применяется
audit2allow -a -M localmod # сгенерировать модуль политики (ревью обязателен)
semodule -i localmod.pp

Когда SELinux может не сработать или вызывать сложности

  • Приложения, которые меняют контексты файлов динамически или используют нестандартные IPC/сокеты.
  • Сложные контейнерные сценарии, где нужна дополнительная интеграция (например, Docker, Podman требуют корректной политики для контейнеров).
  • Системы с ограниченным администрированием и отсутствием специалистов для анализа AVC-логов.

Советы и эвристики

  • Всегда начинать с permissive и наблюдать 48–72 часа.
  • Не создавать широких разрешающих правил; вместо этого уточняйте контексты для конкретных процессов и ресурсов.
  • Использовать audit2allow как подсказку, но не применять правила сразу без ревью.

Локальные особенности для Ubuntu

  • Ubuntu по умолчанию использует AppArmor; при переходе стоит проверить зависимости PPA и кастомных пакетов, которые могли ориентироваться на AppArmor-профили.
  • В облачных образах (Cloud Images) и управляемых инстансах провайдеры могут иметь свои рекомендации по включению SELinux.

FAQ

Как временно отключить SELinux?

Временно переведите систему в permissive (не требует перезагрузки):

sudo setenforce 0

Как навсегда отключить SELinux?

Откройте /etc/selinux/config и установите:

SELINUX=disabled

Затем перезагрузите систему.

Чем SELinux отличается от AppArmor?

SELinux использует маркировку ресурсов (labels) и централизованную политику, что даёт более детальный и гибкий контроль. AppArmor опирается на профили по пути (pathname) и часто проще в настройке, но менее точен в тонких сценариях безопасности.

Итог

SELinux — мощный инструмент контроля доступа, который значительно повышает безопасность хоста, но требует аккуратной и поэтапной настройки. Начинайте с резервного копирования, включайте permissive, анализируйте логи, добавляйте только необходимые правила и только после проверки переводите систему в enforcing.

Ключевые шаги: обновление системы, отключение AppArmor, установка selinux-пакетов, активация, мониторинг логов, пошаговый перевод в enforcing и наличие плана отката.

Дополнительные ресурсы

  • Справка по ausearch, audit2allow, semodule и sestatus в man-страницах (man ausearch, man audit2allow, man semodule, man sestatus).

FAQ — краткая сводка

  • Вопросы по восстановлению: используйте setenforce 0 и откат к snapshot.
  • Вопросы по логам: используйте ausearch и audit2allow.

отображается файл конфигурации SELinux в Ubuntu

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как копировать формулы в Excel эффективно
Excel

Как копировать формулы в Excel эффективно

Фокус на iPad — настройка и лучшие практики
iPad

Фокус на iPad — настройка и лучшие практики

Защитить домашний Wi‑Fi: как не дать соседям воровать интернет
Безопасность сети

Защитить домашний Wi‑Fi: как не дать соседям воровать интернет

Профессиональный баннер LinkedIn в Canva
Дизайн

Профессиональный баннер LinkedIn в Canva

Spotify Wrapped 2024 — как посмотреть и что нового
Музыка

Spotify Wrapped 2024 — как посмотреть и что нового

Проверка отправителей в Gmail против фишинга
Безопасность

Проверка отправителей в Gmail против фишинга