Генератор профиля Apparmor для контейнеров Docker. По сути, лучший профиль Аппорма, чем создание его вручную, потому что кто когда -либо это сделает.
«Просмотр запросов на привлечение профиля Apparmor - это проклятие моего существования»
Джесс Фразель

Оглавление
Установка
Двоичные файлы
Через Go
Использование
File Globing
Файл конфигурации
Установка профиля
Как выглядит сгенерированный профиль?
Интеграция с Docker
Для инструкций по установке из двоичных файлов, пожалуйста, посетите страницу релизов.
$ Go Get github.com/genuinetools/bane
$ bane -hbane -Пользовательский генератор профилей Apparmor для Docker ContainerSusage: Bane <Command> Флаги: -Д включить журнал отладки (по умолчанию: false) -profile-dir каталог для сохранения профилей (по умолчанию: /etc/apparmor.d/containers) Команды: Версия Показать информацию о версии.
Sample.Toml - это конфигурация примера Apparmor для nginx в контейнере.
| Глобус пример | Описание |
|---|---|
/dir/file | Сопоставьте конкретный файл |
/dir/* | Сопоставьте любые файлы в каталоге (включая DOT -файлы) |
/dir/a* | Сопоставьте любой файл в каталоге, начиная с |
/dir/*.png | Сопоставьте любой файл в каталоге, заканчивающемся .png |
/dir/[^.]* | Сопоставьте любой файл в каталоге, кроме Dot Files |
/dir/ | соответствовать каталогу |
/dir/*/ | Сопоставьте любой каталог внутри /dir / |
/dir/a*/ | Сопоставьте любой каталог внутри / dir / начиная с |
/dir/*a/ | Сопоставьте любой каталог внутри / dir / ending |
/dir/** | Сопоставьте любой файл или каталог в или ниже /Dir / |
/dir/**/ | Сопоставьте любой каталог в или ниже /Dir / |
/dir/**[^/] | Сопоставьте любой файл в или ниже /Dir / |
/dir{,1,2}/** | Сопоставьте любой файл или каталог в или ниже /dir /, /dir1 /и /dir2 / |
Теперь, когда у нас есть наш файл конфигурации сверху, давайте установим его. bane автоматически установит профиль в каталог /etc/apparmor.d/containers/ и запустить apparmor_parser .
$ sudo bane sample.toml# Профиль Установлен успешно установлен. Теперь вы можете запустить профиль с# `docker run-security-opt =" apparmor: docker-nginx-sample "`# Теперь давайте запустим nginx $ docker run -d-security -opt = "apparmor: docker-nginx-sample" -p 80:80 nginx
Использование пользовательских профилей Apparmor никогда не было проще!
Теперь давайте попробуем выполнять вредоносные действия с образцом профиля:
$ Docker Run-Security-Opt = "Apparmor: Docker-nginx-Sample" -p 80:80-rm -it nginx bashroot@6da5a2a930b9: ~# ping 8.8.8.8 :/# topbash:/usr/bin/top: разрешение DENIEDROOT@6DA5A2A930B9: ~# Touch ~/thingtouch: невозможно прикоснуться «вещь»: разрешение deniedroot@6da5a2a930b9:/# shbash:/bin/sh: разрешение deniedroot@6da5a2a930b9:/# dashbash:/bin/dash: denisised denied denied denied denied denied denied
Образец вывода dmesg при использовании LogOnWritePaths :
[ 1964.142128] type=1400 audit(1444369315.090:38): apparmor="STATUS" operation="profile_replace" profile="unconfined" name="docker-nginx" pid=3945 comm="apparmor_parser" [ 1966.620327] type=1400 audit(1444369317.570:39): apparmor="AUDIT" operation="open" profile="docker-nginx" name="/1" pid=3985 comm="nginx" requested_mask="c" fsuid=0 ouid=0 [ 1966.624381] type=1400 audit(1444369317.574:40): apparmor="AUDIT" operation="mkdir" profile="docker-nginx" name="/var/cache/nginx/client_temp/" pid=3985 comm="nginx" requested_mask="c" fsuid=0 ouid=0 [ 1966.624446] type=1400 audit(1444369317.574:41): apparmor="AUDIT" operation="chown" profile="docker-nginx" name="/var/cache/nginx/client_temp/" pid=3985 comm="nginx" requested_mask="w" fsuid=0 ouid=0 [ 1966.624463] type=1400 audit(1444369317.574:42): apparmor="AUDIT" operation="mkdir" profile="docker-nginx" name="/var/cache/nginx/proxy_temp/" pid=3985 comm="nginx" requested_mask="c" fsuid=0 ouid=0 [ 1966.624494] type=1400 audit(1444369317.574:43): apparmor="AUDIT" operation="chown" profile="docker-nginx" name="/var/cache/nginx/proxy_temp/" pid=3985 comm="nginx" requested_mask="w" fsuid=0 ouid=0 [ 1966.624507] type=1400 audit(1444369317.574:44): apparmor="AUDIT" operation="mkdir" profile="docker-nginx" name="/var/cache/nginx/fastcgi_temp/" pid=3985 comm="nginx" requested_mask="c" fsuid=0 ouid=0 [ 1966.624534] type=1400 audit(1444369317.574:45): apparmor="AUDIT" operation="chown" profile="docker-nginx" name="/var/cache/nginx/fastcgi_temp/" pid=3985 comm="nginx" requested_mask="w" fsuid=0 ouid=0 [ 1966.624546] type=1400 audit(1444369317.574:46): apparmor="AUDIT" operation="mkdir" profile="docker-nginx" name="/var/cache/nginx/uwsgi_temp/" pid=3985 comm="nginx" requested_mask="c" fsuid=0 ouid=0 [ 1966.624582] type=1400 audit(1444369317.574:47): apparmor="AUDIT" operation="chown" profile="docker-nginx" name="/var/cache/nginx/uwsgi_temp/" pid=3985 comm="nginx" requested_mask="w" fsuid=0 ouid=0
Для приведенного выше sample.toml Томл сгенерированный профиль доступен в виде Docker-Nginx-Sample.
Первоначально это было доказательством концепции того, что, надеюсь, станет местным профилем безопасности в двигателе Docker. Для получения дополнительной информации об этом см. Docker/Docker#17142.