SELinux может показаться сложным и сложным для реализации в большинстве современных систем. Однако настройка SELinux имеет огромные преимущества как в обеспечении безопасности, так и в устранении неполадок.
В этом руководстве обсуждаются различные концепции, реализованные в SELinux, и исследуются различные практические методы реализации SELinux.
ПРИМЕЧАНИЕ: Прежде чем мы начнем, хорошо использовать команды в этом руководстве как пользователь root или пользователь в группе sudoers.
Установите пакеты SELinux
Установим различные пакеты SELinux, которые, в свою очередь, помогут работать с политиками SELinux.
Прежде чем приступить к установке пакетов SELinux, хорошо бы проверить, какие из них установлены в текущей системе.
В большинстве установок дистрибутивов REHL некоторые пакеты устанавливаются по умолчанию. Эти пакеты включают:
- setools - этот пакет используется для мониторинга журналов, запросов политик и управления контекстными файлами.
- policycoreutils-python - предоставляет основные утилиты python для управления SELinux
- policycoreutils - этот пакет также предоставляет утилиты для управления SELinux.
- mcstrans - mcstrans предоставляет демон перевода SELinux, который переводит различные уровни в простые форматы, которые можно легко понять.
- setools-console - аналогично setools.
- Selinux-policy - справочник по настройке политики SELinux
- Selinux-policy-target - аналогично SELinux-policy
- Libselinux-utils - утилиты SELinux libselinux, которые помогают управлять SELinux
- Setroubleshoot-server - инструменты для устранения неполадок SELinux
Чтобы проверить, какие пакеты уже установлены в вашей системе, вы можете использовать команду rpm -qa и передать результат в grep для SELinux как:
rpm -qa | grep selinuxlibselinux-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_dirls -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.
Спасибо за чтение.