Apparmor что это
Перейти к содержимому

Apparmor что это

  • автор:

Что такое AppArmor и как с его помощью защитить вашу систему Ubuntu

Оригинал: «What AppArmor Is and How It Secures Your Ubuntu System»
Автор: Chris Hoffman
Дата публикации: July 6th, 2012
Перевод: Н.Ромоданов
Дата перевода: июль 2012 г.

AppArmor является важным элементом безопасности, который по умолчанию включен в Ubuntu начиная с версии Ubuntu 7.10. Тем не менее, AppArmor работает в фоновом режиме, поэтому Вы можете не знать, что это такое и что AppArmor делает.

AppArmor блокирует уязвимые процессы, ограничивая уязвимость в системе безопасности, которая может возникнуть из-за уязвимости этих процессов. AppArmor можно также использовать для того, чтобы заблокировать Mozilla Firefox для повышения безопасности, но по умолчанию это не делается.

Что такое AppArmor?

AppArmor похож на SELinux, используемый по умолчанию в Fedora и Red Hat. Хотя AppArmor и SELinux работают по-разному, с их помощью реализуется защита вида «мандатный контроль доступа» («mandatory access control» — MAC). По сути, AppArmor позволяет разработчикам Ubuntu ограничивать действия, которые могут выполнять процессы.

Например, одним из приложений, для которого по умолчанию в Ubuntu задано такое ограничение, является Evince — программа просмотра файлов PDF. Когда Evince работает под вашей пользовательской учетной записью, он может выполнять только вполне определенные действия. Для Evince предоставлены минимальные права доступа, необходимые только для запуска и работы с документами PDF. Если при рендеринге PDF с помощью Evince или при открытии вредоносного PDF, который хочет перехватить управление от Evince, были обнаружены уязвимости, AppArmor сможет ограничить ущерб, который может нанести Evince. В традиционной модели безопасности Linux для Evince будет разрешен доступ ко всему тому, к чему у вас есть доступ. При использовании AppArmor, доступ имеется только к тем вещам, которые требуются программе для просмотра PDF.

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

Просмотр текущего состояния AppArmor

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

sudo apparmor_status

Вы увидите, работает ли AppArmor в вашей системе (по умолчанию он работает), какие установлены профили AppArmor и для каких из запущенных процессов заданы ограничения.

Профили AppArmor

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

Профили могут быть запущены в режиме «complain mode» или «enforce mode». В режиме enforce mode, который для профилей, поставляемых в составе Ubuntu, устанавливается по умолчанию, AppArmor ограничивает действия приложений. В режиме complain mode AppArmor позволяет приложениям выполнять действия, которые следовало бы ограничить, и создает в журнале запись с сообщением по этому поводу. Режим complain mode идеально подходит для тестирования профиля AppArmor перед тем, как профиль будет использоваться в режиме enforce mode — вы обнаружите любую ошибку, которая может возникнуть в режиме enforce mode.

Профили хранятся в каталоге /etc/apparmor.d. Эти профили являются обычными текстовыми файлами, в которых могут быть комментарии.

Использование AppArmor для Firefox

Вы также можете заметить, что AppArmor поставляется с профилем для Firefox — это файл usr.bin.firefox, находящийся в каталоге /etc/apparmor.d. По умолчанию он не включен, так как в нем для Firefox задано слишком много ограничений и из-за этого могут возникать проблемы. В каталоге /etc/apparmor.d/disable имеется ссылка на этот файл, что указывает, что этот профиль отключен.

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

sudo rm /etc/apparmor.d/disable/usr.bin.firefox cat /etc/apparmor.d/usr.bin.firefox | sudo apparmor_parser –a

После выполнения этих команд, снова запустите команду sudo apparmor_status и вы увидите, что теперь загружены профили для Firefox.

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

sudo ln -s /etc/apparmor.d/usr.bin.firefox /etc/apparmor.d/disable/ sudo apparmor_parser -R /etc/apparmor.d/usr.bin.firefox

Чтобы получить более подробную информацию об использовании AppArmor, обратитесь к странице AppArmor в официальном руководстве по серверу Ubuntu.

Правила AppArmor

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

Кратко:
* AppArmor реализует мандатный контроль доступа на основе принципа «запрещено все, что не разрешено явно»;
* AppArmor контролирует только те программы, для которых существует и активен профиль в режиме enforce;
* для AppArmor важен абсолютный путь к контролируемой программе – именно он отличает одно приложение от другого;
* AppArmor разрешает только те действия, которые перечислены в правилах профиля программы, запрещая все остальные;
* Существуют два режима контроля: тестовый режим complain (режим обучения), при котором действия не запрещаются, но в лог-файл записывается сообщение о нарушении правил профиля программы, и enforce – рабочий режим, при котором доступные программе действия ограничиваются согласно профилю;

На каком-то этапе я осознал крутость AppArmor в плане дополнительной защиты к существующим правам доступа (легендарные rwxr—r—) и прочитав отличные статьи на ibm.com:профили:

  • Безопасный Linux : Часть первая. AppArmor – песочница для приложений.
  • Безопасный Linux : Часть вторая. AppArmor – разработка профилей.

ринулся их создавать.

Прочитав статьи, в которых создание профиля AppArmor показывалось на примере программы passwd, у меня сложилось ложное мнение, что создание профиля программы в AppArmor это «раз, два и готово». Взявшись сразу создавать профиль для Adobe Reader, как весьма уязвимого приложения, я огрёб сразу кучу проблем и вопросов.

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

Первая моя неправильная мысль была такая:
1) Перейдите в каталог с профилями AppArmor (в Ubuntu это каталог /etc/apparmor.d/). Создадим заготовку профиля приложения в AppArmor. Это можно сделать командой aa-autodep /путь/к/программе .

2) По умолчанию профиль создается в обучающем режиме complain, поэтому, чтобы бы мы не делали (даже не правильно), программа будет запускаться и ничто ей не будет мешать, AppArmor будет только журналировать ошибки. В нашем примере, профиль для Adobe Reader будет вначале пустой и не содержит наших разрешений (помните философию «запрещено все, что не разрешено явно», что забудете разрешить, то будет запрещено приложению).

3) Возьмём команду tail -f /var/log/syslog и будем отлавливать строки вида
apparmor=»ALLOWED» operation=»open» parent=16703 profile=»/opt/Adobe/Reader9/bin/acroread//null-7b2″ name=»/etc/ld.so.cache» pid=16707 comm=»pwd» requested_mask=»r» denied_mask=»r» fsuid=1000 ouid=0
apparmor=»ALLOWED» operation=»file_mmap» parent=17350 profile=»/opt/Adobe/Reader9/bin/acroread//null-7ea» name=»/lib/libc-2.12.1.so» pid=17352 comm=»cut» requested_mask=»mr» denied_mask=»mr» fsuid=1000 ouid=0

В них, на первый взгляд, есть всё что нужно! Пустой профиль в обучающем режиме complain как бы не позволяет программе
/opt/Adobe/Reader9/bin/acroread получить доступ requested_mask=»r» denied_mask=»r» в файлу name=»/etc/ld.so.cache».

4) Я было ринулся ваять скрипт, который выдирал и причёсывал нужные мне данные из лога и помогал бы мне в составлении правил для AppArmor, НО ПРОБЛЕМА в том, что в логах СРАЗУ что необходимо приложению вы НЕ НАЙДЕТЕ! Вы будете вынуждены создать ЧАСТЬ правил, описать их в профиле приложения, снова повторить запуск программы, получить новую порцию данных и так снова и снова.
Представив масштаб трагедии, я приуныл. Идея по частям ловить в логах сообщения AppArmor НЕВЕРНАЯ!

Потом пришла вторая ПРАВИЛЬНАЯ мысль, нужно запустить программу под strace (трассировщик системных вызовов), который доложит нам, к каким файлам обращалась программа во время своей работы.

Для этого:
1) Перейдите в каталог с профилями AppArmor (в Ubuntu это каталог /etc/apparmor.d/). Сделаем заготовку профиля приложения в AppArmor. Взяв в качестве примера Adobe Reader, выполните команду aa-autodep /usr/bin/acroread . Должен создаться профиль Adobe Reader под названием opt.Adobe.Reader9.bin.acroread. Если вы спросите, а почему файл не называется usr.bin.acroread? Ответ: /usr/bin/acroread это shell скрипт, который после различных проверок всё равно запускает /opt/Adobe/Reader9/bin/acroread

2) Создайте скрипт 0strace_program и подправьте его под вашу программу, который запустит strace с нужными параметрами.

#!/bin/bash
# Новая версия статьи и скрипта расположена по адресу
# http://vasilisc.com/rules_apparmor
# способ 1
strace -f -e trace=open,access,execve -o 0strace.log /usr/bin/acroread
# способ 2
#sudo strace -f -e trace=open,access,execve -o 0strace.log -p $(pidof -s google-chrome)
exit 0

Под strace запустится программа, в данном случае /usr/bin/acroread и начнётся журналирование в файл 0strace.log. На этом этапе необходимо как можно полнее пользоваться программой — открывать всевозможные окна, нажимать кнопки. Обязательно открыть пункты связанные с печатью, шрифтами, пробежаться в окне настроек программы, открывать и сохранять файлы. Возможно, вы увидите некоторые настройки программы, которые захотите отключить в целях безопасности (я отключил в настройках Adobe Reader — Java и доступ в Интернет). Чем полнее вы исследуете программу, тем меньше работы дальше. Закройте исследуемую программу, в данном случае Adobe Reader.

3) Посмотрите получившийся отчёт от strace в файле 0strace.log, он большой и содержит строки вида:
17353 open(«/dev/null», O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
17353 execve(«/bin/pwd», [«/bin/pwd»], [/* 46 vars */]) = 0
17349 access(«/etc/ld.so.preload», R_OK) = -1

В них мы видим какие и как вызывались сторонние команды (execve(«/bin/pwd») и к каким файлам происходило обращение
(access(«/etc/ld.so.preload», R_OK)).

4) Нужно большой файл 0strace.log чуток причесать и отсортировать строки. В помощь создадим скрипт 1clearlog. Запустите его и скрипт создаст файл 1strace_clear.log

#!/bin/bash
# Новая версия статьи и скрипта расположена по адресу
# http://vasilisc.com/rules_apparmor
cat 0strace.log | cut -d»=» -f1 | cut -d»(» -f2 | sort -u > 1strace_clear.log
exit 0

5) Теперь открываем 1strace_clear.log и файл профиль opt.Adobe.Reader9.bin.acroread (см. пп 1). В помощь возьмём таблицу режимов доступа, используемых в профилях AppArmor.

Разрешение на чтение файла.
Разрешение на запись файла.
Дописывание файла

Ограниченное разрешение на запись файла – процесс может только дописывать
информацию в файл (полезно для лог-файлов!).

Выполнение под профилем
Новый процесс запускается под своим профилем. Если профиля нет, то запуск
процесса запрещен.
Выполнение под профилем с
очисткой окружения

Новый процесс запускается под своим профилем, при этом AppArmor очищает
переменные окружения. Если профиля нет, то запуск процесса запрещен.

Наследование режима
выполнения
Новый процесс будет запущен под профилем текущего.
Отображение исполняемого
файла в память
Разрешение отображения файла в память и его запуска.
Создание ссылки

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

Блокировка
Разрешение выполнения блокировки файла.
Неконтролируемое выполнение
Новый процесс никак не контролируется AppArmor.
Неконтролируемое выполнение
с очисткой окружения
Новый процесс никак не контролируется, но AppArmor очищает переменные окружения.

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

Любое количество любых знаков, за исключением символа каталога (/)
Любое количество любых знаков, включая символ каталога (/)
Любой одиночный знак, за исключением символа каталога (/)
Один из знаков: a, d или e
Один из знаков: a, b или c
Либо ab, либо cd

При использовании шаблонов * и ** возникают некоторые нюансы, которые могут оказаться полезными на практике.
Продемонстрируем их на примере:
/tmp/* – все файлы в каталоге /tmp
/tmp/*/ – все каталоги в каталоге /tmp
/tmp/** – все файлы и каталоги по иерархии ниже каталога /tmp
/tmp/**/ – все каталоги по иерархии ниже каталога /tmp

6) Пользуясь советами, начинаем формировать правила для Adobe Reader в файле opt.Adobe.Reader9.bin.acroread

    a) AppArmor активно использует понятие шаблонов профилей, которые находятся в каталоге /etc/apparmor.d/abstractions/. Например, часто программы используют в своей работе шрифты и, естественно, к ним обращаются, например, читают файлы в /etc/fonts/. Чтобы не создавать каждый раз правила разрешающие использовать шрифты, лучше подключить шаблон профиля шрифтов, в котором уже находятся нужные правила. Подключение шаблона профиля шрифтов осуществляется директивой #include в файле opt.Adobe.Reader9.bin.acroread. Приведу еще пример, если вы видите в файле 1strace_clear.log, что иследуемая программа использует файлы Gnome, то проще не мучаться с составлением своих правил, а
    подключить #include .

b) Если вы видите строки вида
«/bin/cat», [«cat», «/opt/Adobe/Reader9/Reader/AcroVe». ], [/* 47 vars */])
«/bin/ls», [«/bin/ls», «-l», «acroread»], [/* 47 vars */])
то это говорит о том, что исследуемая программа вызывала их и нужно разрешить выполнение данных программ. Поэтому в файл
opt.Adobe.Reader9.bin.acroread добавляем разрешающие правила /bin/cat rmix, /bin/ls rmix,

Что такое rmix? Смотрим таблицу режимов доступа — даём право прочесть файл (r), даём право отобразить исполняемый файл в память (m), из всех прав запуска выбираем «Новый процесс будет запущен под профилем текущего» (ix). И получаем rmix.

Рекомендую для бинарных программ, которые располагаются в каталогах /bin/, /usr/bin/ использовать права доступа rmix. Многие зададутся вопросом: А может не расписывать для каждого вызванного бинарника из /bin/ правила, а сделать одно правило /bin/* rmix и тем самым разрешить вызвать любой бинарник. Ответ один: это ваш профиль вашей программы, будет ли он строгим (более безопасным) или чуток вольготным (менее безопасным) — решать вам и только вам!

c) Как вы знаете программы в Linux хранят свои настройки в домашней директории пользователя, поэтому неудивительно, если вы встретите в файле 1strace_clear.log строки вида
«/home/ваш_профиль/.adobe/Acrobat/9.0/Collab/OfflineDocs», O_RDONLY)
«/home/ваш_профиль/.adobe/Acrobat/9.0/Preferences/mozilla/prefs.js», O_WRONLY|O_CREAT|O_EXCL, 0644)
Эти две строки прямо дают понять что часть файлов нужна на чтение. Взгляните на слово O_RDONLY — это же открытие файла на только-на-чтение ReaD ONLY. А часть файлов открывается на запись — об этом намекает параметр O_WRONLY и права доступа 0644.

7) Объединяя мощь шаблонов профилей (см пп. 6а), и, прописывая правила доступа к файлам и каталогам, мы создаем черновик профиля opt.Adobe.Reader9.bin.acroread. Время проверить наши правила! Так как мы вручную правим файл профиля opt.Adobe.Reader9.bin.acroread, то нужно перезапустить AppArmor и начать ловить в журнале сообщения, если мы что-то упустили.
sudo /etc/init.d/apparmor reload && tail -f /var/log/syslog
После перезапуска AppArmor будьте внимательны к выводимым им сообщениям. Запустите исследуемую программу, в данном случае Adobe Reader и следите за появляющимися сообщениями от команды tail -f /var/log/syslog. Если вы верно и полно создали правила, то строк вида apparmor=»ALLOWED» profile=»/opt/Adobe/Reader9/bin/acroread»
больше не должно появляться. Если строки все же появляются, то пользуясь этой информацией, уточните правила и снова
sudo /etc/init.d/apparmor reload && tail -f /var/log/syslog .

8) Поработайте в complain режиме с программой некоторое время. Отслеживайте программой tail -f /var/log/syslog сообщения. Через
некоторое время можно решиться перейти из обучающего complain режима в рабочий enforce режим. Перейдите в каталог с профилями AppArmor (в Ubuntu это каталог /etc/apparmor.d/) и скомандуйте enforce opt.Adobe.Reader9.bin.acroread

9) Поздравляю! Создано правило для хронически уязвимой программы и профиль используется в рабочем режиме. Теперь AppArmor держит программу в жестком каркасе из которого «ни влево, ни вправо, прыжок на месте — расстрел».

Создание профиля браузера Opera в AppArmor

Выше мы описали этапы создания профиля Adobe Reader в AppArmor, но Adobe Reader хоть и имеет хронические проблемы с безопасностью, но не является сетевой. А с помощью AppArmor желательно защищать как раз сетевые программы, ведь через них, чаще всего, возможно проникновение на ваш компьютер. Вот на примере браузера Opera мы снова поучимся создавать профиль AppArmor. А почему скажете к браузеру Опера? Ну во-первых, для браузеров Firefox и Chromium уже есть готовые профили в Ubuntu, к Google Chrome профиля нет, но Chromium это тот же Chrome и можно взять его профиль и допилить.

1) Перейдите в каталог с профилями AppArmor (в Ubuntu это каталог /etc/apparmor.d/). Сделаем заготовку профиля Opera в AppArmor командой aa-autodep /usr/bin/opera . Создастся профиль usr.bin.opera в обучающем режиме complain.

2) Нам снова понадобится скрипт 0strace_program, подправьте его под запуск Opera /usr/bin/opera. Запустите скриптом Opera через strace и, как уже писалось выше, исследуйте Opera вдоль и поперёк. Чем тщательнее будете исследовать Opera, тем проще будет потом составить разрешающие правила.

3) Скриптом 1clearlog очистите вывод strace и получите файл 1strace_clear.log.

4) Откройте 1strace_clear.log и полупустой профиль Opera usr.bin.opera. Начнём формировать правила:

    а) Строки вида
    «/dev/null», O_WRONLY|O_CREAT|O_TRUNC, 0666)
    «/dev/urandom», O_RDONLY)
    превращаем в правила
    /dev/null rwk,
    /dev/urandom rk,
    Так как «/dev/null», O_WRONLY|O_CREAT|O_TRUNC, 0666) намекает на необходимость чтения-записи — вот и даём права читать (r), писать (w), ставить блокировку (k). А строка «/dev/urandom», O_RDONLY говорит, что нужно только чтение (r) и блокировка (k).

б) Строки вида
«/bin/vim», X_OK)
«/bin/xemacs», X_OK)
говорят, что соответствующие программы были запущены для работы. Даём права rmix — читать и блокировать (rk), отображать в память (m), запускаться (ix):
/bin/vim rkmix,
/bin/xemacs rkmix,
/usr/bin/opera rkmix,

в) Когда видим /etc/fonts/, /var/cache/fontconfig/, то лучше не писать конструкций вида /etc/fonts/** r, а применить шаблон #include , который содержит нужные разрешающие правила для шрифтов.

г) Увидев, что Opera использует различные подкаталоги в вашем домашнем каталоге:
«/home/vasilisc/.gtk-2.0/2.10.0/engines/libqtcurve.la», F_OK)
«/home/vasilisc/.icons/redglass/cursors/fleur», O_RDONLY)
«/home/vasilisc/.kde/share/apps/Opera/toolbar/Opera.png», R_OK)
«/home/vasilisc/.local/share/icons/hicolor/», R_OK)
«/home/vasilisc/.opera/autoupdate.ini», O_RDONLY)
Я принял решение дать полный доступ rwk на мой домашний каталог, так как право читать (r) всё равно нужно дать — ведь я хочу открывать Оперой сохраненные страницы, а права записи тоже нужны, но на определенные каталоги. Вы можете написать свои более строгие правила и разрешить только на необходимые подкаталоги. Решая дать полный доступ в домашний каталог, пишу в профиле конструкцию:
owner @/** rwk,
owner @ r,

д) Любая программа использует библиотеки и, естественно, будут использоваться каталоги и файлы вида
/lib/libc.so.6
/lib32/libpng12.so.0
/usr/lib/locale/locale-archive

Применяем шаблон #include , который содержит нужные разрешающие правила для библиотек.

е) Программа создает временные файлы в каталогах
/var/tmp/
/tmp/
и нужно дать возможность создавать и удалять файлы во временных каталогах. Применяем шаблон #include , который содержит нужные разрешающие правила для временных каталогов.

ж) Для Gnome и KDE нужно добавить шаблоны

#include
#include

Это добавит разрешаюшие правила для таких каталогов как /usr/share/icons/

з) Упоминание о /proc/, заставляет добавить нас правила
/proc/** r,
/proc/ r,

и) Браузер Opera должен иметь доступ с сетевой подсистеме. Добавим следующие строки в профиль:
network inet stream,
network inet6 stream,
@/[0-9]*/net/if_inet6 r,
@/[0-9]*/net/ipv6_route r,

Удалить AppArmor

Если вы всё таки решили не мучаться с правилами, которые позволят улучшить безопасность и понимаете что делаете, то можно удалить AppArmor. Помните! Правила AppArmor — это дополнительный карсет для программ и просто одних прав доступа бывает не достаточно.
Но контролируя ситуацию, скрепя сердце вводите
sudo apt-get purge apparmor
И перезагрузка.

Дата последней правки: 2013-07-06 11:10:10

AppArmor

AppArmor — это реализация Модуля безопасности линукс по управлению доступом на основе имен. AppArmor ограничивает отдельные программы набором перечисленных файлов и возможностями в соответствии с правилами Posix 1003.1e.

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

Для установки пакета apparmor-profiles наберите в терминале:

sudo apt-get install apparmor-profiles

Профили AppArmor имеют два режима выполнения:

Фиксации/Обучения: нарушения профиля разрешаются и сохраняются в журнале. Полезно для тестирования и разработки новых профилей

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

Использование AppArmor

Пакет apparmor-utils содержит утилиты командной строки, которые можно использовать для изменения режима выполнения AppArmor, поиска статуса профиля, создания новых профилей и т.п.

1. apparmor_status используется для просмотра текущего статуса профиля AppArmor.

sudo apparmor_status

2. aa-complain переводит профиль в режим обучения (complain).

sudo aa-complain /path/to/bin

3. aa-enforce переводит профиль в режим ограничений (enforce).

sudo aa-enforce /path/to/bin

4. Профили AppArmor расположены в каталоге /etc/apparmor.d. Его можно использовать для управления режимом всех профилей. Введите следующую команду для перевода всех профилей в режим обучения:

sudo aa-complain /etc/apparmor.d/*

Перевод всех профилей в режим ограничений:

sudo aa-enforce /etc/apparmor.d/*

5. Команда apparmor_parser используется для загрузки профиля в ядро. Она также может использоваться для повторной загрузки загруженного профиля при использовании опции ‘-r’. Для загрузки введите:

cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a
cat /etc/apparmor.d/profile.name | sudo apparmor_parser -r

6. /etc/init.d/apparmor служит для перезагрузки всех профилей:

sudo /etc/init.d/apparmor reload

7. Директория /etc/apparmor.d/disable может использоваться совместно с опцией apparmor_parser -R для отключения профиля.

sudo ln -s /etc/apparmor.d/profile.name /etc/apparmor.d/disable/ sudo apparmor_parser -R /etc/apparmor.d/profile.name

Для активации отключенного профиля удалите символическую ссылку на профиль в /etc/apparmor.d/disable/. Затем загрузите профиль используя опцию ‘-a’.

sudo rm /etc/apparmor.d/disable/profile.name cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a

8. AppArmor можно отключить, а модуль ядра выгрузить следующей командой:

sudo /etc/init.d/apparmor stop sudo update-rc.d -f apparmor remove

9. Для повторной активации AppArmor введите:

sudo /etc/init.d/apparmor start sudo update-rc.d apparmor defaults

Замените profile.name на имя вашего профиля, которым вы хотите управлять. Также необходимо заменить /path/to/bin/ на реальный путь выполненяемого файла. Например, для команды ping используйте /bin/ping

Профили

Профили AppArmor — это простые текстовые файлы, которые расположены в /etc/apparmor.d/. Файлы профиля называются соответственно полному пути до исполняемого файла, которым они управляют, с заменой символа «/» на «.». Например /etc/apparmor.d/bin.ping — это профиль AppArmor для команды /bin/ping.

Существует два основных типа правил, используемых в профиле:

1. Записи путей (Path entries): которые описывают к каким файлам приложение имеет доступ в файловой системе. 2. Записи разрешений (Capability entries): определяют какие права ограничиваемый процесс имеет право использовать.

В качестве примера посмотрим /etc/apparmor.d/bin.ping:

#include /bin/ping flags=(complain) < #include #include #include capability net_raw, capability setuid, network inet raw, /bin/ping mixr, /etc/modules.conf r, >

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

/bin/ping flags=(complain): путь к программе, управляемой профилем, также устанавливающий режим обучения.

capability net_raw,: разрешает приложению доступ к возможностям CAP_NET_RAW Posix.1e.
/bin/ping mixr,: разрешает приложению доступ на чтение и выполнение файла.

После редактирования файла профиля, он должен быть перезагружен. Для детальной информации обратитесь к разделу Использование AppArmor

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

1. Разработка плана тестирования: Попробуйте подумать о том как приложение будет выполняться. План тестирования стоит разделить на маленькие тестовые блоки. Каждый тестовый блок должен иметь краткое описание и перечень шагов выполнения. Некоторые стандартные тестовые блоки:

Запуск программы.
Остановка программы.
Перезагрузка программы.
Тестирование всех команд, поддерживаемых сценарием инициализации.

2. Создание нового профиля: Используйте aa-genprof для создания нового профиля. Команда в терминале:

sudo aa-genprof executable
sudo aa-genprof slapd

3. Чтобы получить ваш новый профиль в составе пакета apparmor-profiles, зарегистрируйте проблему в Launchpad для пакета AppArmor:

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

Обновление профилей

Когда программа ведет себя неправильно, проанализируйте сообщения отправленные в файлы журналов. Программа aa-logprof может быть использована для сканирования файлов журнала AppArmor для проверки сообщений, их рассмотрения (анализа) и обновления профилей. Команда в терминале:

sudo aa-logprof

Ссылки

Смотрите AppArmor Administration Guide для дополнительных опций настройки.

Для уточнения использования AppArmor с другими выпусками Ubuntu смотрите страницу AppArmor Community Wiki.

Страница OpenSUSE AppArmor — еще одно знакомство с AppArmor.

Хорошее место для вопросов поддержки AppArmor и вовлечения в сообщество Ubuntu Server — IRC канал #ubuntu-server на freenode.

  • Сайт
  • Об Ubuntu
  • Скачать Ubuntu
  • Семейство Ubuntu
  • Новости
  • Форум
  • Помощь
  • Правила
  • Документация
  • Пользовательская документация
  • Официальная документация
  • Семейство Ubuntu
  • Материалы для загрузки
  • Совместимость с оборудованием
  • RSS лента
  • Сообщество
  • Наши проекты
  • Местные сообщества
  • Перевод Ubuntu
  • Тестирование
  • RSS лента

© 2018 Ubuntu-ru — Русскоязычное сообщество Ubuntu Linux.
© 2012 Canonical Ltd. Ubuntu и Canonical являются зарегистрированными торговыми знаками Canonical Ltd.

Введение в Ubuntu Apparmor и настройку профилей

Мануал

Автор cryptoparty На чтение 5 мин Опубликовано 04.12.2018

AppArmor является мандатной системой контроля доступа или MAC.

Он использует модуль безопасности Linux для ограничения программ.

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

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

В Ubuntu приложение AppArmor установлено и включено по умолчанию.

Профили apparmor загружаются при запуске системы.

AppArmor работает в следующих двух типах режимов профиля:

  1. Enforce – В режиме Enforce система начинает применять правила и сообщать о попытках нарушения в syslog или auditd (только если auditd установлен), и операция не будет разрешена.
  2. Complain – режиме Complain система не применяет никаких правил. Она будет только регистрировать попытки нарушения.

Дополнительные профили можно найти в пакете apparmor-profiles.

Просмотр статуса Apparmor

Вы можете просмотреть текущее состояние apparmor и всех загруженных профилей, как показано ниже:

$ sudo apparmor_status apparmor module is loaded. 5 profiles are loaded. 5 profiles are in enforce mode. /sbin/dhclient /usr/lib/NetworkManager/nm-dhcp-client.action /usr/lib/connman/scripts/dhclient-script /usr/sbin/mysqld /usr/sbin/tcpdump 0 profiles are in complain mode. 2 processes have profiles defined. 2 processes are in enforce mode. /sbin/dhclient (585) /usr/sbin/mysqld (799) 0 processes are in complain mode. 0 processes are unconfined but have a profile defined.

Если мы проверим вышеприведенный вывод, мы увидим, что 5 профилей находятся в режиме Enforce.

Он также указывает на то, что в настоящее время выполняются два процесса в режиме принудительного исполнения (из-за профилей).

Например, /sbin/dhclient с PID 585 работает в режиме enforce

Изменить режим профиля

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

apt-get install apparmor-utils

Используйте команду aa-complain, чтобы настроить профиль в режиме complain.

Например, для включения режима complain для mysqld выполните следующие действия.

$ sudo aa-complain /usr/sbin/mysqld Setting /usr/sbin/mysqld to complain mode.

Теперь, когда вы выполните apparmor_status, вы увидите mysqld в режиме complain

$ sudo apparmor_status apparmor module is loaded. 5 profiles are loaded. 4 profiles are in enforce mode. /sbin/dhclient /usr/lib/NetworkManager/nm-dhcp-client.action /usr/lib/connman/scripts/dhclient-script /usr/sbin/tcpdump 1 profiles are in complain mode. /usr/sbin/mysqld 2 processes have profiles defined. 1 processes are in enforce mode. /sbin/dhclient (585) 1 processes are in complain mode. /usr/sbin/mysqld (799) 0 processes are unconfined but have a profile defined.

Вы можете изменить профиль обратно в режим enforce, используя команду aa-enforce, как показано ниже.

$ sudo aa-enforce /usr/sbin/mysqld Setting /usr/sbin/mysqld to enforce mode.

Файлы профилей AppArmor

Профили AppArmor – это текстовые файлы, расположенные в каталоге /etc/apparmor.d/.

Файлы названы по имени полного пути к исполняемому файлу, но они заменяют «/» на «.».

Например, команда ping находится в /bin/ping.

Аналогичный файл профиля AppArmor будет называться bin.ping

Ниже приведен файл профиля Apparmor для usr.sbin.mysqld. /usr/sbin/mysqld – это абсолютный путь бинарника, для которого применяется этот профиль.

# cat usr.sbin.mysqld # vim:syntax=apparmor # Last Modified: Tue Jun 19 17:37:30 2007 #include /usr/sbin/mysqld < #include #include #include #include #include capability dac_override, capability sys_resource, capability setgid, capability setuid, network tcp, /etc/hosts.allow r, /etc/hosts.deny r, /etc/mysql/*.pem r, /etc/mysql/conf.d/ r, /etc/mysql/conf.d/* r, /etc/mysql/*.cnf r, /usr/lib/mysql/plugin/ r, /usr/lib/mysql/plugin/*.so* mr, /usr/sbin/mysqld mr, /usr/share/mysql/** r, /var/log/mysql.log rw, /var/log/mysql.err rw, /var/lib/mysql/ r, /var/lib/mysql/** rwk, /var/log/mysql/ r, /var/log/mysql/* rw, /var/run/mysqld/mysqld.pid rw, /var/run/mysqld/mysqld.sock w, /run/mysqld/mysqld.pid rw, /run/mysqld/mysqld.sock w, /sys/devices/system/cpu/ r, # Site-specific additions and overrides. See local/README for details. #include >

В файле профиля комментарии всегда идут с знаком #. #include строки загружают файл.

Ниже приведены различные типы правил, которые используются в профилях.

  • Элементы пути. Это информация о файлах, к которым приложение имеет доступ.
  • Записи Capability : определяет привилегии, которые разрешены ограниченному процессу.
  • Сетевые записи: определяет тип подключения. Например: tcp. Для сети пакетного анализатора может быть raw или packet и т. д.

Внутри фигурных скобок <> у нас есть другие операторы include, а также включает разрешения / режимы доступа [read (r) / write (w) / execute (x) (k) lock (требуется r или w, в AppArmor 2.1 и более поздняя версия)], чтобы различные файлы и каталоги, которые включают регулярное выражение, включающее агенты include с фигурными фигурными скобками <>, помогают загружать компоненты профилей Novell AppArmor.

Отключение AppArmor

# /etc/init.d/apparmor stop * Clearing AppArmor profiles cache [OK]

Выполнение указанной команды приведет к очистке кеша профилей.

Чтобы отключить настройки профиля, выполните следующую команду.

# /etc/init.d/apparmor teardown * Unloading AppArmor profiles [OK]

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

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

Поддержать нас

  • Аудит ИБ (49)
  • Вакансии (12)
  • Закрытие уязвимостей (110)
  • Книги (27)
  • Мануал (2 359)
  • Медиа (66)
  • Мероприятия (39)
  • Мошенники (23)
  • Обзоры (831)
  • Обход запретов (34)
  • Опросы (3)
  • Скрипты (116)
  • Статьи (360)
  • Философия (124)
  • Юмор (18)

Наш Telegram

Социальные сети
Поделиться

Anything in here will be replaced on browsers that support the canvas element

  • �� Каковы различные форматы сертификатов? 27.10.2023

Цифровые сертификаты могут использоваться для различных целей. Они могут использоваться для защиты соединений с веб-сайтами, для шифрования сообщений электронной почты или для проверки личности пользователя. Выбор правильного формата сертификата необходим для обеспечения безопасности и сохранности данных. Когда речь идет о различных форматах сертификатов, важно выбрать тот, который соответствует вашим потребностям Выберите формат сертификата, совместимый с […]

Преобразование файла PFX (PKCS #12) в формат PEM (Privacy Enhanced Mail) достаточно просто на Linux и Unix-подобных системах. В этой статье мы рассмотрим, как преобразовать файл сертификата в формате PFX в файл PEM с помощью OpenSSL из командной строки. Что такое файл PFX? PFX (также PKCS#12) – это формат файла, содержащего сертификат(ы) и закрытый(ые) ключ(ы), […]

Одним из основных нововведений, появившихся в Podman, стала возможность запуска контейнеров без прав root. С точки зрения безопасности это было существенным улучшением, поскольку потенциально скомпрометированный контейнер, запущенный от имени root, представляет собой угрозу безопасности для хост-системы. Чтобы добиться аналогичного поведения, последние версии Docker поддерживают запуск демона docker в пользовательском контексте. �� Почему процессы в контейнерах […]

Small Form Factor Pluggable (SFP) – это компактный приёмопередатчик, который устанавливается в SFP порт коммутатора Ethernet. Модуль используется для присоединения платы сетевого устройства к оптическому волокну или витой паре. Модули SFP заменили устаревшие модули GBIC благодаря своим миниатюрным размерам. Это преимущество в размерах позволяет им эффективно работать в ограниченных сетевых средах, обеспечивая быстрый обмен данными […]

Давайте поговорим о классификации вредоносных программ. Когда антивирусная программа или средство защиты от вредоносного ПО обнаруживает что-то потенциально вредоносное, она использует определенный формат, чтобы помочь вам или другим специалистам понять, с какой именно угрозой вы имеете дело. Формат может выглядеть примерно так: Type:Platform/Family.Variant!Suffixes Это не всегда будет выглядеть именно так, поскольку, как вы помните, не […]

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

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