Налаштування політик безпеки для SELinux

Якщо використовуваний вами дистрибутив Linux оснащений підсистемою безпеки SELinux (Security-Enhanced Linux — Linux з поліпшеною безпекою), то для того, щоб службові компоненти Dr.Web для Linux (такі, як скануюче ядро) працювали коректно після встановлення компонентів програми, вам, можливо, буде необхідно внести змінення в політики безпеки, що використовуються SELinux.

1. Проблеми при встановленні універсального пакета

При включеному SELinux встановлення Dr.Web для Linux в виді універсального пакета з інсталяційного файла (.run) може завершитися невдало, оскільки буде заблокована спроба створення в системі спеціального користувача drweb, з повноваженнями якого працюють копоненти Dr.Web для Linux.

Якщо спроба встановлення Dr.Web для Linux з інсталяційного файла (.run) була перервана через неможливість створення користувача drweb, перевірте режим роботи SELinux, для чого виконайте команду getenforce. Ця команда виводить на екран поточний режим захисту:

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

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

Disabled — SELinux встановлений, але неактивний.

Якщо SELinux працює в режимі Enforced, тимчасово (на період встановлення) переведіть її в режим Permissive. Для цього виконайте команду

# setenforce 0

яка тимчасово (до першого перезавантаження системи) переведе SELinux в режим Permissive.

Який режим захисту ви б не встановили за допомогою команди setenforce, після перезавантаження операційної системи SELinux повернеться в режим захисту, заданий в її налаштуваннях (зазвичай файл налаштувань SELinux знаходиться в каталозі /etc/selinux).

Після успішного встановлення Dr.Web для Linux з інсталяційного файла, але до його запуску та активації поверніть режим Enforced, для чого виконайте команду:

# setenforce 1

2. Проблеми функціонування Dr.Web для Linux

В деяких випадках при працюючому SELinux окремі допоміжні компоненти Dr.Web для Linux (такі, як drweb-se та drweb-filecheck, що використовуються Сканером і SpIDer Guard) не зможуть запуститися, внаслідок чого сканування об'єктів та моніторинг файлової системи унеможливляться. Ознакою того, що ці допоміжні модулі не можуть бути запущені, є поява повідомлень про помилки 119 та 120 в головному вікні Dr.Web для Linux та в системному журналі syslog (зазвичай розташований в каталозі /var/log/).

При спрацюванні системи безпеки SELinux інформація про відмови фіксується також в системному журналі аудиту. Загалом, при використанні в системі демона audit, журнал аудиту розташовується в файлі /var/log/audit/audit.log. В іншому випадку повідомлення про заборону операції записуються в загальний файл журналу /var/log/messages або /var/log/syslog.

Якщо встановлено, що допоміжні модулі не функціонують через те, що вони блокуються SELinux, скомпілюйте для них спеціальні політики безпеки.

В деяких дистрибутивах Linux вказані нижче утиліти можуть бути за замовчуванням не встановлені. В цьому випадку вам, можливо, знадобиться додатково встановити пакети, що їх містять.

Створення політик безпеки SELinux:

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

1)За допомогою утиліти audit2allow. Це найпростіший спосіб, оскільки дана утиліта генерує дозвільні правила на основі повідомлень по відмову в доступі в файлах системних журналів. Можна задати автоматичний пошук повідомлень в файлах журналів або вказати шлях до файла журналу вручну.

Зверніть увагу, що цей спосіб можна використовувати, тільки коли в системному журналі аудиту вже зареєстровані інциденти порушення політик безпеки SELinux компонентами Dr.Web для Linux. Якщо це не так, або дочекайтеся таких інцидентів у процесі роботи продукту Dr.Web для Linux, або створіть дозвільні політики примусово, скориставшись утилітою policygentool (див. нижче).

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

Приклад використання audit2allow:

# grep drweb-se.real /var/log/audit/audit.log | audit2allow -M drweb-se

В цьому прикладі утиліта audit2allow проводить пошук в файлі audit.log повідомлень про відмову в доступі для модуля drweb-se.

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

Якщо потрібні інциденти в системному журналі не виявлені, утиліта поверне повідомлення про помилку.

В більшості випадків вам не потрібно вносити змінення в файл політики, створений утилітою audit2allow. Тому рекомендується одразу переходити до пункту 4 для встановлення отриманого модуля політики drweb-se.pp. Зверніть увагу, що за замовчуванням утиліта audit2allow як результат своєї роботи виводить на екран готовий виклик команди semodule. Скопіювавши його в командний рядок та виконавши, ви виконайте пункт 4. Перейдіть до пункту 2, тільки якщо ви хочете внести змінення в політики, автоматично сформовані для компонентів Dr.Web для Linux.

2)За допомогою утиліти policygentool. Для цього вкажіть в якості параметрів ім'я модуля, роботу з яким ви хочете налаштувати, та повний шлях до його виконуваного файла.

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

Приклад створення політик за допомогою policygentool:

Для drweb-se:

# policygentool drweb-se /opt/drweb.com/bin/drweb-se.real

Для drweb-filecheck:

# policygentool drweb-filecheck /opt/drweb.com/bin/drweb-filecheck.real

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

<module_name>.te, <module_name>.fc та <module_name>.if.

2.За необхідності відредагуйте згенерований вихідний файл політики <module_name>.te, а потім, використовуючи утиліту checkmodule, створіть бінарне представлення (файл з розширенням .mod) вихідного файла локальної політики.

Зверніть увагу, що для успішної роботи цієї команди в системі має бути встановлений пакет checkpolicy.

Приклад використання:

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

3.Створіть встановлюваний модуль політики (файл з розширенням .pp) за допомогою утиліти semodule_package.

Приклад:

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

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

Приклад:

# semodule -i drweb-se.pp

Щоб отримати додаткову інформацію про принципи роботи та налаштування SELinux, зверніться до документації з використовуваного вами дистрибутиву Linux.