В Linux системах существует такой термин, как SELinux или Security Enhanced Linux. Данное понятие – это система контроля доступа, она была разработана как способ защиты. Доступна в большинстве дистрибутивов Linux, потому давайте рассмотрим основный принципы функционирования на базе Ubuntu 20.04.
Основы SELinux: назначение и принципы работы
С SELinux также внедряется MAC или Mandatory Access Control. Данная модель необходима для разграничения контроля доступа. MAC функционирует на базе модели избирательного управления или DAC (Discretionary Access Control).
Модель DAC работает по принципу списков, в которых обозначаются объекты доступа, к примеру группы или пользователи. Такого рода объекты могут иметь различные полномочия, такие как выполнение, чтение, или запись. Кроме того, некоторые доступы можно организовать таким образом чтобы суперпользователь не имел суперпривилегий по отношению ко всем пользовательским объектам.
С помощью SELinux можно настраивать систему контроля доступа, где есть возможность определения степени влияния. Таким образом можно предотвратить возможность некоторых угроз системе.
Установка SELinux в Ubuntu 20.04
В данном руководстве, мы будет использовать VPS, где уже выполнены первоначальные настройки. Авторизация производиться с помощью учетной записи, которая не есть суперпользователем, но у которой есть sudo привилегии. Кроме того, для лучшей безопасности сервера рекомендуется использование брандмауэра.
Для начала, перед установкой SELinux, нужно произвести обновление пакетов, следующим образом:
$ sudo apt update
Следующим шагом будет инсталляция SELinux:
sudo apt install policycoreutils selinux-utils selinux-basics
Часто спрашивают: Настройка FTP-сервера на Ubuntu
Проверка текущего состояния SELinux в системе
После завершения процесса установки, SELinux в системе будет находиться в выключенном состоянии. Для проверки текущего статуса нужно использовать следующую команду:
sestatus
Для активации нужно использовать команду:
sudo selinux-activate
Следующим шагом будет перезагрузка сервера, после чего SELinux будет доступен во включенном состоянии.
Разбор режимов работы SELinux и их применение
Когда SELinux запущен есть доступ к 2 состояниям – enforcing и permissive. Для проверки активного на данный момент режима нужно использовать:
getenforce
Если система функционирует в режиме permissive, нет возможности блокировки доступа, если объекты не имеют разрешений с политикой SELinux. Таким образом, все отказы в доступе будут фиксироваться в /var/log/audit/audit.log.
Если говорить о enforcing, то данный режим применяет набор политик SELinux, а доступ к другим процессам запрещен. Для ознакомления с загруженным политиками нужно использовать:
$ sudo semodule -l
В файле config будут находится основные настройки, и с помощью этого же файла можно полностью отключить SELinux или добавить нужные политики безопасности.
Читайте также: 6 лучших дистрибутивов Linux для VPS
В файле /etc/selinux/config, будет указан используемый режим, или же будет обозначено что система отключена. Для переключения между режимами нужно использовать следующую команду:
setenforce
Для активации enforcing используйте:
$ sudo setenforce 1
Чтобы активировать permissive используйте:
$ sudo setenforce 0
Контексты безопасности SELinux: структура и значение
Все объекты в системы будут маркироваться SELinux, и данную маркировку называют контекстом. В операционной системе, все процессы имеют необходимые метки, такие как тип, пользователь, и роль. Роли контролируются с помощью политики SELinux. У каждой роли есть некоторые ограничения и подобные ограничения также определяются политикой.
Для просмотра контекста определенной директории, нужно использовать команду ls -z и после этого добавить нужный каталог.
После использования команды, вы сможете просмотреть количество объектов в директории и нужный контекст.
Рекомендации по использованию
Для просмотра полного списка логических параметров используйте команду: getsebool -a. Чтобы минимизировать достаточно обширный список, к данной команде можно добавить фильтр grep.
Для изменения значения переменной нужно использовать setsebool. Чтобы сохранить новое значение не забудьте использовать опцию -P.