3.4 Операционная система с SELinux

Если ваша операционная система защищена при помощи подсистемы контроля SELinux, то при попытке запуска сканирования (а также, возможно, при попытке автоматического старта Демона-Сканера) вы можете получить сообщение об ошибке запуска.

Пример сообщения, возникающего при попытке запуска сканирования в Пульте управления Антивируса Dr.Web для Linux:

Рис. 2. Ошибка Сканера

Чтобы при работающей подсистеме контроля SELinux компоненты Dr.Web Console Scanner, Dr.Web Daemon и Dr.Web SpIDer Guard могли успешно функционировать, необходимо скомпилировать политики для работы с соответствующими модулями drweb-scanner, drweb-daemon и drweb-spider или установить значение переменной ОС allow_execheap равным 1.

 

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

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

Все команды управления политиками безопасности SELinux выполняются с правами суперпользователя (используйте sudo или su).

 

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

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

 

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

 

Пример:

для Dr.Web Console Scanner:

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

для Dr.Web Daemon:

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

для Dr.Web SpIDer Guard:

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

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

o<module_name>.te
o<module_name>.fc
o<module_name>.if
С помощью утилиты audit2allow.
Данная утилита генерирует разрешающие правила на основе сообщений об отказе в доступе в файлах системных журналов. Возможно задать автоматический поиск сообщений в файлах журналов или указать путь к файлу журнала вручную.

 

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

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

 

Пример:

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

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

Пример:

# audit2allow -a -M drweb

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

В обоих случаях в результате работы утилиты создаются два файла: исходный файл политики drweb.te и готовый к установке модуль политики drweb.pp. Если вы хотите внести изменения в разграничения для работы компонентов Антивируса Dr.Web для Linux, отредактируйте файл drweb.te соответствующим образом и перейдите к пункту 2. Если вносить изменения в файл политики не требуется, перейдите к пункту 4 для установки модуля политики drweb.pp.

2.Используя утилиту 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

Также для разрешения работы компонентов Dr.Web Console Scanner, Dr.Web Daemon и Dr.Web SpIDer Guard возможно (но не рекомендуется!) установить значение переменной ОС allow_execheap равной 1. Значение этой переменной ОС позволяет или запрещает исполнение данных в куче (memory heap) для всех приложений, запущенных в неограниченном (unconfined) домене. Чтобы установить значение переменной allow_execheap, выполните команду:

# setsebool -P allow_execheap=1