Написание профиля firejail для браузера

Автор dr_faust, 13 ноября 2024, 14:23:55

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

dr_faust

Допустим, firefox. Иные тоже привествуются.

Если кто-то из здешних пользуется данным средством создания "песочницы", прошу поделиться опытом, указав какие именно настройки и ЗАЧЕМ прописываете.

Со стандартным профилем из пакета frejail-profile ознакомлен. В нем прямо написано, что это "болванка" для допиливания под свои нужды. Хотелось бы услышать какие именно нужды бывают и как их реализовывают в виде параметров настройки.
Devuan 4. Debian 12. LXDE.


dr_faust

#2
ChubaDuba, браузера примечательны тем, что в них нынче много разного рода изоляций и дочерних процессов. ХЗ как правильно написать, не зная принципа работы браузера. А я не знаю.

Накатал нечто такое. Прошу здешних ознакомиться и покритиковать.

#Название песочницы
name firefox-esr
#Если уже запущена, то не создавать новую, а запустить процесс в старой
join-or-start firefox-esr
#К чему имеет доступ с правами чтения и записи. Остальной хомяк не видит.
#Что такое храниться в первой директории, насколько нужно для работы приложения? И не стоит ли заменить параметром private-cache?
whitelist ${HOME}/.cache/mozilla/firefox
whitelist ${HOME}/.mozilla
whitelist <директория, в которую скачивать файлы>
#Включить и эту песочницу
apparmor
#Что-то про отключение всякого нехорошего в ядре
caps.drop all
seccomp
#Создать изолированное пространство имен
restrict-namespaces
#Разрешить трафик локально и по протоколу ipv4
protocol unix,inet
#для каждого нового запуска песочницы генерировать одноразовый
machine-id
#Отключить разную периферию и т. п.
#Аппаратные токены, виртуальную реальность, дисководы и проч.
nou2f
novideo
noprinters
notv
noinput
nodvd
no3d
#Отключить dbus. Насколько понимаю это такой интерфес для обмена информацией между приложениями в системе
nodbus
#Не давать доступа к каким-либо группам пользователя кроме основной
nogroups
#Не запускать под рутом и не повышать привилегии
nonewprivs
noroot
#Запретить доступ к /mnt,/media
disable-mnt
#Создать временные, исключительно для песочницы, ФС /dev и /tmp
private-dev
private-tmp
#Создать и скопировать из постоянной указаную директорию
private-etc firefox-esr
#Создать и скопировать из постоянной следующие исполняемые файлы.
#Список подбирал интуитивным методом тыка пока браузер не #заработал. Может что-то лишнее? Или, наоборот, еще нужно добавить?
private-bin bash,env,firefox-esr,sh,which

16 ноября 2024, 13:37:22
Еще есть некая песочника для x11. До разборки что это и как пользоваться руки не дошли.
Devuan 4. Debian 12. LXDE.

dzhoser

1. Чисто теоретически запуск в старой песочнице может перерасти в переполнение буфера. Гуглим Sandbox Escape.
2. Хранятся данные для работы и ускорения загрузки сайтов, а также профили пользователей
3. disable-mnt не запрещает доступа к /media
4. Переменные необходимо создавать для конкретных устройств. Иначе будут доступны все
Ubuntu->Linux mint->Astra Linux SE->Debian 12
Для новичков

dr_faust

Цитата: dzhoser от 16 ноября 2024, 14:39:552. Хранятся данные для работы и ускорения загрузки сайтов, а также профили пользователей
А не в ${HOME}/.mozilla ?
Цитата: dzhoser от 16 ноября 2024, 14:39:553. disable-mnt не запрещает доступа к /media
Сейчас специально проверил. Закоментировал и попытался через меню управления закладками откррыть /mnt,/media. Открылись как милые. Убрал коммент и снова попытался. "Доступ запрещен".
В то же время эта опция почему-то не описана в мане. Увидел только в общем конфиге самого firejail.
Цитата: dzhoser от 16 ноября 2024, 14:39:554. Переменные необходимо создавать для конкретных устройств. Иначе будут доступны все
Не понял о чем речь.
Devuan 4. Debian 12. LXDE.

Лия


dr_faust

Цитата: Лия от 16 ноября 2024, 23:18:41
Цитата: dr_faust от 16 ноября 2024, 14:57:27А не в ${HOME}/.mozilla ?
В .mozilla настройки, в .cache/mozilla - кэш :)
Ну я примерно понимаю, что в первой лежат настройки профиля, а во второй закадочный кэш.  Не понимаю, что в него входит. Допустим, я применю опцию private-cache  - и эта директория будет создаваться каждый раз в оперативной памяти заново, когда  запущу браузер. Вопрос. Что изменится в работе самого браузера?
Devuan 4. Debian 12. LXDE.

Лия


dr_faust

#8
Проверил опытным путем. Вроде все настройки с закладками да дополнениями на месте.
При этом постоянного кэша на 40 мб. Хотя в настроках вроде все так настроено, чтобы чистилось при закрытии браузера.

17 ноября 2024, 00:23:17
По графической песочнице. Если прописать в файл профиля
x11 xephyr
xephyr-screen 1280x720
то она запускается - если, конечно, предварительно установлен xephyr - однако только со стандартным разрешением 800х600. Т.е. вторая опция не работает. Ее надо прописывать в /etc/firejail/firejail.config
Заданное таким образом разрешение будет одинаковым для всех песочниц.
Если надо разное, то в десктоп-файле приложения  прописать нечто вроде
firejail --profile=полный путь к файлу профиля --xephyr-screen=1280x720
Странно это. firejail version 0.9.72
Devuan 4. Debian 12. LXDE.

Лия

Цитата: dr_faust от 16 ноября 2024, 13:33:21Остальной хомяк не видит.
Для этого удобно использовать private
$ LESS=+/--private=directory man firejail
Ещё у меня два профиля с отдельными хомяками для них - один для банков/госуслуг, другой для мемов с котами остального интернета :)

dr_faust

Цитата: Лия от 17 ноября 2024, 00:46:57
Цитата: dr_faust от 16 ноября 2024, 13:33:21Остальной хомяк не видит.
Для этого удобно использовать private
$ LESS=+/--private=directory man firejail
Ещё у меня два профиля с отдельными хомяками для них - один для банков/госуслуг, другой для мемов с котами остального интернета :)
Удобно, если приложение еще не настроено. А если у тебя куча закладок, дополнений, редактировал конфиг через about:config хз сколько раз и уже не помнишь что и зачем, то остается вот так извращаться.

Еще надо почтовый клиент запустить в песочнице. Но там без dbus никак. ХЗ как настраивать. Для меня эти сервисы темный лес. Придется пару дней помучаться гуглом и методом тыка.
Devuan 4. Debian 12. LXDE.

Лия

#11
Цитата: dr_faust от 17 ноября 2024, 01:11:24Удобно, если приложение еще не настроено. А если у тебя куча закладок, дополнений, редактировал конфиг через about:config хз сколько раз и уже не помнишь что и зачем, то остается вот так извращаться.
Основной:
$ mkdir ${HOME}/.fxprofile1
$ cp -rv ${HOME}/.mozilla ${HOME}/.fxprofile1/
$ firejail --private=${HOME}/.fxprofile1 firefox-esr -new-instance

Второй - для банков/госуслуг, настроить с нуля с минимумом дополнений (в идеале - только блокировщик рекламы):
$ mkdir ${HOME}/.fxprofile2
$ firejail --private=${HOME}/.fxprofile2 firefox-esr -new-instance

Как-то так :)

17 ноября 2024, 01:39:16
Цитата: dr_faust от 17 ноября 2024, 01:11:24Еще надо почтовый клиент запустить в песочнице. Но там без dbus никак.
У меня громоптица (Thunderbird) и без него живёт :)

Цитата: dr_faust от 17 ноября 2024, 01:11:24ХЗ как настраивать.
LESS=+/--dbus man firejail
смотреть в сторону --dbus-system / --dbus-user
и курить маны :)

17 ноября 2024, 01:42:20
Вместо nodbus лучше
dbus-system none
dbus-user none

17 ноября 2024, 01:44:55
Цитата: dzhoser от 16 ноября 2024, 14:39:553. disable-mnt не запрещает доступа к /media
Запрещает :)

Цитировать--disable-mnt
              Blacklist /mnt, /media, /run/mount and /run/media access.

              Example:
              $ firejail --disable-mnt firefox


17 ноября 2024, 01:47:16
Цитата: dzhoser от 16 ноября 2024, 14:39:554. Переменные необходимо создавать для конкретных устройств. Иначе будут доступны все
Цитировать--private-dev
Create a new /dev directory. Only disc, dri, dvb, hidraw, null, full, zero, tty, pts, ptmx, random, snd, urandom, video, log, shm and usb devices are available.
Use the options --no3d, --nodvd, --nosound, --notv, --nou2f and --novideo for additional restrictions.

17 ноября 2024, 01:49:20
Цитата: dr_faust от 16 ноября 2024, 14:57:27disable-mnt
Цитата: dr_faust от 16 ноября 2024, 14:57:27В то же время эта опция почему-то не описана в мане.
$ LESS=+/--disable-mnt man firejail
:)

dr_faust

#12
По порядку.

1. Почему
dbus-system none
dbus-user none
лучше
nodbus
?
Судя по описанию в мане последнее эвивалентно наличию двух первых. Хотя и помечено как устаревшая опция.

2. По ману dbus в fiirejail все понятно. Равно как и по общему принципу работы самого dbus. Непонятно откуда брать имена dbus сервисов и как определять какой каким именно функции выполняет?
Пока вижу два варианта: читать уже имеющиеся профили и включить опцию логирования запросов dbus в firejail.

3. По отдельному /home каждому приложению. Обнаружил один недостаток использования. Допустим, нужно интегрировать некий меседжер с имеющимися в постоянном общем /home ключами gpg. Как это сделать, поместив меседжер, при помощи опции private, в отдельный /home непонял. Пробовал прописывать и private, и private-home .gnupg, надеясь на временое копирование последнего в отдельный постонный хомяк, определенный первым. Одако этогоо не происходит.

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

20 ноября 2024, 13:11:21
4.  Настроив песочницу для браузера следующим образом
name firefox-esr
join-or-start firefox-esr
apparmor
caps.drop all
seccomp
restrict-namespaces
machine-id
protocol unix,inet
disable-mnt
private-dev
private-tmp
private-cache
private-etc firefox-esr
private-bin bash,env,firefox-esr,sh,which
private /home/user/<директория под лису>
nou2f
novideo
noprinters
notv
noinput
nodvd
no3d
nodbus
nogroups
nonewprivs
noroot
заметил, что при открытии сайта телеграмма конкретно так подтормаживает. Прокрутка меденна и рывками. Не плавная.
Отключенное аппаратное ускорение(no3d)?
20 ноября 2024, 13:13:07
5.
$ LESS=+/--disable-mnt man firejail
Не понимаю синтаксиса. Для поиска по ман-странице, предварительно открыв ее, использую /
Но это показывает только первое совпадение.

6. А параметр env - нужен для запуска wine-префиксов - можно в профиль прописать или же только в консоли работает?
Devuan 4. Debian 12. LXDE.

Лия

#13
Цитата: dr_faust от 20 ноября 2024, 13:06:221. Почему
Цитата: dr_faust от 20 ноября 2024, 13:06:22Хотя и помечено как устаревшая опция.
Именно поэтому :)

Цитата: dr_faust от 20 ноября 2024, 13:06:223. По отдельному /home каждому приложению. Обнаружил один недостаток использования. Допустим, нужно интегрировать некий меседжер с имеющимися в постоянном общем /home ключами gpg. Как это сделать, поместив меседжер, при помощи опции private, в отдельный /home непонял. Пробовал прописывать и private, и private-home .gnupg, надеясь на временое копирование последнего в отдельный постонный хомяк, определенный первым. Одако этогоо не происходит.
Как вариант:
mkdir /home/user/<директория под лису>/.gnupg
sudo mount -o bind /home/user/.gnupg /home/user/<директория под лису>/.gnupg

Цитата: dr_faust от 20 ноября 2024, 13:06:226. А параметр env - нужен для запуска wine-префиксов - можно в профиль прописать или же только в консоли работает?
Думаю да, можно

RedEye

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