Перейти к содержанию

Настройка SELinux

Если на хосте с WAF‑нодой включен SELinux, отключать его не требуется: установщик ноды сам добавляет правила SELinux, которые нужны для ее работы. Настраивать SELinux вручную нужно только в случаях, описанных ниже.

Проверьте статус SELinux

Выполните команду:

sestatus

Изучите вывод команды:

  • SELinux status: enabled — SELinux включен.

  • SELinux status: disabled — SELinux отключен, настройка не требуется.

Установите утилиту semanage

Для настройки SELinux установщику нужна утилита semanage. Установите ее до установки ноды:

sudo dnf install policycoreutils-python-utils

На старых ОС (например, CentOS 7) пакет называется policycoreutils-python и устанавливается через yum.

Если SELinux включен, а semanage в системе нет:

Что настраивает установщик

Установщик выполняет следующие действия. Эти же команды нужны, если SELinux настраивается вручную.

  1. Назначает SELinux‑метки файлам ноды:

    sudo semanage fcontext -a -t etc_t "/opt/wallarm/env.list"
    sudo semanage fcontext -a -t lib_t "/opt/wallarm/lib64/ld-linux-x86-64.so.2"
    sudo semanage fcontext -a -t httpd_modules_t "/opt/wallarm/modules(/.*)?"
    sudo semanage fcontext -a -t httpd_cache_t "/opt/wallarm/etc/wallarm(/.*)?"
    sudo semanage fcontext -a -t httpd_cache_t "/opt/wallarm/var/lib/nginx(/.*)?"
    sudo semanage fcontext -a -t httpd_cache_t "/opt/wallarm/var/lib/wallarm-acl(/.*)?"
    sudo restorecon -R /opt/wallarm
    
  2. Разрешает NGINX/Angie подключаться к модулю постаналитики по порту 3313:

    sudo setsebool -P httpd_can_network_relay 1
    sudo semanage port -a -t http_port_t -p tcp 3313
    

Если правило или порт уже добавлены, semanage сообщит об этом. Это не ошибка.

Нестандартный порт постаналитики

Установщик разрешает в SELinux только стандартный порт модуля постаналитики 3313. Если модуль постаналитики установлен на отдельном сервере и слушает другой порт, разрешите этот порт на фильтрующей ноде:

sudo semanage port -a -t http_port_t -p tcp <порт>

Флаг collectd_tcp_network_connect

Флаг collectd_tcp_network_connect для ноды 5.0 включать не нужно. Он действует только на системный collectd, а collectd ноды установлен в /opt/wallarm и под этот флаг не попадает.

Диагностика

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

sudo ausearch -m avc -ts recent

Запреты для процессов NGINX/Angie обычно означают, что файлам ноды не назначены метки. Проверьте метки командой ls -Z /opt/wallarm/etc/wallarm (ожидается тип httpd_cache_t) и при необходимости выполните команды из раздела Что настраивает установщик.

Отключение SELinux

Если SELinux все же нужно выключить, выполните одно из следующих действий:

  • выполните команду setenforce 0: SELinux перейдет в режим permissive до перезагрузки (запреты не применяются, а только записываются в журнал аудита);

  • откройте файл /etc/selinux/config и измените значение переменной SELINUX на disabled: после перезагрузки SELinux будет отключен постоянно.