SELinux

SELinux для начинающих, использующих CentOS

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

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

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

ПРИМЕЧАНИЕ: Прежде чем мы начнем, хорошо использовать команды в этом руководстве как пользователь root или пользователь в группе sudoers.

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

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

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

В большинстве установок дистрибутивов REHL некоторые пакеты устанавливаются по умолчанию. Эти пакеты включают:

  1. setools - этот пакет используется для мониторинга журналов, запросов политик и управления контекстными файлами.
  2. policycoreutils-python - предоставляет основные утилиты python для управления SELinux
  3. policycoreutils - этот пакет также предоставляет утилиты для управления SELinux.
  4. mcstrans - mcstrans предоставляет демон перевода SELinux, который переводит различные уровни в простые форматы, которые можно легко понять.
  5. setools-console - аналогично setools.
  6. Selinux-policy - справочник по настройке политики SELinux
  7. Selinux-policy-target - аналогично SELinux-policy
  8. Libselinux-utils - утилиты SELinux libselinux, которые помогают управлять SELinux
  9. Setroubleshoot-server - инструменты для устранения неполадок SELinux

Чтобы проверить, какие пакеты уже установлены в вашей системе, вы можете использовать команду rpm -qa и передать результат в grep для SELinux как:

rpm -qa | grep selinux
libselinux-utils-2.9-4.el8_3.x86_64
rpm-плагин-selinux-4.14.3-4.el8.x86_64
селинукс-политика-таргет-3.14.3-54.el8_3.2.Ноарх
python3-libselinux-2.9-4.el8_3.x86_64
selinux-policy-3.14.3-54.el8_3.2.Ноарх
libselinux-2.9-4.el8_3.x86_64

Это должно дать вам вывод всех пакетов, установленных для поддержки SELinux

Если в вашей системе установлены не все пакеты SELinux, используйте yum для их установки, как показано в следующей команде:

yum install policycoreutils policycoreutils-python-utils selinux-policy selinux-policy-target libselinux-utils setroubleshoot-server setools setools-console mcstrans

Режимы и состояния SELinux

Давайте теперь начнем играть с SELinux, в частности, с режимами SELinux.

Режимы SELinux

При включении SELinux может работать в трех возможных режимах:

Принудительный режим

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

Разрешающий режим

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

Отключенный режим

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

Состояния SELinux

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

getenforce
Отключено

Приведенный выше вывод указывает, что SELinux в настоящее время отключен.

Вы также можете использовать команду sestatus, как показано ниже:

сестатус
Статус SELinux: отключен

Включение и отключение SELinux

Состояния и конфигурация SELinux обрабатываются конфигурационным файлом, расположенным в / etc / selinux / config. Вы можете использовать команду cat для просмотра его содержимого.

кошка / и т. д. / selinux / config
# Этот файл контролирует состояние SELinux в системе.
# SELINUX = может принимать одно из трех значений:
#enforcing - принудительно применяется политика безопасности SELinux.
#permissive - SELinux печатает предупреждения вместо принудительного выполнения.
#disabled - Политика SELinux не загружается.
SELINUX = принудительное исполнение
# SELINUXTYPE = может принимать одно из трех значений:
# target - Целевые процессы защищены,
# минимум - изменение целевой политики. Только выбранные процессы защищены.
# mls - многоуровневая защита.
SELINUXTYPE = таргетированный

Из вышеприведенного вывода у нас есть две основные директивы. Директива SELINUX указала режим, в котором настроен SELinux. Директива SELINUXTYPE определяет набор политик SELinux. По умолчанию SELinux использует целевую политику, которая позволяет настраивать разрешения управления доступом. Другая политика - Многоуровневая безопасность или MLS.

Вы можете найти минимальную политику в некоторых версиях.

компакт-диск / etc / selinux /
[ls -l
всего 4
-rw-r - r-- 1 root root 548 16 февраля 22:40 config
drwxr-xr-x 1 root root 4096 16 февраля 22:43 мл
-rw-r - r-- 1 root root 2425 21 июл 2020 semanage.conf
drwxr-xr-x 1 root root 4096 16 февраля 22:40 целевой

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

нано / и т. д. / selinux / config

Теперь отредактируйте директиву SELINUX как:

SELINUX = разрешающий

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

перезагружать

ПРИМЕЧАНИЕ. Мы настоятельно рекомендуем установить для директивы SELINUX значение permissive, прежде чем применять SELinux.

После перезагрузки системы проверьте журналы, о которых сообщает SELinux, в / var / log / messages.

Затем убедитесь, что у вас нет ошибок, и примените SELinux, установив директиву для принудительного выполнения в / etc / selinux / config

Наконец, вы можете просмотреть статус SELinux с помощью команды sestatus:

Статус SELinux: включен
SELinuxfs монтирование: / sys / fs / selinux
Корневой каталог SELinux: / etc / selinux
Название загруженной политики: таргетированная
Текущий режим: принудительный
Режим из файла конфигурации: ошибка (успех)
Статус политики MLS: включен
Статус политики deny_unknown: разрешено
Проверка защиты памяти: актуальная (безопасная)
Максимальная версия политики ядра: 31

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

разрешающая сила

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

sestatus Статус SELinux: включен
SELinuxfs монтирование: / sys / fs / selinux
Корневой каталог SELinux: / etc / selinux
Название загруженной политики: таргетированная
Текущий режим: разрешительный
Режим из файла конфигурации: принудительное исполнение
Статус политики MLS: включен
Статус политики deny_unknown: разрешено
Проверка защиты памяти: актуальная (безопасная)
Максимальная версия политики ядра: 31

Политика и контекст SELinux

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

SELinux работает путем реализации политик безопасности. Политика SELinux относится к правилу, которое используется для определения прав доступа для каждого объекта в системе. Объекты относятся к пользователям, процессам, файлам и ролям.

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

Например, создайте каталог в своем домашнем каталоге и просмотрите его контекст безопасности SELinux, как показано в приведенных ниже командах:

mkdir ~ / linuxhint_dir
ls -Z ~ / | grep linuxhint

Это отобразит вывод, как показано ниже:

Unlimited_u: object_r: user_home_t: s0 linuxhint_dir

Вы также можете найти другие каталоги с контекстами безопасности, например:

система: _u: object_r: user_home_t: s0

Вы можете понять, что приведенный выше вывод следует синтаксису user: role: type: level.

Заключение

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

Спасибо за чтение.

Полезные инструменты для геймеров Linux
Если вам нравится играть в игры на Linux, скорее всего, вы использовали приложения и утилиты, такие как Wine, Lutris и OBS Studio, для улучшения игров...
Игры HD Remastered для Linux, ранее не выпускавшиеся для Linux
Многие разработчики и издатели игр придумывают HD-ремастеры старых игр, чтобы продлить жизнь франшизы, порадовать фанатов, требующих совместимости с с...
Как использовать AutoKey для автоматизации игр под Linux
AutoKey - это утилита автоматизации рабочего стола для Linux и X11, запрограммированная на Python 3, GTK и Qt. Используя его функции сценариев и MACRO...