Введение в AppArmor и SELinux в Linux

Поскольку угрозы кибербезопасности становятся все более изощренными, обеспечение безопасности вашей Linux-системы является критически важным. Среди арсенала инструментов, доступных для повышения безопасности Linux, AppArmor и SELinux — два самых мощных. Эти системы обязательного контроля доступа (Mandatory Access Control, MAC) обеспечивают дополнительный уровень защиты, ограничивая взаимодействие приложений с системой. В этом руководстве мы рассмотрим AppArmor и SELinux, понять их различия и предоставить исчерпывающее техническое руководство по их внедрению и управлению ими в ваших Linux-системах.

Понимание AppArmor

AppArmor (Application Armor) — это модуль безопасности для ядра Linux, который позволяет системному администратору ограничивать возможности отдельных программ. AppArmor использует профили безопасности для определения того, к каким ресурсам могут обращаться приложения, тем самым ограничивая потенциальный ущерб от вредоносного кода.

Принцип работы AppArmor

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

  • Режим принуждения: В этом режиме AppArmor применяет политики, определенные в профилях, и блокирует любой несанкционированный доступ.
  • Режим жалоб: В этом режиме AppArmor регистрирует нарушения политики, но не применяет их, позволяя администраторам тестировать профили перед их полным внедрением.

Профили AppArmor

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

Пример профиля AppArmor

#include <tunables/global>
/usr/sbin/apache2 {
  #include <abstractions/base>
  /var/www/html/** r,
  /etc/apache2/** r,
  /usr/sbin/apache2 mr,
  capability net_bind_service,
  network inet tcp,
}

В приведенном выше профиле Apache предоставляется доступ на чтение к /var/www/html/, /etc/apache2/, и memory-read (mr) доступ к своим двоичным файлам. Кроме того, ему разрешено связываться с сетевым сервисом через capability net_bind_service и взаимодействовать с сетевым стеком TCP.

Начало работы с AppArmor в Linux

Установка AppArmor

AppArmor доступен в большинстве дистрибутивов Linux, но его может потребоваться установить и включить. В Ubuntu, например, он обычно установлен по умолчанию. Однако если вам нужно установить его, вы можете сделать это с помощью следующих команд:

$ sudo apt-get update
$ sudo apt-get install apparmor apparmor-utils

Включение и отключение AppArmor

Чтобы проверить, включен ли AppArmor, используйте:

$ sudo aa-status

Чтобы включить AppArmor, вы можете изменить конфигурацию GRUB. Редактировать /etc/default/grub и добавьте apparmor=1 security=apparmor к GRUB_CMDLINE_LINUX_DEFAULT линия:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash apparmor=1 security=apparmor"

Затем обновите GRUB:

$ sudo update-grub
$ sudo reboot

Чтобы отключить AppArmor, просто удалите или закомментируйте строку apparmor=1 security=apparmor из конфигурации GRUB и перезагрузитесь.

Управление профилями AppArmor

Профили AppArmor хранятся в /etc/apparmor.d/. Вы можете создавать, изменять или удалять профили в соответствии с вашими требованиями.

Создание нового профиля AppArmor

Чтобы создать новый профиль, вы можете воспользоваться командой aa-genprof инструмент. Например, чтобы создать профиль для /usr/bin/evince приложения:

$ sudo aa-genprof /usr/bin/evince

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

Установка профиля в режим принудительного использования

После создания профиля вы можете перевести его в режим принудительного использования:

$ sudo aa-enforce /etc/apparmor.d/usr.bin.evince

Эта команда гарантирует, что профиль активно применяет свои правила.

Установка профиля в режим жалобы

Если вы хотите протестировать профиль перед внедрением:

$ sudo aa-complain /etc/apparmor.d/usr.bin.evince

В этом режиме AppArmor будет регистрировать любые нарушения, не применяя ограничений.

Понимание SELinux

Security-Enhanced Linux (SELinux) — это еще один фреймворк MAC, который контролирует доступ к файлам, процессам и сетевым ресурсам на основе политик безопасности. Изначально разработанный АНБ, SELinux известен своим тонким контролем безопасности, что делает его подходящим для высокочувствительных сред.

Как работает SELinux

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

  • Режим принуждения: SELinux применяет свои политики безопасности, отказывая в доступе там, где это явно не разрешено политикой.
  • Разрешительный режим: SELinux регистрирует нарушения политики, не применяя их, что полезно для устранения неполадок.
  • Отключенный режим: SELinux полностью отключен.

Политики SELinux

Политики SELinux — это комплексные наборы правил, определяющие разрешения доступа для всех субъектов и объектов в системе. Политики обычно делятся на две категории:

  • Целевые политики: Они применяются к определенным процессам, в то время как остальная часть системы работает с DAC (Discretionary Access Control).
  • Политики MLS (многоуровневая безопасность): Они обеспечивают строгое соблюдение безопасности для всех процессов и используются в средах, требующих высокой безопасности, например в правительственных системах.

Пример политики SELinux

allow httpd_t httpd_sys_content_t:file { read open getattr };

В этом фрагменте политики httpd_t домену (обычно связанному с сервером Apache) разрешено читать, открывать и получать атрибуты файлов, помеченных символом httpd_sys_content_t типом.

Начало работы с SELinux в Linux

Установка SELinux

В большинстве дистрибутивов, таких как CentOS, RHEL и Fedora, SELinux установлен и включен по умолчанию. В системах на базе Debian, таких как Ubuntu, он может быть установлен следующим образом:

$ sudo apt-get install selinux-basics selinux-policy-default auditd
$ sudo selinux-activate
$ sudo reboot

Настройка режимов SELinux

Вы можете проверить текущий режим SELinux с помощью команды sestatus команда:

$ sestatus

Чтобы изменить режим работы SELinux, отредактируйте файл /etc/selinux/config файл:

SELINUX=enforcing

Доступны следующие варианты:

  • enforcing: Обеспечивает выполнение политики SELinux.
  • permissive: SELinux регистрирует действия, но не применяет политику.
  • disabled: SELinux отключен.

После внесения изменений перезагрузите систему, чтобы они вступили в силу.

$ sudo reboot

Управление политиками SELinux

Политики SELinux хранятся в /etc/selinux/ и могут управляться с помощью различных инструментов, таких как semanage, setsebool, и audit2allow.

Создание нового модуля политики SELinux

Чтобы создать пользовательский модуль политики, выполните следующие действия:

  1. Запишите файл внедрения типа (TE):
module mymodule 1.0;
require {
  type httpd_t;
  type myapp_exec_t;
}
allow httpd_t myapp_exec_t:file execute;
  1. Скомпилируйте файл TE:
$ checkmodule -M -m -o mymodule.mod mymodule.te
$ semodule_package -o mymodule.pp -m mymodule.mod
  1. Установите модуль политики:
$ sudo semodule -i mymodule.pp

Это позволит загрузить пользовательскую политику в активную политику SELinux.

Управление булевыми значениями SELinux

Були SELinux позволяют включать и выключать определенные политики. Вы можете перечислить все доступные булины с помощью:

$ sudo getsebool -a

Чтобы изменить значение булевой функции, воспользуйтесь командой setsebool команду:

$ sudo setsebool httpd_can_network_connect on

Чтобы сделать это изменение постоянным, добавьте -P опцию:

$ sudo setsebool -P httpd_can_network_connect on

AppArmor против SELinux: Основные различия

Хотя и AppArmor, и SELinux обеспечивают безопасность MAC, они имеют существенные различия, которые влияют на их использование и управление.

Безопасность на основе профилей против безопасности на основе меток

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

Простота использования

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

Доступность по умолчанию

AppArmor по умолчанию

MAC-система в Ubuntu и некоторых других дистрибутивах на базе Debian. SELinux используется по умолчанию в дистрибутивах на базе Red Hat, таких как CentOS, Fedora и RHEL.

Гранулярность контроля

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

Примеры использования AppArmor и SELinux

Выбор между AppArmor и SELinux часто зависит от конкретных требований вашей среды.

Когда использовать AppArmor

  • Легкая безопасность: Если вам нужно простое и легкое в управлении средство безопасности, AppArmor — отличный выбор. Он обеспечивает эффективный контроль при минимальных настройках.
  • Среды Ubuntu или Debian: Поскольку AppArmor используется в этих системах по умолчанию, его проще внедрить и управлять им.

Когда использовать SELinux

  • Среды повышенной безопасности: Для сред, требующих строгого контроля безопасности, SELinux идеально подходит благодаря подробному управлению политиками.
  • Системы на базе Red Hat: SELinux глубоко интегрирован в эти системы, что делает его естественным выбором.

Расширенная конфигурация и настройка

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

Расширенная конфигурация AppArmor

Использование AppArmor с контейнерами

AppArmor может быть особенно полезен для защиты контейнерных сред. Например, вы можете назначить определенные профили контейнерам Docker, чтобы ограничить их возможности.

$ docker run --rm -it --security-opt apparmor=docker-default ubuntu

Эта команда запускает контейнер Docker с параметром docker-default AppArmor, ограничивая доступ контейнера к хост-системе.

Отладка AppArmor

Для отладки профилей AppArmor можно воспользоваться командой aa-logprof инструмент, который помогает анализировать журналы и обновлять профили:

$ sudo aa-logprof

Этот инструмент анализирует журналы и предлагает обновить существующие профили на основе зарегистрированных событий.

Расширенная конфигурация SELinux

Настройка ярлыков SELinux

Пользовательские метки можно создавать и применять к файлам или процессам, чтобы обеспечить соблюдение определенных политик. Например, чтобы создать пользовательский ярлык:

$ sudo semanage fcontext -a -t my_custom_t "/custom/path(/.*)?"
$ sudo restorecon -Rv /custom/path

Здесь semanage команда определяет пользовательский файловый контекст для указанного пути, а restorecon применяет новую метку.

SELinux в виртуальных средах

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

$ sudo virsh setsebool virt_use_execmem on

Эта команда включает virt_use_execmem Булево, позволяющее виртуальным машинам выполнять код в памяти, что важно для некоторых рабочих нагрузок.

Устранение неполадок и общие проблемы

Как AppArmor, так и SELinux имеют свой набор проблем. В этом разделе мы рассмотрим общие проблемы и способы их решения.

Общие проблемы с AppArmor

  • Конфликты профилей: Если приложение работает не так, как ожидалось, это может быть связано с ограничивающими профилями AppArmor. Переключение профиля в режим жалобы может помочь выявить проблему.
$ sudo aa-complain /etc/apparmor.d/usr.sbin.mysqld
  • Анализ журналов: Анализ /var/log/syslog сообщений AppArmor может дать представление о том, что именно блокируется.

Общие проблемы с SELinux

  • Нарушения политики: SELinux регистрирует нарушения политики в /var/log/audit/audit.log. Вы можете использовать audit2why , чтобы понять причину отказа:
$ sudo cat /var/log/audit/audit.log | audit2why
  • Разрешительный режим: Если вы часто сталкиваетесь с отказами, переключение SELinux в разрешительный режим может помочь диагностировать проблемы без блокирования операций.
$ sudo setenforce 0

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

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

Легче ли использовать AppArmor, чем SELinux?
Да, AppArmor обычно считается более простым в использовании, поскольку он требует менее глубоких знаний для создания и управления профилями по сравнению с более сложной системой политик SELinux.

Можно ли использовать AppArmor и SELinux в одной системе?
Хотя технически возможно установить обе программы, не рекомендуется запускать их одновременно, поскольку они могут конфликтовать друг с другом. В большинстве систем используется тот или иной вариант.

Как переключаться между принудительным и разрешительным режимами в SELinux?
Вы можете переключать режимы с помощью команды setenforce команды. Используйте setenforce 1 для режима принуждения и setenforce 0 для разрешительного режима.

Нужно ли перезагружать систему после установки SELinux?
Да, после установки и активации SELinux необходима перезагрузка, чтобы применить контексты безопасности к системным файлам.

Можно ли использовать AppArmor для защиты контейнеров Docker?
Да, AppArmor может защищать контейнеры Docker, применяя специальные профили, ограничивающие возможности контейнера.

Заключение

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *