🐧 Шпаргалка по AppArmor для системных администраторов Linux |

🐧 Шпаргалка по AppArmor для системных администраторов Linux

Мануал

Многие из вас наверняка слышали о AppArmor, работая с системами на базе Debian, в частности, Ubuntu.

Однако, поскольку это не приложение, отображаемое в графическом интерфейсе, некоторые пользователи могут быть с ним не знакомы.

Application Armor, сокращенно AppArmor, – это модуль безопасности в системах Linux.

Он представляет собой систему мандатного контроля доступа (Mandatory Access Control, MAC), используемую ядром Linux для ограничения возможностей программы в соответствии с ее профилями.

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

Эти профили обычно загружаются в ядро при загрузке системы.

Профили AppArmor существуют в двух режимах – enforcement и complain.

Режим enforcement обеспечивает выполнение политики, определенной в профиле, а также сообщает о попытках нарушения политики с помощью syslog или аудита.

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

Технология AppArmor существует уже некоторое время.

Впервые она была замечена в Immunix, а затем интегрирована в системы Novell/SUSE, Mandriva и Ubuntu.

AppArmor рассматривается как замена SELinux, который иногда считается сложным в настройке и обслуживании.

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

Сторонники AppArmor утверждают, что он менее сложен и прост в настройке, чем SELinux.

AppArmor и SELinux: Всестороннее сравнение | (itsecforu.ru)

В сегодняшнем руководстве мы познакомимся со шпаргалкой по AppArmor для системных администраторов Linux.

1. Проверка состояния AppArmor

AppArmor установлен по умолчанию в системах Ubuntu и загружается автоматически при загрузке системы.

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

sudo apparmor_status
#или
sudo aa-status

Пример вывода:

Приведенный выше вывод показывает загруженные профили и режим AppArmor.

2. Просмотр профилей AppArmor

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

Некоторые из профилей отключены, другие активны.

Чтобы проверить все профили, можно выполнить команду:

ls /etc/apparmor.d/*
/etc/apparmor.d/lsb_release
/etc/apparmor.d/nvidia_modprobe
/etc/apparmor.d/sbin.dhclient
/etc/apparmor.d/usr.bin.evince
/etc/apparmor.d/usr.bin.man
....
/etc/apparmor.d/disable:
usr.sbin.rsyslogd
/etc/apparmor.d/force-complain:
/etc/apparmor.d/local:
lsb_release      usr.bin.tcpdump                          usr.sbin.cups-browsed
nvidia_modprobe  usr.lib.libreoffice.program.oosplash     usr.sbin.cupsd
README           usr.lib.libreoffice.program.senddoc      usr.sbin.mysqld
sbin.dhclient    usr.lib.libreoffice.program.soffice.bin  usr.sbin.rsyslogd
usr.bin.evince   usr.lib.libreoffice.program.xpdfimport
usr.bin.man      usr.lib.snapd.snap-confine.real
/etc/apparmor.d/tunables:
alias       etc     home.d      multiarch.d  securityfs  xdg-user-dirs
apparmorfs  global  kernelvars  proc         share       xdg-user-dirs.d
dovecot     home    multiarch   run          sys

Профили имеют определенный синтаксис именования.

Например, профиль для /usr/bin/man будет находиться в файле /etc/apparmor.d/usr.bin.man.

Отключенные профили находятся в каталоге “/etc/apparmor.d/disable”.

ls /etc/apparmor.d/disable/*
/etc/apparmor.d/disable/usr.sbin.rsyslogd

3. Включение/отключение профилей AppArmor

Хотя AppArmor позволяет иметь несколько профилей, они включаются или выключаются по отдельности.

Чтобы включить или отключить профиль, необходимо установить apparmor-utils.

Сначала обновите и модернизируйте систему, чтобы избежать ошибок “Segmentation fault”.

sudo apt update && sudo apt upgrade -y

Теперь установите необходимую утилиту

sudo apt install apparmor-utils

Включение профилей AppArmor

Теперь перейдите к включению отключенного профиля с помощью команды с приведенным ниже синтаксисом:

sudo aa-enforce /path/to/profile

Например, чтобы включить профиль Rsyslogd, мы можем выполнить команду:

sudo aa-enforce /etc/apparmor.d/usr.sbin.rsyslogd
Setting /etc/apparmor.d/usr.sbin.rsyslogd to enforce mode.

Еще один пример включения профиля HTTPD.

sudo aa-enforce /usr/sbin/httpd

Отключение профилей AppArmor

Чтобы отключить профиль, достаточно перевести его в режим complain с помощью:

sudo aa-complain /path/to/profile

Например:

sudo aa-complain /etc/apparmor.d/usr.sbin.rsyslogd
#или
sudo aa-complain /usr/sbin/httpd

4. Создание профилей AppArmor

AppArmor позволяет пользователям создавать собственные профили для защиты приложений.

Профиль обычно содержит несколько конфигураций и переменных для вашего приложения.

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

При интерактивном способе он проверяет действия, выполняемые бинарным файлом, и позволяет вам решить, какие действия вам нравятся – запретить или разрешить.

Для этого необходимо выполнить команду с приведенным ниже синтаксисом:

sudo aa-genprof /path/to/binary

Пример:

sudo aa-genprof /usr/bin/scp
Updating AppArmor profiles in /etc/apparmor.d.
Writing updated profile for /usr/bin/scp.
Setting /usr/bin/scp to complain mode.

Before you begin, you may wish to check if a
profile already exists for the application you
wish to confine. See the following wiki page for
more information:
https://gitlab.com/apparmor/apparmor/wikis/Profiles

Profiling: /usr/bin/scp

Please start the application to be profiled in
another window and exercise its functionality now.

Once completed, select the "Scan" option below in 
order to scan the system logs for AppArmor events. 

For each AppArmor event, you will be given the 
opportunity to choose whether the access should be 
allowed or denied.

[(S)can system log for AppArmor events] / (F)inish

Теперь откройте отдельный терминал и выполните все действия, которые может выполнить бинарный файл.

Например:

scp ~/test remote_user@remote_IP:~/

После выполнения задачи нажмите S в окне профилирования AppArmor.

В записанных действиях установите, игнорировать, разрешить и т.д.

[(S)can system log for AppArmor events] / (F)inish
Reading log entries from /var/log/syslog.

Profile:  /usr/bin/scp
Execute:  /usr/bin/ssh
Severity: unknown

(I)nherit / (C)hild / (P)rofile / (N)amed / (U)nconfined / (X) ix On / (D)eny / Abo(r)t / (F)inish

После завершения нажмите “S” для сохранения изменений.

The following local profiles were changed. Would you like to save them?

 [1 - /usr/bin/scp]
(S)ave Changes / Save Selec(t)ed Profile / [(V)iew Changes] / View Changes b/w (C)lean profiles / Abo(r)t

Теперь нажмите “f”, и профиль будет сохранен как /etc/apparmor.d/path.to.binary. (в данном случае /etc/apparmor.d/usr.bin.scp)

cat /etc/apparmor.d/usr.bin.scp
Last Modified: Fri Sep 29 14:14:11 2023
include <tunables/global>
/usr/bin/scp flags=(complain) {
include <abstractions/base>
deny /usr/bin/ssh x,
deny owner /home/*/mysql-community-client_8.1.0-1ubuntu22.04_amd64.deb r,
/usr/bin/scp mr,
}

Выше приведен пример профиля AppArmor, созданного мной для SCP.

Создание профиля из шаблона

Вы можете создать скелет профиля App.

Начните с установки необходимого пакета:

sudo apt install apparmor-easyprof

Теперь создайте шаблон с помощью команды:

sudo aa-easyprof /path/to/binary

Образец вывода:

# vim:syntax=apparmor
# AppArmor policy for binary
# ###AUTHOR###
# ###COPYRIGHT###
# ###COMMENT###

#include <tunables/global>

# No template variables specified

"/path/to/binary" {
  #include <abstractions/base>

  # No abstractions specified

  # No policy groups specified

  # No read paths specified

  # No write paths specified
}

После этого вы можете продолжить редактирование профиля по своему усмотрению.

Для приведения профиля в действие используйте:

sudo apparmor_parser -a /etc/apparmor.d/profile.name

Существует множество других команд для управления профилями AppArmor:

Загрузка нового профиля в режиме жалоб
sudo apparmor_parser -C /etc/apparmor.d/profile.name
Заменить существующий профиль
sudo apparmor_parser -r /etc/apparmor.d/profile.name
Удалить профиль
sudo apparmor_parser -R /etc/apparmor.d/profile.name

5. Модификация профиля из журналов

Можно также модифицировать профиль из логов.

Утилита считывает журналы и запрашивает, нужно ли разрешить некоторые запрещенные действия.

Для этого воспользуйтесь командой:

sudo aa-logprof

Затем можно перемещаться с помощью клавиш со стрелками и выбирать нужный профиль.

6. Просмотр журналов

Журналы AUDIT и DENIED можно просмотреть в файле /var/log/audit/audit.log.

Установите необходимый пакет:

sudo apt install apparmor-notify

Приступайте к работе и просматривайте журналы:

sudo aa-notify -s 1 -v

7. Управление службой AppArmor

Службой Tha AppArmor можно управлять так же, как и любой другой системной службой.

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

sudo systemctl stop apparmor

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

sudo systemctl restart apparmor

Проверьте состояние сервиса:

systemctl status apparmor
apparmor.service - Load AppArmor profiles
Loaded: loaded (/lib/systemd/system/apparmor.service; enabled; vendor preset: enabled)
Active: active (exited) since Fri 2023-09-29 15:44:32 EAT; 3s ago
Docs: man:apparmor(7)
https://gitlab.com/apparmor/apparmor/wikis/home/
Process: 66332 ExecStart=/lib/apparmor/apparmor.systemd reload (code=exited, status=0/SUC>
Main PID: 66332 (code=exited, status=0/SUCCESS)
Ful 29 15:44:32 thor-Standard-PC-i440FX-PIIX-1996 systemd[1]: Starting Load AppArmor profiles>
Ful 29 15:44:32 thor-Standard-PC-i440FX-PIIX-1996 apparmor.systemd[66332]: Restarting AppArmor
.....

Заключение

На этом мы заканчиваем данное руководство по использованию шпаргалки AppArmor для системных администраторов Linux.

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

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий