LINUX.ORG.RU

AppArmor + Firefox = нагрузка на процессор?

 , ,


0

1

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

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

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

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

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

Вопросы: есть ли у кого-то кроме меня подобные наблюдения при использовании AppArmor? Возможно ли это как-то исправить, или проблема в самом AppArmor(а с SELinux и другими MAC такого нет)?

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

Спасибо за помощь

Без AppArmor такой нагрузки нет?

А вообще Firefox делает очень много системных вызовов. Вкладка с Youtube за секунду у меня делает около 10 тысяч вызовов, из которых около 5 тысяч — futex, ~1700 — recvmsg. Если я правильно помню, AppArmor фильтрует системные вызовы по одному. Так что чем больше системных вызовов, тем больше потребление CPU.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

Без AppArmor такой нагрузки нет?

Нет.

Если я правильно помню, AppArmor фильтрует системные вызовы по одному.

Возможно. Кажется, SELinux с подобным справляется получше, да беда в том, что проверять аналогичные системы долго. Думаю, кто-то на LOR всё же использует MAC\RBAC для пользовательских приложений.

Вот на Ubuntu, насколько я знаю, свежий профиль для Firefox есть сразу после установки. Было бы здорово поспрашивать у пользователей, как там с отзывчивостью, а то ядро собирал вручную, может ошибся в чём-то.

SM5T001 ()

наблюдения при использовании AppArmor?

Выключи это убогое поделие и забудь о нем. AppArmor это зло мешающее системе работать.

GRUB_CMDLINE_LINUX_DEFAULT="apparmor=0"
Rx0 ()
Ответ на: комментарий от anonymous

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

SM5T001 ()
Ответ на: комментарий от Deleted

Не знаю как оно там за пределами Gentoo, но

чуть менее чем всё содержимое пакета это профили apparmor для кучи программ

Это не так

Взглянем банально на синтаксис профилей. Вот у Firejail:

~/.config/firejail/app-name.config

whitelist ~/pictures/

whitelist ~/share/
read-only ~/share/

whitelist ~/dev/WebExtensions/
read-only ~/dev/WebExtensions/

whitelist ~/.cache/fish/

blacklist /mnt
blacklist /opt
А вот у AppArmor:
# vim /etc/apparmor.d/usr.lib64.firefox
/usr/lib64/firefox/firefox {
  #include <abstractions/consoles>
  #include <abstractions/dconf>
  #include <abstractions/freedesktop.org>
  #include <abstractions/gnome>
  #include <abstractions/nameservice>
  #include <abstractions/opencl-pocl>
  #include <abstractions/pulse>
  #include <abstractions/site/base>
  #include <abstractions/ssl_certs>
  #include <abstractions/user-download>

  audit deny /dev/shm/org.chromium.Chromium.* rw,
  deny /dev/ r,
  deny /home/*/translate r,
  deny /sys/devices/pci**/{config,vendor,device} r,
  deny /usr/bin/bash x,
  deny /usr/lib64/firefox/fonts/** w,
  deny /var/cache/fontconfig/ w,
  deny /{,var/}run/user/*/dconf/user w,
  deny @{HOME}/.cache/fontconfig/** w,
  deny @{HOME}/.config/dconf/user w,
  deny @{HOME}/.mozilla/systemextensionsdev/ rw,
  deny @{HOME}/.mozilla/systemextensionsdev/** rw,
.....

Кроме того, в Gentoo wiki тут не сказано, что нужно включать AppArmor в ядре(без этого он вообще не работает), ну и:

# emerge -av firejail
sys-apps/firejail-0.9.60-r1::gentoo  USE="apparmor chroot file-transfer globalcfg network overlayfs private-home seccomp suid userns whitelist -contrib -debug -test -vim-syntax -x11"

Так, например, поддержку AppArmor можно вообще выключить, но включить флагом x11 поддержку Xephyr\Xpra

SM5T001 ()

Я когда-то использовал AppArmor для изоляции Firefox, никаких проблем не было. Сейчас использую другой подход для безопасности, который возможно для вас тоже будет приемлемой заменой AppArmor. Своим ПК пользуюсь только я, но пользователей у меня 5, только одному пользователю разрешено использовать sudo, второй только для операций с деньгами, третий только для работы, четвертый для игр (пока что ни разу им не воспользовался), пятый для всего остального.

Taetricus ()
Последнее исправление: Taetricus (всего исправлений: 1)
Ответ на: комментарий от anonymous

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

Подозрения пали на браузер Brave, работающий в виртуалке KVM в режиме accel=kvm.

В другом случае наблюдал зависания и переход хоста в режим энергосбережения c4 (судя по сообщениям на экране) предположительно из виртуалки, которая осуществляла закачки с помощью httrack (возможно хитрый MITM и т.п.), из которого хост вывести не удавалось с клавы, которая реагировала только на Alt+Fn и ни на что больше.

Удалось (предположительно) победить запуском виртуалки с закачками полностью в эмуляторе в режиме accel=tcg (в таком режиме гость работает в другом более ограниченном ринге CPU и поэтому медленнее примерно раз в 100).

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

anonymous ()

ндааа...

Начинай сандбокс с загрущика для системд, желательно на асме - страуструп (пишет С++) неоднократно говорил у него релизы с бэкдорами. Неможешь - ладно, сначала apparmor для всех програм которые запускаются с самого начала. Для wayland штук 15 останется. Только потом ты сможешь делать «su root» безопасно ведь su делает DBUS & Netlink, инфа может оседать в /run. Для gdm3 & bash делай загрущик с отдельным network namespace. Не дай бог использовать ситемд для создания netw ns. Ну а далее пиши свой Firefox профиль - тебе всё равно траффик подменять будут

anonymous ()