JavaRush /Курсы /Docker SELF /Введение в SELinux: проверка статуса, включение, базовые ...

Введение в SELinux: проверка статуса, включение, базовые команды

Docker SELF
5 уровень , 2 лекция
Открыта

1. Что такое SELinux и зачем он нужен?

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

В чём его уникальность?

Представьте, что ваша система — это дом. Традиционные права доступа (rwx для пользователя, группы и остальных) — это как ключи от замков на дверях. Но что, если кто-то взломает дверь? SELinux становится второй линией обороны, усиливая защиту с помощью правил поведения: "Эй, даже если ты внутри, в ванную комнату заходить нельзя!"

Основные задачи SELinux:

  1. Защита от несанкционированного доступа для процессов и файлов.
  2. Снижение ущерба от атак, даже если процесс был взломан.
  3. Принципы "защиты по умолчанию" (всё запрещено, кроме разрешённого).

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

SELinux может работать в трёх режимах:

  1. Enforcing — активен, применяет политику безопасности и блокирует нарушающие процессы.
  2. Permissive — только записывает нарушения в журналы, но не блокирует действия.
  3. Disabled — полностью отключён
Забавный факт:

SELinux в режиме enforcing напоминает строгого старшего брата для вашей системы. Permissive — это младший брат, который только жалуется, но ничего не делает.


2. Проверка статуса SELinux

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

Команда getenforce

Эта команда просто скажет вам, какой режим сейчас используется: Enforcing, Permissive, или Disabled.

$ getenforce
Enforcing

Если вывод Disabled, то SELinux отключён — и это значит, что для включения вам придётся немного поработать, но об этом позже.

Команда sestatus

Более полный отчёт о статусе SELinux можно получить с помощью этой команды. Она покажет текущее состояние, активный режим и используемую политику.

$ sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing

Здесь вы можете увидеть:

  • enabled/disabled — включён ли SELinux.
  • current mode — активный режим (enforcing, permissive).
  • loaded policy name — какая политика загружена. Например, "targeted" означает, что SELinux применяет контроль только к ключевым процессам.

3. Переключение режимов SELinux

Чтобы изменить текущий режим работы SELinux, используется команда setenforce.

Переключение в permissive-режим

Если вы хотите временно "ослабить поводок" SELinux, можно включить permissive-режим.

$ sudo setenforce 0

Теперь SELinux будет только фиксировать нарушения, но не блокировать их. Вы можете проверить новую настройку с помощью команды getenforce:

$ getenforce
Permissive

Переключение обратно в enforcing-режим

Когда вы захотите снова включить строгий контроль, выполните:

$ sudo setenforce 1

И, конечно, проверьте результат:

$ getenforce
Enforcing

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


4. Включение SELinux

Если SELinux был отключён, нужно внести изменения в конфигурационный файл. SELinux управляется через файл /etc/selinux/config.

Проверка текущего конфигурационного файла

Давайте посмотрим, что там настроено. Используйте любой текстовый редактор, например nano:

$ sudo nano /etc/selinux/config

Вы увидите что-то вроде:

# This file controls the state of SELinux on the system.
SELINUX=disabled
SELINUXTYPE=targeted

Переключение SELinux в активное состояние

Чтобы включить SELinux, измените строку SELINUX=disabled на SELINUX=enforcing или SELINUX=permissive.

Вот пример файла после изменений:

# This file controls the state of SELinux on the system.
SELINUX=enforcing
SELINUXTYPE=targeted

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

$ sudo reboot

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


5. Разбор контекстов SELinux

Что такое контексты?

Контексты — это метки, которые SELinux использует для управления доступом. У каждого файла, процесса и пользователя есть свой контекст.

Вы можете посмотреть контексты файлов с помощью команды ls -Z. Вот пример:

$ ls -Z /var/www/html
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 index.html

Что это значит?

  1. unconfinedu — пользователь SELinux.
  2. objectr — тип объекта.
  3. httpdsyscontent_t — тип доступа (в данном случае связано с веб-сервером).
  4. s0 — уровень безопасности.

Изменение контекста

Если SELinux препятствует работе вашего приложения, возможно, нужно изменить контекст файла. Используйте команду chcon:

$ sudo chcon -t httpd_sys_content_t /var/www/html/index.html

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


6. Пример работы с SELinux

Давайте разберём пример. Вы администратор сервера, который хочет развернуть веб-сервер, но SELinux блокирует доступ к файлам в каталоге /var/www/html.

Шаги:

  1. Проверьте статус SELinux:

    $ sestatus
    

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

  2. Посмотрите контексты файлов:

    $ ls -Z /var/www/html
    
  3. Если контекст неправильный, измените его:

    $ sudo chcon -t httpd_sys_content_t /var/www/html/*
    
  4. Проверьте работу веб-сервера.


7. Типичные ошибки и проблемы

  1. SELinux отключён, и вы не замечаете этого. Всегда проверяйте статус с помощью sestatus. Многие администраторы забывают включить SELinux после установки системы.

  2. "Почему мой сервис не работает?" SELinux блокирует доступ. Используйте audit.log для анализа:

    $ sudo cat /var/log/audit/audit.log | grep denied
    
  3. Не сохраняются изменения контекста. Используйте не chcon, а команды для постоянных изменений, такие как semanage.

Изучение SELinux похоже на подготовку к марафону: поначалу может быть сложно, но со временем вы поймёте, как этот инструмент может значительно повысить безопасность системы. Используйте эти знания, чтобы быть тем админом, которого не пробьёт даже самый продвинутый хакер.

1
Задача
Docker SELF, 5 уровень, 2 лекция
Недоступна
Проверка текущего режима SELinux
Проверка текущего режима SELinux
1
Задача
Docker SELF, 5 уровень, 2 лекция
Недоступна
Подробная информация о состоянии SELinux
Подробная информация о состоянии SELinux
1
Задача
Docker SELF, 5 уровень, 2 лекция
Недоступна
Переключение режимов работы SELinux
Переключение режимов работы SELinux
Комментарии (1)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Slevin Уровень 1
26 сентября 2025
Сперва даются команды для работы с SELinux, а затем рассказывают как его включить... 😐 А затем полчаса спустя, ты узнаешь что SELinux не работает под WSL