SELinux против AppArmor: в чем различия и что выбрать?

Selinux Vs Apparmor

SELinux (сокращенно от Security Enhanced Linux) — это модуль безопасности ядра Linux, который используется для повышения безопасности в дистрибутивах Linux, укрепляя доступ к файлам и процессам. Другим подобным модулем безопасности ядра Linux, используемым для этой цели, является AppArmor. Существует большой интерес к этим двум модулям из-за их перекрывающихся ролей в контроле доступа для операционных систем Linux. Эта статья охватывает различия между SELinux и AppArmor, позволяя пользователям определить, какой из этих модулей лучше подходит для их нужд через сравнение функций и удобства использования.

Содержание

  • Что такое SELinux?
  • Операции и команды SELinux
  • Что такое AppArmor?
  • Удобство использования между SELinux и AppArmor
  • Часто задаваемые вопросы

Также читайте: 5 лучших дистрибутивов Linux-Libre для лучшей безопасности

Что такое SELinux?

Защита серверов с SELinux устраняет зависимость от доступа в стиле DAC, основанного на фактических пользователях системы и ролях. Вместо этого он вводит систему контекста из трех строк для каждого процесса или системного пользователя. Эти три строки, а именно имя пользователя, роль и домен, позволяют более гибко управлять доступом к системе.

Процесс может быть допущен в определенный домен только через конфигурацию политики в SELinux. Единственное исключение — это случай, когда процесс запускается в явно определенном контексте с помощью команды runcon. Однако, если для такого процесса уже существуют конфликтующие политики в конфигурации, SELinux может отказать в переходе в другой контекст. Это обеспечивает работу SELinux на принципе отказа по умолчанию. Любой процесс или пользователь должен иметь явную конфигурацию доступа к файлу или системному ресурсу до того, как получить к нему доступ.

Операции и команды SELinux

В качестве расширения общих утилит команд в терминале SELinux предоставляет переключатель -Z, который позволяет отображать контекст безопасности файлов и процессов. Команды, такие как ps и ls, получают выгоду от этого переключателя для быстрого устранения неполадок или выявления ошибок в конфигурации. Ниже показан снимок экрана команды ls.

ls-Z

Selinux Vs Apparmor 1 1

Первая часть каждой строки вывода — это домен, вторая — тип объекта, а третья — имя пользователя в конфигурации SELinux. Таким образом, SELinux может предоставить полный контроль над доступом к каждому файлу и процессу. Для манипуляции контекстом файлов и директорий используются следующие команды.

КомандаИспользование
chcon -tИзменить контекст целевого файла
chcon -RИзменить контекст целевой директории (это изменение рекурсивное)
restorecon -vВосстановить контекст файла по умолчанию
restorecon -v -RВосстановить контекст директории по умолчанию (это изменение рекурсивное)
semanage fcontext -a -tУстановить контекст по умолчанию для директории в соответствии с тем, что оценивает REGEX

Например, если необходимо изменить контекст всех файлов в директории “/srv/web” на “httpd_sys_content_t”, можно использовать следующую команду:

sudo semanage fcontext -a-t httpd_sys_content_t “/srv/web(/.*)”

Selinux Vs Apparmor 2 1

Поскольку этот контекст, показанный на снимке экрана, уже определен для директории “/srv/web” рекурсивно, SELinux отображает сообщение, чтобы уведомить пользователя. Если он не определен, успешная операция semanage не показывает никакого вывода.

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

Selinux Vs Apparmor 3

Также читайте: Как безопасно передавать файлы в Linux с помощью SCP

Что такое AppArmor?

AppArmor поддерживается в разработке компанией Canonical, родительской компанией, которая разрабатывает дистрибутив Ubuntu Linux. AppArmor стремится быть более простым и удобным в использовании, чем SELinux, а его профили создаются в директории “/etc/apparmor.d/”. Профиль AppArmor для процесса “/usr/bin/man” показан на снимке экрана ниже.

Selinux Vs Apparmor 4

Операции и команды AppArmor

Чтобы увидеть статус AppArmor, используется команда aa-status. Пример вывода команды показан ниже.

Selinux Vs Apparmor 5

Профили AppArmor можно перечислить по содержимому каталога “/etc/apparmor.d/”, как показано ниже.

Selinux Vs Apparmor 6

Из приведенного списка профилей, если пользователь хочет отключить профиль usr.bin.man, он может использовать следующую команду:

sudo aa-complain /usr/bin/man

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

sudo aa-enforce /usr/bin/man

Удобство использования между SELinux и AppArmor

AppArmor работает с файловыми путями в файловой системе, вместо того чтобы работать со строками для каждого файла, как это делает SELinux. Одним из преимуществ AppArmor является то, что настройки операций чтения, записи, блокировки и других операций с файлами проще, чем в SELinux. С другой стороны, хотя SELinux предлагает больше возможностей для контроля доступа к файлам, эти функции реализованы на гораздо более низком уровне в системе.

Поэтому пользователям необходимо изучить, как работать с mknod, сетевыми сокетами и другими системными операциями, чтобы работать с SELinux. Для всех, кто не является системным администратором, гораздо проще изучить, как использовать AppArmor.

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

Также читайте: Как обеспечить безопасность домашнего сервера на Linux

Часто задаваемые вопросы

Какие дистрибутивы Linux предварительно установлены с SELinux и AppArmor?

Все дистрибутивы Linux под эгидой RedHat поставляются с предварительно установленным или предлагающим настройку SELinux, включая RHEL, CentOS и Fedora. AppArmor предварительно установлен на Debian, Ubuntu, их производных дистрибутах, а также на SUSE Enterprise Server и OpenSUSE.

Какой модуль безопасности лучше для нового пользователя Linux?

Большинство основных дистрибутивов Linux по умолчанию имеют установленный один из модулей безопасности. Поэтому маловероятно, что новый пользователь Linux окажется без модуля безопасности “из коробки”. Сравнение функций и удобства использования между SELinux и AppArmor показывает, что для опытных пользователей или системных администраторов, желающих более полного контроля над своей операционной системой, SELinux является лучшим выбором, но для всех остальных AppArmor — лучшее решение.

Являются ли SELinux и AppArmor альтернативами файрволам, антивирусам и другим программам для защиты пользователей или данных?

SELinux и AppArmor не являются альтернативами антивирусам или хорошо настроенным файрволам для безопасности системы и целостности данных. Поэтому рекомендуется дополнить вашу систему программой-антивирусом для лучшей защиты данных.