Введение
Модуль безопасности ядра Linux AppArmor ("Application Armor") — это модуль безопасности ядра Linux, позволяющий системному администратору ограничивать возможности программ с помощью профилей для каждой программы. Профили могут предоставлять такие возможности, как доступ к сети, доступ к сырым сокетам, а также разрешение на чтение, запись или выполнение файлов по соответствующим путям. AppArmor дополняет традиционную модель дискреционного контроля доступа Unix (DAC), обеспечивая принудительный контроль доступа (MAC). Он частично включен в основное ядро Linux начиная с версии 2.6.36, а его разработка поддерживается Canonical с 2009 года.
AppArmor ("Application Armor") is a Linux kernel security module that allows the system administrator to restrict programs' capabilities with per program profiles. Profiles can allow capabilities like network access, raw socket access, and the permission to read, write, or execute files on matching paths. AppArmor supplements the traditional Unix discretionary access control (DAC) model by providing mandatory access control (MAC). It has been partially included in the mainline Linux kernel since version 2.6.36 and its development has been supported by Canonical since 2009.
Подробности
В дополнение к ручному созданию профилей, AppArmor включает режим обучения, в котором нарушения профиля регистрируются, но не блокируются. Этот журнал затем можно использовать для генерации профиля AppArmor, основанного на типичном поведении программы. AppArmor реализован с использованием интерфейса ядра Linux Security Modules (LSM). AppArmor предлагается отчасти как альтернатива SELinux, которую критики считают сложной в настройке и обслуживании для администраторов. В отличие от SELinux, который основан на применении меток к файлам, AppArmor работает с путями к файлам. Сторонники AppArmor утверждают, что он менее сложен и легче в освоении для обычного пользователя, чем SELinux. Они также утверждают, что AppArmor требует меньше изменений для работы с существующими системами. Например, SELinux требует файловой системы, поддерживающей "метки безопасности", и поэтому не может обеспечить контроль доступа к файлам, смонтированным через NFS. AppArmor не зависит от типа файловой системы.
Другие системы
AppArmor представляет собой один из нескольких возможных подходов к проблеме ограничения действий, которые может выполнять установленное программное обеспечение. Система SELinux обычно использует аналогичный подход. Одно важное отличие: SELinux идентифицирует объекты файловой системы по номеру inode, а не по пути. В AppArmor недоступный файл может стать доступным, если будет создана жесткая ссылка на него. Однако это различие может быть менее значимым, поскольку начиная с Ubuntu 10.10 и более поздних версий, эта проблема смягчается благодаря модулю безопасности Yama, который также используется в других дистрибутивах. Модель SELinux, основанная на inode, изначально всегда запрещала доступ через вновь созданные жесткие ссылки, поскольку такая ссылка указывала бы на недоступный inode. SELinux и AppArmor также существенно различаются в способах администрирования и интеграции в систему. Изоляция процессов также может быть реализована с помощью механизмов, таких как виртуализация; например, проект One Laptop per Child (OLPC) использует песочницу для отдельных приложений в легковесной Vserver. В 2007 году было представлено упрощенное ядро обязательного контроля доступа. В 2009 году в Linux 2.6.30 было включено новое решение под названием Tomoyo, которое, как и AppArmor, использует контроль доступа на основе пути.
Доступность
AppArmor впервые был использован в Immunix Linux в период с 1998 по 2003 год. В то время AppArmor был известен как SubDomain, что отражало возможность сегментирования профиля безопасности конкретной программы на различные домены, между которыми программа могла динамически переключаться. AppArmor впервые стал доступен в SLES и openSUSE и был впервые включен по умолчанию в SLES 10 и openSUSE 10.1. В мае 2005 года Novell приобрела Immunix и переименовала SubDomain в AppArmor, начав очистку и переработку кода для включения в ядро Linux. С 2005 по сентябрь 2007 года AppArmor поддерживался Novell. Novell была приобретена SUSE, которая теперь является законным владельцем товарного знака AppArmor. AppArmor был впервые успешно портирован и упакован для Ubuntu в апреле 2007 года. AppArmor стал пакетом по умолчанию, начиная с Ubuntu 7.10, и вошел в состав релиза Ubuntu 8.04, обеспечивая защиту только CUPS по умолчанию. Начиная с Ubuntu 9.04, профили были установлены для большего числа компонентов, таких как MySQL. Усиление безопасности AppArmor продолжалось в Ubuntu 9.10, поскольку он поставлялся с профилями для гостевой сессии, виртуальных машин libvirt, просмотрщика документов Evince и необязательного профиля Firefox. AppArmor был интегрирован в релиз ядра 2.6.36, выпущенный в октябре 2010 года. AppArmor интегрирован в DSM от Synology, начиная с бета-версии 5.1 в 2014 году. AppArmor был включен в Solus Release 3 15 августа 2017 года. AppArmor включен по умолчанию в Debian 10 (Buster), выпущенном в июле 2019 года. AppArmor доступен в дополнительном репозитории Arch Linux.