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

Что такое SELinux , Samba .

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

Использование политик

Для применения некоторых политик в Rocky Linux / CentOS, необходимо установить следующие пакеты:

dnf install policycoreutils setroubleshoot

Диагностика

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

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

setenforce 0

Проверяем приложение. Если оно начало работать корректно, то дело в политиках безопасности. Обратно включаем:

setenforce 1

Чтобы понять, что именно не понравилось SELinux можно запустить просмотр лога:

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

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

Также мы можем воспользоваться утилитой:

audit2allow -b -r

Она показывает готовые политики на основе заблокированных приложений.

Samba

Политики

Список готовых политик и текущее значение смотрим командой:

getsebool -a | grep samba

Задаем политику, например, разрешить шары доманших каталого:

setsebool -P samba_enable_home_dirs=1

Ручная настройка

Посмотреть текущие настройки для samba:

semanage fcontext -l | grep samba

Задать разрешение:

semanage fcontext -a -t samba_share_t «/share/samba(/.*)?»

restorecon -R -v /share/samba

* в данном примере политика применяется к каталогу /share/samba и всем входящим папкам и файлам.

Rsyslog

Список для разрешенных портов смотрим командой:

semanage port -l | grep syslog

Если мы хотим использовать rsyslog для соединений по TCP на порту 514 вводим:

semanage port -m -t syslogd_port_t -p tcp 514

Keepalived

Keepalived может использовать notify для запуска своих скриптов. Данный скрипт должен иметь контекст безопасности keepalived_unconfined_script_exec_t .

Предположим, что наш скрипт находится по пути /etc/keepalived/notify-script.sh . Тогда команды будут такие:

semanage fcontext -a -t keepalived_unconfined_script_exec_t /etc/keepalived/notify-script.sh

restorecon -R -v /etc/keepalived/notify-script.sh

PostgreSQL

При смене каталога на нестандартный нам понадобится сменить контекст на postgresql_db_t . Это делается командами:

semanage fcontext -a -t postgresql_db_t «/data/pgsql(/.*)?»

restorecon -Rv /data/pgsql

* где /data/pgsql — предполагаемый каталог для данных postgresql.

Если этого окажется недостаточно, на уровень выше подаем команду:

chcon -Rt postgresql_db_t /data

NGINX

1) При необходимости загружать файлы через nginx, каталог должен иметь контекст httpd_sys_rw_content_t . Задаем политику командой:

semanage fcontext -a -t httpd_sys_rw_content_t «/opt/upload(/.*)?»

* где /opt/upload — корневой каталог, в который будет выполняться загрузка файлов.

Применяем политику на каталог:

restorecon -Rv /opt/upload

2) Чтобы nginx мог работать в режиме обратного прокси, применяем политику:

setsebool httpd_can_network_connect 1 -P

EnglishRussianUkrainian