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

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

Утилита audit2allow собирает информацию из журналов запрещенных операций, а затем генерирует правила разрешения политики SELinux.

Сообщение об отказе и связанный системный вызов записываются в  файл /var/log/audit/audit.log

type=AVC msg=audit(1582800535.799:670): avc: denied { read } for pid=13951 comm="nginx" name="index.html" dev="sda1" ino=263511 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:user_home_t:s0 tclass=file permissive=...

Например, я получаю сообщение об ошибке «Access denied» , и я не могу открыть веб-сайт.

Установка утилиты audit2allow

# dnf install setroubleshoot setools

Запускаем audit2allow

# audit2allow -w -a

type=AVC msg=audit(1582800535.799:670): avc: denied { read } for pid=13951 comm="nginx" name="index.html" dev="sda1" ino=263511 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:user_home_t:s0 tclass=file permissive=1
Was caused by:
Unknown - would be allowed by active policy
Possible mismatch between this policy and the one under which the audit message was generated.
Possible mismatch between current in-memory boolean settings vs. permanent ones.

Просмотрите правило принудительного применения типа, разрешающее запрещенный доступ.

# audit2allow -a
#============= httpd_t ==============
#!!!! This avc is allowed in the current policy
allow httpd_t http_port_t:tcp_socket name_connect;

#!!!! This avc is allowed in the current policy
allow httpd_t user_home_t:file { map open read };

Запустите следующую команду от имени пользователя root для создания произвольного модуля. Опция -M создаёт исходный файл политики (.te) с именем, которое вы обозначите после -M, в вашей текущей рабочей директории.

# audit2allow -a -M mycertwatch
******************** IMPORTANT ***********************
To make this policy package active, execute:

semodule -i mycertwatch.pp

Установите пакет политики.

# semodule -i mycertwatch.pp

Теперь я могу открыть свой сайт.