Apparmor ubuntu не запускается

Обновлено: 07.07.2024

Надо ли держать Apparmor на десктопе? Что он реально дает, помимо периодического увеличения времени загрузки системы в 2 раза?

Объясните, плиз, че ему надо?!

Профиль:

Т.е. мне совершенно НЕ хочется:

  1. После установки системы анализировать какие пакеты установились, искать / писать для всех них правила и надеятся, что я все учел и ничего не упустил.
  2. Самостоятельно руками писать правила для всего ПО, которое я поставлю дополнительно: должна быть база данных этих правил.

Какая из двух систем позволяет избежать двух вышеозначенных проблем?

Допиливают ли там профили apparmor для софта? Хотя бы для того же Firefox?

В openSUSE большинство профилей добавлены «на отвали». Т.е в /usr/share/apparmor/extra-profiles и к реальности дистрибутива имеют отношение чуть меньше, чем никакого. Профиль для уже упомянутого Firefox вообще не в тот путь смотрит.

Тут как-то не нашлось у меня. А чтобы скачать триал дистрибутива и посмотреть самому - это аж целую учетку надо создавать.

ZenitharChampion , ты вроде упарываешься в корпоративную сусю дома?

. Если ее попробовать убрать, не будет ли угрозы безопасности системы? Или можно решить проблему как-то по-другому?

Кто разбирается в apparmor или selinux, не нашел в гугле адекватного мана с примерами и подробным описанием синтаксиса.
Нужно.
Запрет голосовых вызовов для телеги и подобных.
Запрет делать скрины.
Запрет на доступ к информации о системе.

Перезапускаю сервис, все равно

Подскажите, а составные файловые системы используемые в LiveCD/USB с AppArmor не работают?

Собственно, впервые решил попробовать использовать MAC на домашнем компьютере, ибо нет желания, чтобы браузер и другие приложения с доступом в сеть имели возможность читать что угодно в /home/ и потенциально могли стащить\стереть ключи, памятки, заготовки и т.п.. AppArmor выглядит идеальным вариантом, ибо очень давно с ним знаком, да и особо тонкая настройка не нужна, а более простые системы потенциально ненадёжны(?).

Составил профиль для Firefox, запустил и сразу обнаружил, что при некоторых действиях нагрузка на не самый слабый процессор подскакивает до 30-50%. Вот в порядке убывания нагрузки:

  • Медиа и динамичные сайты
  • Загрузка страницы
  • Прокрутка страницы

Журналы пустые, никаких предупреждений и запрещённых запросов не наблюдаю, более того - нагрузка не уменьшается в претензионном(complain) режиме.

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

Встроенный Unix DAC слишком топорный и вынуждает создавать по пользователю на каждое приложение, что неприемлемо(да и корень не защищает никак), соответственно, вопросы актуальны в любом случае.

Пользователи, которые любят экспериментировать со своей операционной системой время от времени сталкиваются с ошибкой загрузки, когда система выводит приглашение ввода BusyBox с initramfs. Эта ошибка означает, что ядро не может загрузить корневой раздел, та файловая система, к которой у вас есть доступ из этого режима не имеет ничего общего с вашей системой. Это содержимое образа initramfs, которое содержит только самые необходимые компоненты, используемые ядром для загрузки системы.

Почему Linux не загружается дальше initramfs


1. Неверный корневой раздел в загрузчике

В данном случае она сообщает, что не может найти раздел /dev/sda10:

Alert: /dev/sda10 does not exist. Dropping to a shell


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

ls /dev/ | grep sd


В этом окружении есть BusyBox, а значит есть большинство утилит Unix. Вы можете примонтировать каждый из этих разделов с помощью команды mount и узнать где находится ваш новый корневой раздел, например:

mkdir /mnt
mount /dev/sda5 /mnt
ls

Вы также можете узнать здесь же UUID данного раздела диска, для этого выполните:


В данном случае, корневой раздел имеет имя /dev/sda5. Именно это имя можно передать ядру в конфигурации загрузчика Grub, а можно UUID, но если в этом нет крайней необходимости, то короткое имя использовать гораздо проще. Надо перезагрузить компьютер, в меню Grub выбрать нужную загрузочную запись и нажать клавишу E:


Далее найти пункт, начинающейся со слова linux и в нём параметр root. Его значение вместе со словом UUID надо стереть, а вместо него прописать имя корневого раздела:


После этого система загрузится, а вам останется только создать новый конфигурационный файл grub с помощью команды:

2. Повреждённая файловая система

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

The root filesystem on /dev/sda5 requires a manual fsck

Вы можете прямо здесь же попытаться восстановить файловую систему. Для этого выполните:

Здесь /dev/sda5 - это корневой раздел, его нужно заменить на свой. Опция -y указывает утилите, что на все вопросы надо ли исправлять блок нужно отвечать утвердительно. После успешного восстановления надо перезагрузить компьютер и попытаться загрузить систему снова.

Выводы

Нет похожих записей


Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

AppArmor - это система управления доступом к файлам на основе имен (Mandatory Access Control). Недавно мы рассматривали еще одну реализацию такой системы - SELinux. Apparmor работает подобным способом, на основе модуля ядра Linux Security (LSM). Но он сильно отличается от SELinux и в первую очередь своей простотой. Здесь нет никаких ролей и маркеров. Есть только программы и список файлов, к которым они могут иметь доступ. Если SELinux используется по умолчанию в Red Hat, от Apparmor, установлен и активирован по умолчанию в Ubuntu.

В этой статье мы рассмотрим как выполняется настройка Apparmor в Ubuntu, как контролировать доступ приложений к файлам, а также как создавать свои файлы профилей для новых приложений.

Немного теории

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

Профили могут работать в двух режимах:

  • Enforce - ядро гарантирует соблюдение правил, указанных в файле профиля, все нарушения блокируются, а также записываются в файл журнала, где могут быть очень легко просмотрены.
  • Complain - режим обучения, программа будет только регистрировать нарушения ничего не блокируя.

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

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

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

sudo apt install apparmor-utils apparmor-profiles

Теперь можем переходить к работе с Apparmor.

Настройка Apparmor в Ubuntu

Перед тем как переходить непосредственно к настройке Apparmor, давайте посмотрим ее состояние. Для этого выполните:

apparmor1

apparrmor

Из снимка видно, что сейчас загружено 57 профилей, 20 из которых находятся в принудительном режиме (enforce), а 37 в режиме обучения.

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

Как видите, профилей не так уж много, но на самом деле их есть больше. Мы установили дополнительные профили в пакете apparmor-profiles, все они находятся в папке /usr/share/doc/apparmor-profiles/extras/. Посмотрите ее содержимое:

apparmor3

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

Имя профиля представляет из себя полный путь к файлу программы в котором наклонная черта заменена на точку, например: usr.bin.skype или usr.bin.man.

Давайте, для примера, скопируем профиль для утилиты man:

sudo cp /usr/share/doc/apparmor-profiles/extras/usr.bin.man /etc/apparmor.d/

Смотрим состояние и видим, что теперь у нас есть такой профиль.

apparmor4

Для переключения режима для профиля используются две команды aa-enforce и aa-complain. Давайте включим принудительное выполнение для нашего профиля:

sudo aa-enforce man

А чтобы вернуться в режим обучения наберите:

sudo aa-comlain man

Но проверить как это работает сейчас мы не можем, man просто так не станет нарушать правила. Давайте скопируем утилиту cp вместо man и проверим, будет ли она копировать файлы в корневом каталоге:

sudo touch /test
$ sudo cp /usr/bin/man /usr/bin/man1
$ sudo cp /bin/cp /usr/bin/man
$ sudo man /test /test1

apparmor5

Отказано в доступе, но как такое может быть, ведь мы выполняли команду от суперпользователя? Для Apparmor неважно root это или нет, сказано нет доступа к файлам, значит нет, и все. Возвращаем нашу man на место:

sudo cp /usr/bin/man1 /usr/bin/man
$ rm /test

Теперь смотрим лог Apparmor, и видим в конце две записи, об отказе в доступе:

apparmor6

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

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

Создать профиль для AppArmor не так сложно как кажется на первый взгляд. Для этого в системе существует несколько утилит. Но для начала давайте рассмотрим синтаксис файла, чтобы было понятно с чем мы имеем дело. Возьмем опять же файл от man:

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

/адрес/файла права

Доступны такие права:

  • r - разрешить чтение
  • w - разрешить запись
  • a - разрешить запись в конец файла
  • px - разрешить запуск новых процессов если для них есть профиль
  • Px - разрешить запуск новых процессов, если для них есть профиль и стереть переменные окружения
  • ix - разрешить запуск нового процесса под профилем текущего
  • m - разрешить загружать исполняемые файлы в память и запускать
  • l - разрешить создавать символические ссылки на исполняемые файлы
  • k - разрешить блокировать файлы
  • ux - не контролировать новые процессы
  • Ux - не контролировать новые процессы и очистить переменные окружения.

Этих полномочий вполне достаточно, для управления правами, но кроме списка файлов и их полномочий, файл профиля содержит еще директивы include и capability.

include позволяет включать другие файлы с разрешениями, они находятся в папке /etc/apparmor.d/abstractions/. Это такие же части профиля, со списком файлов и правами доступа. Они облегчают создание новых профилей.

С capability все немного сложнее. Программа может обращаться к ядру с помощью системных вызовов, эти вызовы Apparmor тоже контролирует. Посмотреть все доступные вызовы вы можете командой man capabilities. В нашем случае мы разрешаем процессу задать свой uid и gid, то есть сменить пользователя и группу, от которого он запущен.

Есть еще папка /etc/apparrmor.d/thunables с переменными, которые могут использоваться в каждом профиле. Но с ними разберемся по ходу. Теперь вы готовы к тому, чтобы создать профиль apparmor. Для примера будем создавать новый профиль для утилиты free. Напомню, что эта утилита показывает доступную оперативную память.

Сначала выполните такую команду, чтобы инициализировать шаблон профиля:

sudo aa-autodep free

apparmor7

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

sudo aa-genprof free

apparmor8

Программа говорит, что нужно запустить программу в отдельном окне терминала, и выполнить все действия, которые она может делать, затем нажать S. Так и поступаем:

apparmor9

Готово, теперь нажимаем F, чтобы завершить работу утилиты. Дальше включаем принудительный режим:

sudo aa-enforce free

И проверяем работоспособность утилиты:

apparmor12

Если вы меняли профиль вручную, то его необходимо перезагрузить, чтобы изменения вступили в силу, для этого используйте команду:

sudo aa-parser имя_профиля -a

Перезагрузить все профили можно командой:

sudo service apparmor reload

Вот и все, настройка apparmor в Ubuntu 16.04 завершена.

Отключение Apparmor

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

Очищаем кеш профилей и останавливаем сервис управления AppArmor:

sudo service apparmor stop

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

sudo service apparmor teardown

Вот теперь профили выгружены.

Выводы

Хотя и осталось еще много белых пятен, настройка apparmor теперь не кажется вам такой сложной. Мы не смогли затронуть все, потому что это очень обширная тема, но я старался рассказать основы, которые позволят вам дальше самим найти информацию. Если у вас остались вопросы, спрашивайте в комментариях!

Я слышу много разговоров о apparmor, я хочу знать следующее:

  • Что такое apparmor?
  • Как работает apparmor?

3 ответа

Apparmor - это система обязательного контроля доступа (или MAC). Он использует улучшения ядра LSM, чтобы ограничить программы определенными ресурсами. AppArmor делает это с профилями, загруженными в ядро ​​при запуске системы. Apparmor имеет два типа режимов профиля: принудительное применение и жалоба. Профили в принудительном режиме обеспечивают соблюдение правил этого профиля и сообщают о попытках нарушения в syslog или же auditd , Профили в режиме жалоб не применяют никакие правила профиля, только регистрируют попытки нарушения.

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

Вы можете установить apparmor-profiles запустив sudo apt-get install apparmor-profiles ,

Я нашел хороший пример Apparmor на форумах Ubuntu, который я переписал для этого поста.

Apparmor - это структура безопасности, которая предотвращает превращение приложений во зло. Например: если я запускаю Firefox и посещаю плохой сайт, который пытается установить вредоносное ПО, которое удалит мой home В папке Apparmor есть ограничения на Firefox, но он запрещает делать то, что я не хочу (например, доступ к моей музыке, документам и т. д.). Таким образом, даже если ваше приложение взломано, никакого вреда не может быть.

apparmor-utils Пакет содержит инструменты командной строки для настройки Apparmor. С его помощью вы можете изменить режим выполнения Apparmor, узнать статус профиля, создать новые профили и т. Д.

Это наиболее распространенные команды:

Примечание. Профили хранятся в /etc/apparmor.d/

  • Вы можете проверить статус Apparmor с sudo apparmor_status , Вы получите список всех загруженных профилей *, все профили в принудительном режиме, все профили в режиме жалоб, какие процессы определены в принудительном / жалобе и т. Д.
  • Для перевода профиля в режим жалоб вы используете sudo aa-complain /path/to/bin , где /path/to/bin это программы bin папка. Например, работает: sudo aa-complain /usr/bin/firefox переведет Firefox в режим жалоб.
  • Ты используешь sudo aa-enforce /path/to/bin для обеспечения профиля программы.
  • Вы можете загрузить все профили в режим жалоб / принудительного применения с sudo aa-complain /etc/apparmor.d/* а также sudo aa-enforce.d/* соответственно.

Для загрузки профиля в ядро ​​вы бы использовали apparmor_parser , Вы можете перезагрузить профили, используя -r параметр.

  • Для загрузки профиля используйте: cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a , который эффективно печатает содержимое profile.name в парсер Apparmor.
  • Для перезагрузки профиля вы используете -r параметр, вот так: cat /etc/apparmor.d/profile.name | sudo apparmor_parser -r
  • Для перезагрузки всех профилей Apparmor используйте: sudo service apparmor reload

Чтобы отключить профиль, на который вы ссылаетесь /etc/apparmor.d/disable/ с помощью ln как это: sudo ln -s /etc/apparmor.d/profile.name /etc/apparmor.d/disable/ затем запустите: sudo apparmor_parser -R /etc/apparmor.d/profile.name ,

Примечание: не путайте apparmor_parser -r с apparmor_parser -R ОНИ НЕ ЖЕ ВЕЩЬ!

  • Чтобы снова включить профиль, удалите символическую ссылку на него в /etc/apparmor.d/disable/ затем загрузите его, используя -a параметр. sudo rm /etc/apparmor.d/disable/profile.name cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a
  • Вы можете отключить Apparmor с sudo service apparmor stop и удалите модуль ядра, используя sudo update-rc.d -f apparmor defaults
  • Запустите Apparmor с sudo service apparmor start и загрузить модули ядра с sudo update-rc.d apparmor defaults

Профили хранятся в /etc/apparmor.d/ и названы в честь полного пути к исполняемому ими профилю, заменив '/' на '.'. Например /etc/apparmor.d/bin.ping это профиль для ping в /bin ,

В профилях используются два основных типа записей:

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

Записи возможностей определяют, какие привилегии может использовать процесс.

Давайте посмотрим на профиль для ping , находится в etc/apparmor.d/bin.ping , В качестве примера.

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

capability net_raw позволяет приложению доступ к CAP_NET_RAW Posix.1e возможность.

/bin/ping mixr позволяет приложению читать и выполнять доступ к файлу.

/etc/modules.conf r, r дает приложению права на чтение для /etc/modules.conf

Примечание. После создания / редактирования профиля необходимо перезагрузить профиль, чтобы изменения вступили в силу.

Вот список разрешений, которые вы можете использовать:

  • r - читать
  • w - записывать
  • ux - Неограниченное выполнение
  • Ux - Неограниченное выполнение - очистка среды
  • px - Дискретный профиль выполнения
  • Px - Дискретный профиль выполнить - очистить окружающую среду
  • ix - унаследовать выполнение
  • m - разрешать PROT_EXEC с mmap(2) звонки
  • l - ссылка на сайт

Руководства по Apparmor для Ubuntu 12.04 и Ubuntu 12.10

Надеюсь, что это поможет вам.

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

Читайте также: