Отредактировано 3 Несколько недель назад от ExtremeHow Редакционная команда
FedoraБезопасностьSELinuxОперационная системаБрандмауэрКонфигурацияСетьНовичкиОпытные пользователиКомпьютеры
Перевод обновлен 3 Несколько недель назад
Security-Enhanced Linux (SELinux) — это архитектура безопасности, интегрированная в ядро Linux, которая предоставляет универсальный механизм обязательного контроля доступа (MAC). Fedora, являясь одним из самых популярных дистрибутивов Linux, использует SELinux для повышения безопасности за счет контроля доступа к программам и файлам. В этом подробном руководстве мы рассмотрим, как защитить системы Fedora с помощью SELinux, как управлять его политиками, как обрабатывать распространенные сценарии и как максимально использовать его преимущества в области безопасности.
SELinux работает в трех различных режимах, каждый из которых обеспечивает разные уровни безопасности. Давайте рассмотрим их:
Прежде чем вносить какие-либо изменения, важно проверить текущий статус SELinux в вашей системе Fedora. Это можно сделать с помощью следующей команды в терминале:
$ sestatus
Эта команда предоставит информацию о текущем режиме, версии политики и других деталях состояния SELinux. Понимание того, находится ли ваша система в режиме принуждения, разрешения или отключения, поможет вам в дальнейшем.
Переключение между режимами SELinux просто, но требует прав администратора (root). Чтобы изменить режимы, отредактируйте файл, расположенный по адресу /etc/selinux/config
, и обновите строку SELINUX=
на enforcing
, permissive
или disabled
.
# Этот файл управляет состоянием SELinux в системе.
# SELINUX= может принимать одно из трех значений:
# enforcing - политика безопасности SELinux применяется.
# permissive - SELinux выводит предупреждения вместо применения.
# disabled - SELinux полностью отключен.
SELINUX=enforcing
# SELINUXTYPE= может принимать одно из двух значений:
# targeted - защищаются целевые процессы,
# minimum - модификация целевой политики.
# MLS - защита многоуровневой безопасности.
SELINUXTYPE=targeted
После внесения изменений перезагрузите систему, чтобы применить их. Вы также можете использовать команду setenforce
, чтобы временно переключаться между режимами принуждения и разрешения без перезагрузки:
# Установить SELinux в режим принуждения
$ sudo setenforce 1
# Установить SELinux в режим разрешения
$ sudo setenforce 0
SELinux использует набор политик для определения контроля доступа. Два основных типа политик — это целевая и многоуровневая безопасность (MLS). Fedora, как правило, использует целевую политику, которая обеспечивает целевую безопасность для ключевых процессов:
Булевые переменные SELinux — это переключатели, которые включают или отключают определенные правила политики SELinux без изменения самой политики. Это позволяет добиться большей гибкости за счет временных изменений. Чтобы просмотреть все доступные булевые переменные, используйте команду:
$ semanage boolean -l
Каждая булевая переменная имеет описание, текущее значение и значение по умолчанию. Чтобы изменить значение булевой переменной, используйте команду setsebool
:
# Включить булеву переменную
$ sudo setsebool httpd_enable_homedirs on
# Отключить булеву переменную
$ sudo setsebool httpd_enable_homedirs off
Чтобы гарантировать сохранение изменений после перезагрузки, добавьте опцию -P
:
$ sudo setsebool -P httpd_enable_homedirs on
Глобальная безопасность в SELinux вращается вокруг контекстов и меток. Файлы, каталоги и процессы в Fedora имеют уникальный контекст, состоящий из пользователя, роли, типа и уровня. Важно правильно понимать контексты и маркировать их, чтобы поддерживать безопасность SELinux. Вы можете посмотреть контекст файлов с помощью команды ls -Z
:
$ ls -Z /var/www/html
Если вам нужно изменить привязку файла, используйте команду chcon
:
$ sudo chcon -t httpd_sys_content_t /var/www/html/index.html
Важно отметить, что ручные изменения контекстов с помощью chcon
могут быть отменены в ходе операций переназначения. Для постоянных изменений используйте политики и команду semanage fcontext
.
Работа с SELinux иногда может приводить к ошибкам разрешений. Это часто является признаком правильного применения правил политики, но может нарушать рабочий процесс, если это неожиданный результат. Вот как можно решить проблемы с разрешениями SELinux:
/var/log/audit/audit.log
. Вы можете использовать ausearch
для анализа:$ ausearch -m avc -ts recent
sealert
из средства устранения неполадок SELinux для подробной диагностики:$ sudo sealert -a /var/log/audit/audit.log
Хотя политики по умолчанию в Fedora охватывают множество сценариев, продвинутые пользователи могут создавать пользовательские политики SELinux для уникальных случаев использования. Для этого вы напишете файлы политик (часто с расширением .te
) и скомпилируете их с помощью инструментов checkmodule
и semodule_package
:
# Запишите вашу политику в файле .te
module mycustom 1.0;
require {
type user_home_t;
type httpd_t;
class file { read write };
}
# Разрешить процессу httpd читать и записывать файлы домашнего каталога пользователя
allow httpd_t user_home_t:file { read write };
Далее, скомпилируйте и установите ваш пользовательский модуль:
$ checkmodule -M -m -o mycustom.mod mycustom.te
$ semodule_package -o mycustom.pp -m mycustom.mod
$ semodule -i mycustom.pp
Если контекст файла или директории неверен, это может вызвать проблемы с доступом. Вы можете использовать команду restorecon
для восстановления контекста SELinux по умолчанию:
$ sudo restorecon -Rv /path/to/directory
Эта команда рекурсивно сбрасывает контекст, чтобы он соответствовал политике по умолчанию для этого пути.
SELinux добавляет важный уровень безопасности в любую систему Fedora. Независимо от того, обеспечиваете ли вы защиту вашей домашней установки или управляете безопасностью на уровне организации, понимание возможностей SELinux имеет первостепенное значение. Ознакомившись с режимами, политиками, булевыми переменными, контекстами и созданием политик SELinux, вы сможете использовать этот мощный инструмент безопасности для обеспечения надежной защиты вашей системы Fedora от атак и несанкционированного доступа.
Если вы найдете что-то неправильное в содержании статьи, вы можете