Настройка политик безопасности SELinux

Если используемый вами дистрибутив Linux оснащен подсистемой безопасности SELinux (Security-Enhanced LinuxLinux с улучшенной безопасностью), то для того, чтобы антивирусные компоненты (сканирующий демон Dr.Web Daemon и консольный сканер Dr.Web Console Scanner) работали корректно после установки компонентов приложения, вам потребуется внести изменения в политики безопасности, используемые SELinux.

Кроме того, при включенном SELinux установка продукта из универсальных пакетов (.run) может окончиться неудачей, поскольку будет заблокирована попытка создания пользователя drweb, от имени которого работают модули Dr.Web для почтовых серверов UNIX.

Перед началом установки рекомендуется проверить режим работы SELinux, для этого выполните команду getenforce. Эта команда выводит на экран текщий режим зашиты:

Permissive – защита активна, но используется разрешающая стратегия: действия, нарушающие политики безопасности, не запрещаются, а только фиксируются в журнале аудита.

Enforced – защита активна, используется запрещающая стратегия: действия, нарушающие политики безопасности, регистрируются в журнале аудита и блокируются.

DisabledSELinux установлен, но неактивен.

Если SELinux работает в режиме Enforced, следует временно (на период установки продукта и последующей настройки политик безопасности) перевести ее в режим Permissive. Для этого выполните команду setenforce 0, которая временно (до первой перезагрузки системы) переведет SELinux в режим Permissive. Чтобы вернуть систему в режим Enforced, следует выполнить команду setenforce 1.

Обратите внимание, что, какой бы режим защиты вы не установили при помощи команды setenforce, после перезагрузки операционной системы SELinux вернется в режим защиты, заданный в ее настройках (обычно файл настроек SELinux находится в каталоге /etc/selinux).

В общем случае, при использовании в системе демона audit, файл журнала аудита располагается в /var/log/audit/audit.log. В противном случае сообщения о запрете операции записываются в общий файл журнала /var/log/messages.

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

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

Чтобы создать необходимые политики:

1.Создайте новый файл с исходным кодом политики SELinux (.te файл). Данный файл определяет ограничения, относящиеся к описываемому модулю. Исходный файл политики может быть создан двумя способами:

1)С помощью утилиты audit2allow. Это наиболее простой способ. Данная утилита генерирует разрешающие правила на основе сообщений об отказе в доступе в файлах системных журналов. Возможно задать автоматический поиск сообщений в файлах журналов или указать путь к файлу журнала вручную.

Внимание!

Утилита audit2allow находится в пакете policycoreutils-python или policycoreutils-devel (для ОС RedHat Enterprise Linux, CentOS, Fedora, в зависимости от версии) или в пакете python-sepolgen (для ОС Debian, Ubuntu).

Пример использования:

# audit2allow -M drweb -i /var/log/audit/audit.log

ИЛИ

# cat /var/log/audit/audit.log | audit2allow -M drweb

В данном примере утилита audit2allow производит поиск сообщений об отказе в доступе в файле audit.log.

# audit2allow -a -M drweb

В данном примере утилита audit2allow ищет сообщения об отказе в доступе в файлах журналов автоматически.

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

В большинстве случаев вам не потребуется вносить изменения в созданный утилитой файл политики. Поэтому рекомендуется сразу переходить к пункту 4 для установки полученного модуля политики drweb.pp. Обратите внимание, что по умолчанию утилита audit2allow в качестве результата своей работы выводит на экран готовый вызов команды semodule. Скопировав его в командную строку и выполнив, вы выполните пункт 4. Перейдите к пункту 2, только если вы хотите внести изменения в политики, автоматически сформированные для компонентов Dr.Web для почтовых серверов UNIX.

2)С помощью утилиты policygentool. Для этого укажите в качестве параметров имя модуля, работу с которым вы хотите настроить, и полный путь к его исполняемому файлу.

Внимание!

Обратите внимание, что утилита policygentool, входящая в состав пакета selinux-policy для ОС RedHat Enterprise Linux и CentOS Linux, может работать некорректно. В таком случае воспользуйтесь утилитой audit2allow.

Пример создания политик при помощи policygentool:

oДля модуля Dr.Web Console Scanner:

# policygentool drweb-scanner /opt/drweb/drweb.real

oДля сканирующего демона Dr.Web Daemon:

# policygentool drweb-daemon /opt/drweb/drwebd.real

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

[module_name].te, [module_name].fc и [module_name].if.

2.При необходимости отредактируйте сгенерированный исходный файл политики [module_name].te, а затем, используя утилиту checkmodule, создайте бинарное представление (.mod файл) исходного файла локальной политики.

Внимание!

Обратите внимание, что для успешной работы этой команды в системе должен быть установлен пакет checkpolicy.

Пример использования:

# checkmodule -M -m -o drweb.mod drweb.te

3.Создайте устанавливаемый модуль политики (.pp файл) с помощью утилиты semodule_package.

Пример:

# semodule_package -o drweb.pp -m drweb.mod

4.Для установки созданного модуля политики воспользуйтесь утилитой semodule.

Пример:

# semodule -i drweb.pp

После перезагрузки операционной системы подсистема безопасности SELinux будет настроена для корректной работы Dr.Web для почтовых серверов UNIX.

Для получения дополнительной информации о принципах работы и настройки SELinux обратитесь к документации по используемому вами дистрибутиву Linux.