AppArmor

Материал из I2P-ilita вики
Перейти к навигацииПерейти к поиску

AppArmor — подсистема безопасности ядра Linux, используемая по-умолчанию в ОС Ubuntu и OpenSUSE.

Позволяет определять при помощи политик безопасности (профилей), к каким системным ресурсам приложения могут иметь доступ. Вся активность, которую политика безопасности явно не разрешает, будет заблокирована на уровне ядра Linux.

На практике это выглядит так: у вас есть, браузер Firefox и AppArmor профиль для него. Для простоты, предположим, что Firefox необходим только доступ к определенным файлам и доступ к сети — это определено в профиле. Если вдруг Firefox захочет получить доступ к вебкамере или прочитать файлы из директории /home/user/TopSecretNSAFiles, его ждёт облом — ядро Linux не позволит этого сделать, а отчет по этому инциденту будет записан в логи.

Некоторые приложения поставляются с готовыми профилями и их остается только включить в режим enforce (например, i2pd). Для других, приходится искать профиль в Интернете, или составлять его самостоятельно.

Подобная система есть в ОС Android, там все приложения явно указывают к каким системным ресурсам им нужен доступ.

Существует так же альтернативная подсистема безопасности SELinux.

Пример политики безопасности для i2pd[править]

Этот файл добавляется в директорию /etc/apparmor.d/, название файла должно соответствовать пути бинарника i2pd. Например, если бинарник /usr/local/bin/i2pd, то профиль должен быть /etc/apparmor.d/usr.local.bin.i2pd.

#include <tunables/global>

/usr/sbin/i2pd {
  # подключаем общие правила для всех программ
  #include <abstractions/base>

  # разрешаем доступ к сети
  network inet dgram,
  network inet stream,
  network inet6 dgram,
  network inet6 stream,
  network netlink raw,

  # разрешаем доступ к некоторым системным файлам
  /etc/gai.conf r,
  /etc/host.conf r,
  /etc/hosts r,
  /etc/nsswitch.conf r,
  /run/resolvconf/resolv.conf r,

  # разрешаем доступ к файлам программы
  /etc/i2pd/** r,
  /var/lib/i2pd/** rw,
  /var/log/i2pd.log w,
  /var/run/i2pd/i2pd.pid rw,
  /usr/sbin/i2pd mr,
}

После добавления профиля, его необходимо включить в режим enforce следующей командой (укажите свой путь к i2pd):

sudo aa-enforce /usr/local/bin/i2pd

Актуальный профиль всегда находится в git репозитории i2pd в директории contrib/apparmor.