img

Как защитить серверы Linux с помощью SELinux?

В наше время безопасность – это крайне важный компонент разработки программного обеспечения и приложения, а также управления серверами. 

Если вы пользуетесь Linux, то вам повезло! У него есть отличная функция под названием SELinux, которая может позволить вам добавить дополнительный уровень безопасности.

Что такое SELinux?

SELinux был разработан АНБ (Агентством национальной безопасности). Цель его создания – выполнение правительственных задач в области обеспечения безопасности.

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

Доступ и полномочия, как правило, наследуются с точки зрения групп пользователей. Но есть такие источники (например, веб-серверы или некие процессы), которым необходим доступ к сетевым портам и процессам на уровне ядра. Как правило, они порождаются привилегированным пользователем или пользователями с доступом высшего уровня. С помощью SELinux вы можете ограничить доступ к этим особым процессам. 

Как работать с SELinux?

SELinux по умолчанию является частью большинства дистрибутивов Linux. В этой статье я буду работать с Fedora.

Только учтите, что для того, чтобы работать с SELinux, вам потребуются права доступа привилегированного (root) или суперпользователя (sudo).

Файл конфигурации SELinux располагается здесь: /etc/sysconfig/selinux. Давайте взглянем на его содержимое:

Режимы SELinux

Файл конфигурации SELinux

Внутри файла конфигурации вы можете выбрать любой из режимов:

  1. Enforced – этот режим включен по умолчанию, фильтры завязаны на определенных политиках.
  2. Permissive – политики не используются, но все попытки получения доступа записываются в лог-файлы. Этот режим полезен при устранении неисправностей.
  3. Disabled – SELinux полностью отключен. Лучше всего такой режим не выбирать, так как ваша система будет под угрозой. Кроме того, возврат к режиму Enforced может создать некоторые несоответствия.

Вы можете проверить текущий режим SELinux с помощью следующих команд:

  1. getenforce
  2. sestatus

Если вам нужно сменить режим только для текущего сеанса, то вам понадобятся следующие команды:

  1. sudo setenforce 0 – устанавливает режим Permissive для текущего сеанса
  2. sudo setenforce 1 – устанавливает режим Enforced для текущего сеанса

Политики SELinux

В SELinux доступ к пользователям определяют политики. Пользователи устанавливают доступ к ролям, а роли – доступ к доменам. А домены, в свою очередь, предоставляют доступ к определенным файлам.

Политики SELinux

Вы можете изменить доступы. Для этого определены логические значения (переключатели).

Как управлять политиками SELinux с помощью логических переключателей

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

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

Для начала выведем список всех переключателей, характерных для httpdgetsebool -a | grep httpd.

Здесь флаг -a перечисляет все логические переключатели.

image-80

Список логических переключателей

Теперь давайте выберем и изменим переключатель, который мы выделили желтым цветом в коде выше:

getsebool httpd_can_connect_ftp

Установим значение на «разрешено» (on).

setsebool -P httpd_can_connect_ftp 1

Вот что происходит в команде выше:

  • флаг -P нужен для того, что изменение сохранилось даже после перезагрузки
  • 1 включает логический переключатель

Теперь, когда вы запросите список снова, значение будет установлено на «разрешено».

image-81

Значение логического переключателя – «on»

Структура SELinux

Ниже приведена диаграмма, на которой показано, как SELinux проверяет попытку источника получить доступ:

Устранение неисправностей и журналы SELinux

SELinux создает очень подробные журналы для каждой попытки получения доступа. Журналы можно найти здесь: /var/log/audit.

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

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

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

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

Но если вам действительно нужно отключить SELinux, то выполните следующие шаги:

  1. Измените режим с Enforced на Permissive.
  2. Измените режим с Permissive на Disabled.

Заключение

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

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

Ссылка
скопирована
Системное администрирование
Скидка 10%
Администратор Linux
Стань Linux администратором и сделай весомый шаг в сторону карьеры в DevOps. Самые важные знания от сертифицированного и практикующего тренера с 20 летним стажем
Получи бесплатный
вводный урок!
Пожалуйста, укажите корректный e-mail
отправили вводный урок на твой e-mail!
Получи все материалы в telegram и ускорь обучение!
img
Еще по теме:
img
  Введение Абсолютные и относительные пути определяют расположение файла или каталога в файловой системе. Это набор инструкций д
img
  Введение Файлы конфигурации Linux определяют поведение и функциональное наполнение операционной системы. Файлы конфигурации –
img
  Введение На протяжении десятков лет Bash (Bourne Again SHell) была основным интерфейсом в Unix-подобных системах. Это унив
img
  Введение Сетевые команды – обязательные инструменты для любого сетевого или системного администратора. С помощью этих кома
img
  Введение Загрузчик – это неотъемлемый элемент операционный системы, который помогает выполнять инициализацию аппаратного о
img
  Обычные так называемые революционные подходы к разработке программного обеспечения противоречат требованиям современных облачн
Комментарии
ОСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59