Лабораторная работа №3

Для выполнения этой работы рекомендуется установить дистрибутив Ubuntu (или любой другой, который йподдерживает работу AppArmor)

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

Apparmor в Ubuntu

Существует 2 режима работы AppArmor:

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

sudo apt install apparmor-utils

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

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

sudo apt install apparmor-profiles

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

Для того, чтобы начать контролировать приложение с помощью AppArmor, необходимо поместить профиль приложения в директорию /etc/apparmor.d/:

cp /path/to/usr.bin.app /etc/apparmor.d/

Больше профилей доступно в директории /usr/share/apparmor/extra-profiles/

После чего приложение можно перезапустить:

kill -9 $APP_PID; /usr/sbin/app

Логгирование производится в файл: /var/log/syslog.

Вывести всю информацию по AppArmor можно с помощью следующей команды:

sudo cat /var/log/syslog | grep apparmor

Содержимое файла /etc/apparmor.d/bin.ping:

#include <tunables/global>
profile ping /{usr/,}bin/{,iputils-}ping flags=(complain) {
  #include <abstractions/base>
  #include <abstractions/consoles>
  #include <abstractions/nameservice>

  capability net_raw,
  capability setuid,
  network inet raw,
  network inet6 raw,

  /{,usr/}bin/{,iputils-}ping mixr,
  /etc/modules.conf r,

  # Site-specific additions and overrides. See local/README for details.
  #include <local/bin.ping>
}

Все достаточно понятно, кроме флагов mixr. Описание значений флагов ниже:

1. Проверка complain и enforce режимов

1.1. Создайте копию утилиты ping (из директории /bin/), а вместо нее скопируйте утилиту cp (/bin/cp -> /bin/ping). После этого переведите профиль bin.ping в режим enforce. Создайте в домашней директории файл и попробуйте его скопировать с помощью утилиты ping (которая, по факту, является копией утилиты cp).

Объясните, что произошло. Посмотрите журнал, что там за сообщения (относительно этой операции), что они значат?

1.2. Переведите профиль bin.ping в режим complain. Повторите действия из шага 1.1. Что изменилось? Объясните. Какие теперь записи в журнале?

1.3. Верните утилиту ping на свое место.

1.4. Переведите профиль bin.ping в режим enforce. Попробуйте воспользоваться утилитов (из шага 1.1.) my_ping.

Объясните, что произошло. Посмотрите журнал, что там за сообщения (относительно этой операции)?

2. AppArmor на примере Docker

2.1. Установите Docker

Установка Docker в Ubuntu

Создайте группу docker, добавьте в нее своего пользователя. При необходимости перезагрузите систему.

2.2. Создайте Docker-конетейнер с ubuntu:

docker container run --rm -it --cap-add SYS_ADMIN --security-opt seccomp=unconfined ubuntu sh

Что значат ключи: - --cap-add - seccomp=unconfined

Какой профиль AppArmor загружен?

Создайте два новых каталога (внутри контейнера), смонтируйте первый каталог в другой каталог (подробнее, mount --bind)

Что происходит?

3. Пользовательский профиль AppArmor

3.1. Скачайте материалы для ЛР из репозитория Docker:

git clone https://github.com/docker/labs.git
cd labs/security/apparmor/wordpress

3.2. Опишите, какие контейнеры предлагается создать (docker-compose.yml). Создайте контейнеры с помощью docker-compose

3.3. Проверьте работоспособность WordPress, выбрав язык и установив какие-либо плагины.

Все ли работает?

3.4. Удалите созданные контейнеры.

3.5. Добавьте wparmor профиль в файл конфигурации.

Вставьте:

security_opt:
    - apparmor=wparmor

Вместо закомментированных строк.

Опишите правила в wparmor.

3.6. Отредактируйте файл wparmor так, чтобы запретить использование каталогов в var/www/html/wp-content за исключением директории uploads. Спарсите новый файл (apparmor_parse).

3.7. Повторите шаги 3.2. и 3.3. и опишите результат.

Можете ли вы устанавливать плагины и загружать другой контент?

4. Пользовательский профиль AppArmor произвольного приложения

4.1. Выберите произвольное приложение с открытым исходным кодом (приложение может сразу поставляться в виде docker-образа или вы можете создать образ самостоятельно). Приложение должно быть подобрано таким образом, чтобы было удобно настроить политику AppArmor для него. Разверните приложение, опишите процесс выполнения развертывания.

4.2. Придумайте и опишите политику AppArmor, продемонстрируйте ее работу.