Представлен (https://l3net.wordpress.com/2016/04/03/firejail-0-9-40-rc1-r.../) выпуск Firejail 0.9.40 (https://firejail.wordpress.com/), системы изолированного выполнения графических, консольных и серверных приложений. Целью Firejail является минимизация риска компрометации основной системы при запуске не заслуживающих доверия или потенциально уязвимых программ. Для изоляции в Firejail
используется (https://firejail.wordpress.com/features-3/) механизм пространств имён (namespaces) и фильтрация системных вызовов (seccomp-bpf) в Linux. После запуска программа и все её дочерние процессы используют отдельные представления ресурсов ядра, таких как сетевой стек, таблица процессов и точки монтирования. Зависимые между собой приложения можно объединять в один общий sandbox. Программа написана на языке Си, распространяется (https://github.com/netblue30/firejail) под лицензией GPLv2 и может работать в любом дистрибутиве Linux с ядром старше 3.0. Готовый пакет с Firejail можно установить из Debian jessie-backports (https://packages.debian.org/jessie-backports/firejail).В отличие от средств контейнерной изоляции firejail предельно прост (https://firejail.wordpress.com/documentation-2/basic-usage/) в конфигурации и не требует подготовки системного образа - состав контейнера формируется на лету на основе содержимого текущей ФС и удаляется после завершения работы приложения. При желании, Firejail можно применять и для запуска контейнеров Docker, LXC и OpenVZ. Предоставляются гибкие средства задания правил доступа к файловой системе, можно определять к каким файлами и директориям разрешён или запрещён доступ, подключать для данных временные ФС (tmpfs), ограничивать доступа к файлам или директориям только на чтение, совмещать директории через bind-mount и overlayfs. Профили (https://firejail.wordpress.com/documentation-2/building-cust.../) изоляции системных вызовов подготовлены для большого числа популярных приложений, в том числе для Firefox, Chromium, VLC и Transmission. Для выполнения программы в режиме изоляции достаточно указать имя приложения в качестве аргумента утилиты firejail, например, "firejail firefox" или "sudo firejail /etc/init.d/nginx start".
Особенности новой версии:
- Поддержка (https://firejail.wordpress.com/documentation-2/x11-guide/) sandbox-окружения X11 со своим X-сервером, в качестве которого могут выступать Xpra (https://xpra.org/) (подобие (https://www.opennet.dev/opennews/art.shtml?num=37695) утилиты screen для X11) и Xephyr (https://www.freedesktop.org/wiki/Software/Xephyr/) (позволяет запустить X-сервер в окне уже запущенного X-сервера), что даёт возможность организовать запуск приложений на системе без монитора с трансляций вывода на внешний хост;- Возможность передачи файлов между sandbox-окружениями и хост-системой;
- Поддержка изменения конфигурации во время работы и на этапе компиляции. Через файл конфигурации теперь можно определить какие их механизмов изоляции и безопасности ядра будут задействованы в исполняемом файле Firejail (запускается с флагом SUID root);- Поддержка AppArmor. Профили изоляции на базе AppArmor подготовлены для Firefox, Chromium, Evince, Pidgin и Totem;
- Обеспечена (https://firejail.wordpress.com/documentation-2/grsecurity-notes/) совместимость со сборками ядра Linux, в которых используются патчи Grsecurity (ядро Linux 4.4 c Grsecurity можно найти в Debian testing, unstable и jessie-backports);- Новая утилита firecfg для автоматизации настройки параметров изолированного запуска приложений (для изолированного запуска приложений создаются символические ссылки в /usr/local/bin);
- Число профилей изоляции приложений доведено (https://github.com/netblue30/firejail/tree/master/etc) до 95. Добавлены новые профили для таких программ, как lxterminal, Epiphany, Vivaldi, qTox, OpenSSH client, OpenBox, dnsmasq, PaleMoon, Icedove, okular, gwenview, Brave.
URL: https://l3net.wordpress.com/2016/04/03/firejail-0-9-40-rc1-r.../
Новость: http://www.opennet.dev/opennews/art.shtml?num=44534
Wine приложения умеет изолированно запускать?
https://github.com/netblue30/firejail/blob/master/etc/wine.p...
Должен уметь.
Теперь вирусы виндоуз можно безопасно выполнять в линукс ...
Весьма годная запускалка контейнеров. Вместо громких бла-бла как gnome apps эти просто взяли и запилили. Программы менять не требуется, и вообще.
Народобие Sandboxie?
mbox https://github.com/tsgates/mbox https://pdos.csail.mit.edu/archive/mbox/
А между тем реальная победа над freebsd jail с ardens...
>> и фильтрация системных вызовов
> А между тем реальная победа над freebsd jailА что из них фиолетевее?
Если ипользовать Firejail, то можно default route поменять в контейнере?
предположу, что сие можное реализовать через маркировку пакетов от определенного пида через айпитейблс с последующим рулением через ip rule и таблицы рутинга. в теории можно даже автоматизировать
У каждого network namespace можно указать свой default route
> Если ипользовать Firejail, то можно default route поменять в контейнере?Создай новый сетевой нэймспэйс и получи свои сетевые адаптеры, правила фаера, маршруты и прочее. Настоящая виртуальная машина со скоростью как у чрута.
Запретить отдельно взятому приложению доступ в Интернет позволяет? Давно ищу что-то, что позволит выпускать в Сеть только те проги, которым это реально надо также легко, как это делается в Windows (AppArmor не помог - не умеет ограничивать Java-приложения а некоторые нативные проги под ним не запускаются вообще даже если всё разрешить).
lxc/docker. И overlayfs чтобы место на диске не перерасходовать.
Речь идёт о гуёвых приложениях, ещё и требующих доступа к USB-железу, например, так что про Docker сомневаюсь, LXC - хз.
> lxc/docker. И overlayfs чтобы место на диске не перерасходовать.А зачем? Сабж умеет "временные" пустышки создавать и компоновать вид ФС монтированием. Да еще системные вызовы грамотно обрубает, так что вылезти из грамотно сделанного контейнеа будет достаточно сложно. Эти в отличие от докеров занимались не пиаром а системным программированием.
> Запретить отдельно взятому приложению доступ в Интернет позволяет?Да. Можно даже веселее: убираешь сеть в дефолтном namespace. Поднимаешь ее только в namespaces в которые пушишь свои избранные проги. Можешь интерфейс в новый namespace переместить, или создать новый MACVLAN на существующем ифэйсе (сабж это умеет).
Вообще, да будет вам не лень прочитать "man ip" от корки до корки, узнаете что Linux умеет делать с сетями очень многое. О половине из этого вы даже не мечтали, а оно есть.
> Поднимаешь ее только в namespaces в которые пушишь свои избранные проги.Мне кажется все дочерние процессы также будут иметь доступ в интернет.
Это не как в виндоус. Там ограничение по полному пути exe-программы.
Пиши ещё - мнение вендузоеда-на-каникулах очень важно для нас.
Ты знаешь как работает net namespace ?
TOMOYO Linux умеет контролировать сеть отдельных приложений
народ, что лучше, чтобы запускать софтваре без прав на чтение других директорий (включая хомяка) - оно или ручками пилить отдельного юзверя и проставлять права?