0

selinux

SELinux

В «двух словах», SELinux расширяет возможности стандартной системы безопасности (на основе прав доступа к файлам). Она позволяет ограничить доступ процессу, который запускается от имени пользователя, у которого прав больше, чем нужно данному процессу. Чтобы понять наглядно принцип работы SELinux, рассмотрим контекст безопасности — сочетание сущности, роли, домена и категории (не обязательно).

Вот как выглядят права SELinux:

<сущность>:<роль>:<домен/тип>:<уровень:категория>

Например: 

unconfined_u:object_r:user_home_t:s0

system_u:system_r:kernel_t:s0

<сущность> или тип пользователя — это субъект, совершающий действие. Чаще всего, процесс или программа.

<роль> — список разрешенных операций или сочетание доменов. Роли нельзя объединять.

<домен/тип> — набор минимальных действий, необходимый для выполнения операции. Термин «Домен» применяется к процессам, «Тип» — к файлам и папкам.

<уровень:категория> — в стандартных политиках SELinux не применяется. Используется для MLS/MCS (Model Multi-Level Security / Multi-Category Security), в которых используются уровни доступа для файлов определенных категорий. Например, s0-s0:c0.c1023 — максимально разрешенный уровень доступа.

Так как же это работает

Принцип довольно прост — необходимо, чтобы процесс и файл, к которому он обращается находились в одном домене/типе.

Чтобы понять было проще, разберем настройки на примерах.

Общие команды

Посмотреть состояние работы SELinux (развернуто):

sestatus

Посмотреть кратко — работает или нет:

getenforce

Отключить SELinux (разово до перезагрузки):

setenforce 0

Включить (разово):

setenforce 1

* если SELinux переведен в состояние disabled (выключена), данная команда не сработает. Необходимо перевести систему безопасности в режим enforcing (строгий режим работы) или permissive (разрешать все, но вести лог).

Подробнее о включении/отключении системы безопасности читайте статью Как отключить SELinux.

Настройка SELinux

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

В системе должен быть установлен пакет policycoreutils-python:

yum install policycoreutils-python

Просмотр текущих настроек контекста безопасности

Для файлов:

ls -Z

* команда покажет все файлы в текущей директории и выведет для каждого контекст безопасности.

Для процессов:

ps -aeZ

* можно использовать grep для выборки определенного процесса или файла.

Вывод каталогов/файлов и применяемых к ним по умолчанию контекстов безопасности:

semanage fcontext -l

Смена контекста безопасности

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

semanage fcontext –add –type NetworkManager_etc_rw_t ‘/etc/NetworkManager/NetworkManager(/.*)?’

* в данном примере мы задали правило, что всем файлам в директории /etc/NetworkManager/NetworkManager будут назначаться SELinux права (тип) NetworkManager_etc_rw_t. Однако нужно понимать, что это не приведет к смене прав для файлов, которые уже находятся в каталоге.

Сбрасываем права на заданные по умолчанию:

restorecon /etc/NetworkManager/NetworkManager

* все права сменятся на те, которые мы указали командой semanage fcontext.

Редактируем права на файл:

chcon -v –type=cron_spool_t /var/spool/cron

* команда задаст права на /var/spool/cron. Также можно использовать рекурсивный запрос, чтобы применить метки ко всех файлам в каталоге. Это делается с добавлением опции -R.

Использование команды chcon нежелательно, так как в случае применения правил по умолчанию, установленные права будут сбрасываться, что приведет к неочевидным проблемам. По возможности, стоит применять команды semanage fcontext и restorecon.

Готовые политики

Разработчики некоторых программных решений предоставляют готовые наборы настроек SELinux для своих программ.

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

getsebool -a

* команда выведет название политик и их статус: включена — on, отключена — off.

Чтобы изменить состояние готовой политики, вводим команду:

setsebool -P <имя политики> <on или off>

Например:

setsebool -P virt_use_samba on

Диагностика проблем

Для поиска проблем в настройке политик сначала необходимо перевести режим работы SELinux в permissive. Для этого открываем файл:

vi /etc/selinux/config

… и отредактировать опцию SELINUX:

SELINUX=permissive

После перезагружаем компьютер:

shutdown -r now

Теперь можно просмотреть лог-файл:

tail -f /var/log/audit/audit.log

Примеры настройки

Чтобы не раздувать статью, примеры выведены в отдельную инструкцию.

SELinux в Ubuntu

В других системах на базе ядра Linux, например, Debian/Ubuntu, настройки SELinux выполняется способами, описанными выше. Единственное отличие — по умолчанию, данная система безопасности не установлена. Для установки необходимо выполнить команду:

apt-get install selinux

 И можно приступать к настройке.

Свежие комментарии

Подписка

Лучшие статьи

Рубрики

Популярное

1 672 views

AppArmor

AppArmor проактивно защищает приложения и ресурсы операционной системы от внутренних и внешних угроз, включая атаки нулевого дня, предотвращая использование как известных, так
2 570 views

Security-Enhanced Linux

Руководство системного администратора по SELinux: 42 ответа на важные вопросы SELinux – это система МАРКИРОВКИ, что означает, что у каждого процесса есть
3 FreeIPA 442 views

FreeIPA

В этой статье будет рассмотрена установка и настройка FreeIPA. Сервер FreeIPA – это система централизованного управления учетными записями пользователей. Аналог Active Directory
Previous Story

Pi-hole

Next Story

AppArmor

Latest from Blog

Поиск и замена URL в MYSQL

Используйте сценарии MySQL для поиска и замены URL-адресов в базе данных Другой способ поиска и замены старых URL-адресов в базе данных – использование сценариев MySQL. Этот метод очень полезен, если у вас

POSTGRESQL 16 + CЕРВЕР 1С X64 И 1С 8.3.24

Для начала, в какой среде будем работать: Наша задача: Предполагается, что Debian на который мы установим как PostgreSQL так и Сервер 1С установлен (Установка по умолчанию). Для начала проверим «локаль»: Как видим

HADOOP

Hабор инструментов для разработки программ и обеспечения среды для их запуска в распределенной среде. Позволяет создавать большие кластеры и упрощает процесс управления ими. Является одним из элементов конвейеров обработки больших данных. Разработан на Java фондом Apache

Обновление mySQL с версии 5.7 до 8.0

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

11 советов по настройке файла wp-config.php

Скорость: Отключите сохраненные версии… Сейчас! Функция сохранения версий записей включена по умолчанию, но может привести к значительному “раздуванию” базы данных. Сохраненные версии существуют для того, чтобы вы могли откатиться к предыдущей версии записи,
Go toTop

Don't Miss

FreeIPA

FreeIPA

В этой статье будет рассмотрена установка и настройка FreeIPA. Сервер

AppArmor

AppArmor проактивно защищает приложения и ресурсы операционной системы от внутренних