Введение
Системы мандатного контроля доступа (MAC), такие как AppArmor и SELinux, позволяют системным администраторам предоставлять или запрещать доступ к ресурсам и системам контроля, встроенным в ядро Linux.
Хотя обе системы выполняют одни и те же задачи, они работают по-разному и предлагают различные возможности.
В этой статье объясняются различия между AppArmor и SELinux и показаны основные возможности этих двух систем.
AppArmor и SELinux
И SELinux, и AppArmor предоставляют инструменты безопасности, которые изолируют приложения и ограничивают доступ злоумышленнику, взломавшему одну часть системы.
AppArmor работает, сначала предоставляя доступ, а затем применяя ограничения.
SELinux же по умолчанию ограничивает доступ ко всем приложениям и предоставляет доступ только тем пользователям, которые имеют соответствующие сертификаты.
У этих двух систем много общих черт, но есть и некоторые различия:
Место сравнения | AppArmor | SELinux |
---|---|---|
Контроль доступа | Использует профили безопасности, основанные на путях. | Использует политики безопасности на основе меток файлов. |
Доступность | Доступен для любого дистрибутива, но в основном используется на SUSE и Ubuntu. | Доступен для любого дистрибутива, но в основном используется на системах RHEL/Fedora. |
Трудность обучения | Более короткая кривая обучения, более простая настройка и администрирование. | Более сложный и менее интуитивный. |
Независимая проверка | Возможно. | Невозможно. |
Требуется сложная конфигурация | Нет | Да. |
MLS/MCS | Нет | Да. |
Влияние на производительность системы | Нет, но время запуска больше. | Нет. |
Правила политики | Не хватает гибкости. | Гибкие |
Уровень контроля | Средний | Высокий |
AppArmor
AppArmor – это практичный модуль безопасности Linux, который по умолчанию включен в Ubuntu начиная с версии 7.10.
Модуль позволяет разработчикам ограничить использование приложениями определенных файлов.
Таким образом, AppArmor предотвращает любые повреждения потенциально уязвимых приложений и защищает легко взламываемое программное обеспечение, например, веб-серверы.
Модуль использует профили безопасности для определения разрешений, необходимых приложению.
Профили – это текстовые файлы, загружаемые в ядро, обычно при загрузке.
- Записи пути. Они определяют, к каким файлам может получить доступ приложение.
- Записи о возможностях. Эти правила определяют привилегии, которыми может пользоваться ограниченный процесс.
Профили предназначены для ограничения определенных приложений и работают в двух режимах.
- Complain mode В этом режиме система сообщает о попытках нарушения политики, но не обеспечивает соблюдение правил.
- Enforce mode. В режиме Enforce новый профиль проверяется, и все нарушения пресекаются.
AppArmor состоит из следующих компонентов:
- Server analyzer. Автоматически сканирует порты и находит приложения, прослушивающие их. Он также обнаруживает приложения без профилей и те, которые AppArmor необходимо ограничить.
- Profile generator. Статический процесс, который анализирует приложения и создает шаблон профиля.
- Optimizer. Этот компонент регистрирует и собирает события в профиль нормального поведения.
Кроме Ubuntu, AppArmor по умолчанию работает в дистрибутивах Debian, SUSE Enterprise Server, OpenSUSE и других дистрибутивах.
Чтобы проверить статус модуля, выполните следующее:
Вывод показывает, что AppArmor активен в системе.
Команда также выводит список установленных профилей и активных ограниченных процессов.
Преимущества AppArmor
Основными преимуществами AppArmor являются простота и короткая кривая обучения.
Этот модуль гораздо менее сложен, чем SELinux, что делает его более простым в настройке и управлении.
Инструмент работает непосредственно с профилями (текстовыми файлами) для контроля доступа, и операции с файлами более просты.
Эта особенность делает
AppArmor более удобным для пользователя, чем SELinux с его политиками безопасности.
Благодаря реализации на основе путей, AppArmor защищает любой файл в системе и позволяет задавать правила даже для несуществующих файлов. Режим обучения программы делает AppArmor адаптируемым к изменениям и навязывает предпочтительное поведение приложений.
Недостатки AppArmor
В AppArmor более одного пути могут ссылаться на одно и то же приложение.
Эти различные пути к одному и тому же исполняемому файлу создают несколько профилей для одного приложения, что является потенциальной проблемой безопасности.
Более того, самое сильное преимущество AppArmor – простота – также является причиной того, что программа считается менее безопасной.
В AppArmor нет многоуровневой безопасности (MLS) и многокатегорийной безопасности (MCS).
Отсутствие поддержки MCS делает AppArmor практически неэффективным в средах, требующих MLS.
Другим недостатком является то, что загрузка политик также занимает больше времени, поэтому система запускается медленнее.
SELinux
SELinux (Security Enhanced Linux) – это модуль безопасности Linux, встроенный в ядро Linux.
Система дает сисадминам больше контроля над тем, кто имеет доступ к ресурсам.
SELinux присваивает метки файлам, процессам и портам системы.
Тип метки жизненно важен для целевых политик, а применение типа – вторая по важности концепция в SELinux.
Маркировка служит в качестве механизма группировки, который присваивает файлам и процессам различные типы меток.
Модель безопасности с применением типов помогает SELinux определить, имеет ли процесс с определенным типом метки доступ к файлу с другим типом метки.
Система ограничивает доступ по умолчанию (в отличие от AppArmor).
Пользователи должны быть правильно настроены, чтобы получить доступ к любому ресурсу.
SELinux обналичивает предыдущие решения в кэше векторов доступа (AVC), например, разрешение или ограничение доступа.
Обналичивание решений ускоряет процесс управления доступом.
Например, если приложение пытается получить доступ к файлу, SELinux сверяется с AVC и разрешает или запрещает доступ на основе предыдущего решения.
В RHEL, CentOS и Fedora SELinux установлен или доступен по умолчанию.
Чтобы узнать текущее состояние SELinux, выполните следующее:
Преимущества SELinux
Несмотря на сложные политики (и благодаря им), SELinux считается более надежным вариантом безопасности Linux.
Маркировка и применение типов позволяют SELinux предоставлять доступ только в том случае, если это разрешено правилом политики.
Этот процесс реализует более надежный и глубокий контроль доступа.
Благодаря совместимости с MLS, SELinux предлагает лучшие возможности доступа.
Например, один из основных принципов MLS заключается в том, что пользователи могут читать файлы только своего уровня чувствительности и ниже.
Однако в SELinux системные администраторы могут читать и писать файлы на своем уровне чувствительности и ниже.
По умолчанию система отделяет файлы друг от друга и от хоста и поддерживает это разделение.
Например, файл имеет разные наборы разрешений:
- Владелец (пользователь).
- Группа, владеющая файлом.
- Другие пользователи/группы, имеющие доступ к файлу.
Недостатки SELinux
SELinux предоставляет системным администраторам универсальный инструмент контроля доступа.
Однако этот модуль безопасности имеет некоторые недостатки.
SELinux довольно сложен в изучении, настройке и управлении.
Хотя программа эффективно контролирует доступ к приложениям и файлам, устранение потенциальных проблем является сложной задачей для новичков.
Не всегда легко определить, что на самом деле означает сообщение об ошибке и где искать проблему.
В целом, SELinux не очень удобен и неопытные администраторы могут столкнуться с трудностями при обучении.
Важно: SELinux часто отказывает в действии, если файлам неправильно назначен лейбл.
Заключение
Теперь вы знаете преимущества и недостатки SELinux и AppArmor.
Обе системы предлагают различные подходы к безопасности Linux и защищают машины от несанкционированного доступа и модификации системных ресурсов.
см. также:
- 🐧 Как использовать semanage и избежать отключения SELinux
- 🔥 Как изменить SSH-порт в с помощью SELinux
- Как скопировать контекст SELinux из одного каталога в другой
- Как проверить, что файлы и каталоги имеют правильный контекст безопасности SELinux
- Как настроить SELinux для домашних каталогов для Apache HTTPD
- Как отключить SELinux на RHEL 8 / CentOS 8
- Установка vsftpd на CentOS 7 / RedHat 7 с selinux
- Как найти,что ошибка permission denied , вызвана SELinux