В данной статье рассмотрены полезные примеры по настройке системы безопасности SELinux, которые могут понадобиться для корректной работы различных приложений.
Применение политик
Поиск причин блокировок со стороны SELinux
Samba
Rsyslog
Keepalived
PostgreSQL
«>NGINX
Использование политик
Для применения некоторых политик в 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

Добавить комментарий