Андрей Смирнов
Время чтения: ~8 мин.
Просмотров: 7

Настройка SELinux

Security-Enhanced Linux (SELinux) — это новый метод контроля доступа в Linux на основе модуля ядра Linux Security (LSM). SELinux включен по умолчанию во многих дистрибутивах на основе Red Hat, использующих пакетную базу rpm, например, Fedora, CentOS, OpenSUSE и т д.

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

Основы SELinux

SELinux представляет собой систему маркировки, каждый процесс имеет метку. Каждый файл, каталог или даже пользователь в системе имеет метку. Даже портам и устройствам и именам хостов в системе присвоены метки. SELinux определяет правила доступа процесса к объектам с определенными метками. Это и называется политикой. За соблюдением правил следит ядро. Иногда это еще называется обязательный контроль доступа (Mandatory Access Control, MAC)

Владелец файла не имеет полной свободы действий над атрибутами безопасности. Стандартные атрибуты контроля доступа, такие как группа и владелец ничего не значат для SELinux. Полностью все управляется метками. Значения атрибутов могут быть установлены и без прав root, но на это нужно иметь специальные полномочия SELinux.

Теперь поговорим немного о политиках. Мы определяем метку для процессов определенного типа, а также на объекты файловой системы тоже определенного типа. Вот представьте, себе систему, в которой объекты (процессы) это кошки и собаки. Это типы процессов. И у нас есть объекты, к которым они хотят иметь доступ — еда. Но еда у них разная еда_котов и еда_собак. Нужно чтобы объекты имели доступ только к своей еде.

У собаки есть разрешение есть свою пищу, а у кошки — свою. В политиках SELinux это будет выглядеть вот так:

разрешить кошке корм_кошек есть

разрешить собаке корм_собак есть

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

Допустим, процесс Apache имеет метку httpd_t, а файлы, к которым у Apache должен быть доступ мы назвали httpd_sys_content. Также у нас есть данные кредитных карт, которые хранятся в базе данных mysql. Если хакер взломает процесс Apache и у него будет root доступ, то он все равно не сможет получить доступ к файлам от mysql.

В системе довольно часто встречаются процессы с одинаковыми типами. Чтобы это обойти, и настроить полномочия для разных процессов одного типа была придумана система категорий безопасности Multi Category Security (MCS). Мы можем добавить к объекту категорию, и настраивать полномочия уже в зависимости от этой категории.

SELinux может вызвать у системных администраторов большое количество проблем, многие ее просто отключают, таким образом, решив проблему и уменьшив безопасность. Как уже говорилось выше, по умолчанию SELinux блокирует все и вся. Это подходит под описание строгой политики. Но чтобы облегчить системным администраторам работу, были разработаны другие стандартные политики. Во многих дистрибутивах используется целевая политика (targeted), она охватывает около 200 сетевых служб и процессов, все же остальные программы запускаются и работают свободно, к ним никакие модели SELinux не применяются.

SELinux может работать в трех режимах — отключен, система полностью отключена и не работает, режим ограничений  Enforcing — программа активирована и блокирует все не соответствующие политикам действия и третий режим Permissive — только фиксировать нарушения.

Теория в общих чертах рассмотрена. А теперь перейдем к практической части.

Настройка SELinux

Система SELinux предустановлена вместе с дистрибутивом в системах ,основанных на Red Hat, скорее всего, там уже все компоненты установлены, но в Ubuntu и других подобных дистрибутивах придется все делать самому. Для установки SELInux в Ubuntu выполните команду:

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

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

SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: ubuntu Current mode: permissive Mode from config file: permissive Policy MLS status: enabled Policy deny_unknown status: allowed Max kernel policy version: 29

Здесь мы видим, что система включена SELinux status: enabled, Текущий режим Current mode — permissive, то есть мы будем только получать сообщения о нарушениях в логе. Используемая сейчас политика — Ubuntu.

Сейчас давайте включим активный режим, для этого выполните команду:

Отключить активный режим можно передав в ту же команду 0:

Посмотреть используемый сейчас режим тоже можно подобной командой:

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

Этот параметр означает режим работы SELinux, вы можете указать здесь один из трех параметров enforce, permissive и disabled

SELINUX=permissive

Используйте disabled чтобы полностью отключить SELinux или любой другой, чтобы включить SELinux обратно. Этот режим будет применяться по умолчанию при старте системы.

Настройка SELinux политик выполняется тоже в этом файле. За политику отвечает параметр SELINUXTYPE:

SELINUXTYPE=ubuntu

Вы можете ссылаться на любую политику, расположенную в каталоге /etc/selinux.

Могут использоваться три основные политики:

  • targeted (или здесь ubuntu) защищает основные системные сервисы, например, веб-сервер, DHCP, DNS, но не трогает все остальные программы.
  • minimum — это политика для экспериментов, основана на targeted, но ее правила не включены по умолчанию, вы можете включать и отключать когда нужно также часто используется на мобильных устройствах.
  • strict — самая строгая политика, управляет не только сетевыми службами, но и программами пользователя.
  • mls — содержит не только правила, но и различные уровни безопасности. Она позволяет реализовать многоуровневую систему безопасности на основе SELinux.

Политики в Ubuntu необходимо устанавливать отдельно, для targeted и strict установите пакет:

Для применения политики необходимо перезагрузить компьютер, и желательно чтобы SELinux во время этой перезагрузки был в режиме аудита (permissive). Также, чтобы система обновила все метки в файловой системе, возможно, придется создать пустой файл в корне:

Хотите почувствовать всю мощь и заодно недостатки SELinux? Установите значение  SELINUXTYPE в strict, и перезагрузите систему:

SELINUXTYPE=default

Только смотрите, чтобы SELinux работал в режиме permissive, иначе быть беде. Политика default реализует и targeted и strict, чтобы получить strict необходимо просто выгрузить модуль unconfined:

Затем запускаем активный режим:

sudo setenforce 1

Ну а теперь можете попробовать почитать системные журналы, или включить обратно режим аудита. Ничего не работает? Правильно SELinux блокирует любые неразрешенные действия. У меня окно терминала сразу было закрыто и я больше не мог управлять своей системой. Чтобы получить обратно управление над своим компьютером его необходимо перезагрузить.

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

SELinux — это относительно новая подсистема ядра, разработанная агентством национальной безопасности США для улучшения безопасности операционных систем на базе ядра Linux. SELinux создаёт свои атрибуты контроля доступа для файлов и папок, а также позволяет указывать, каким программам можно иметь к ним доступ.

Как отключить SELinux в CentOS

SELinux может работать в нескольких режимах:

  • Enforcing — система безопасности запущена и работает, все попытки доступа к файлам, для которых не созданы разрешающие правила, блокируются;
  • Permissive — система запущена и работает, но при попытке несанкционированного доступа к файлам, доступ не блокируется, а всего лишь заносится об этом запись в системный журнал. Это режим для отладки правил;
  • Disabled — система полностью отключена и не работает.

Также есть несколько политик работы системы безопасности. По умолчанию SELinux в CentOS включена и работает согласно политике targeted. Это значит, что SELinux будет управлять только теми приложениями, для которых созданы правила. Все приложения, для которых правила не созданы, будут работать без ограничений. Этот принцип чем-то похож на работу AppArrmor. Существует также политика strict, это самая строгая политика, которая запрещает доступ ко всему, что не разрешено. Прочитать подробнее обо всём этом можно в статье настройка SELinux.

Сначала необходимо посмотреть текущее состояние SELinux в системе:

Snimok-ekrana-ot-2018-12-03-19-46-18-1024x576.png

Здесь мы видим, что SELinux включён (enforcing) и использует политику targeted.

Если у вас используется политика strict, и вы не хотите полностью отключать SELinux, но хотите, чтобы система трогала ваши программы, то можно переключить политику на targeted. Для этого откройте файл /etc/selinux/config и в строке SELINUXTYPE установите значение targeted:

SELINUXTYPE=targeted

Snimok-ekrana-ot-2018-12-03-20-10-37-1024x576.png

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

Snimok-ekrana-ot-2018-12-03-20-23-59-1024x576.png

Но она будет действовать только до перезагрузки. Чтобы изменение действовало всегда, нужно изменить режим в конфигурационном файле /etc/selinux/config:

SELINUX=permissive

Snimok-ekrana-ot-2018-12-03-20-24-34-1024x576.png

Чтобы отключить SELinux CentOS 7 полностью, откройте файл /etc/selinux/config и замените значение enforcing в параметре SELinux на disabled:

SELINUX=enforcing

Snimok-ekrana-ot-2018-12-03-20-24-47-1024x576.png

Теперь можно перезагружать компьютер, и SELinux будет отключена. Также можно отключить SELinux через Grub, это может быть полезно, например, если вы не можете загрузить систему из-за неправильно настроенного SELinux. Для этого достаточно добавить параметр ядра selinux=0.

Откройте конфигурационный файл grub — /boot/grub/grub.cfg и найдите там строчку запуска ядра, она начинается с linux… В её конец нужно добавить параметр:

linux /boot/vmlinuz-3.10.0-862.el7.x86_64 root=UUID=33a6fe0e-5576-4ff9-bd7f-7d451d670cab ro crashkernel=auto rhgb quiet LANG=ru_RU.UTF-8 selinux=0

Snimok-ekrana-ot-2018-12-03-20-26-50-1024x576.png

Этот способ также удобен тем, что вы можете нажать кнопку E в меню Grub и внести все изменения на ходу перед загрузкой системы.

Выводы

В этой небольшой статье мы разобрали, как отключить SELinux в CentOS 7. Это система безопасности, поэтому подумайте перед тем, как сделать это. Отключение SELinux CentOS 7 — это последний вариант и самое простое решение. Но, возможно, лучше всё настроить, чтобы сервер был более безопасным.

Используемые источники:

  • https://losst.ru/nastrojka-selinux
  • https://losst.ru/kak-otklyuchit-selinux-v-centos-7

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации