Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Изолируйте ненадежные приложения с помощью Firejail

Оригинал: Lock Up Your Untrusted Applications in Firejail
Автор: Jack Wallen
Дата публикации: 17 июня 2016 г.
Перевод: А.Панин
Дата перевода: 17 декабря 2016 г.

Изолируйте ненадежные приложения с помощью Firejail

Узнайте о том, как устанавливать и использовать утилиту Firejail для активации дополнительного уровня защиты системы.

Хотя ядро Linux является и достаточно безопасной частью экосистемы Linux, этого же нельзя сказать о каждом исполняющемся с его участием приложении. Вам может понадобиться кустарное приложение, безопасность которого не была проверена (хотя оно и является незаменимым), вы можете найти нужное приложение на стороннем веб-сайте или запускать различные приложения на машине, предполагающей высочайший уровень безопасности. Что же делать в подобных случаях?

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

Звучит немного путано? Можете верить или не верить, но существует программный компонент, значительно упрощающий запуск приложений в изолированных окружениях в Linux. Это утилита с именем Firejail, которая выступает в роли бинарного файла с битом SUID (Set owner User ID upon execution - бит установки идентификатора владельца бинарного файла в качестве идентификатора пользователя в момент исполнения) и сокращает риски, связанные с эксплуатацией проблем безопасности приложений. Firejail позволяет запускать в изолированном окружении приложения любого типа, будь то приложение для сервера или для настольного компьютера. Она содержит набор профилей для различных приложений для Linux и позволяет создавать ваши собственные профили, специфичные для отдельных приложений.

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

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

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

Установка программного обеспечения

Я буду демонстрировать процесс установки Firejail и Firetools на примере дистрибутива Ubuntu GNOME 16.04. Данная процедура не должна отличаться в случае использования любого основанного на Ubuntu дистрибутива. Для установки упомянутых программных компонентов в другом дистрибутиве вам придется немного изменить приведенные команды (к примеру, использовать dnf вместо apt-get).

В первую очередь предлагаю установить Firejail. Так как данная утилита доступна из стандартного репозитория дистрибутива, процесс ее установки является предельно простым. Просто выполните следующую последовательность действий:

  1. Откройте окно терминала
  2. Выполните с помощью него команду sudo apt-get install firejail
  3. Введите свой пароль и нажмите клавишу Enter
  4. В случае вывода соответствующего запроса, введите "y", согласившись тем самым с продолжением процесса установки
  5. Позвольте процессу установки программного обеспечения корректно завершиться

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

  1. Загрузите файл, соответствующий архитектуре вашей операционной системы (32 или 64-битной)
  2. Откройте окно терминала
  3. Перейдите в директорию "Загрузки" с помощью команды cd ~/Загрузки
  4. Выполните команду sudo dpkg -i firetools*.deb
  5. Введите ваш пароль и нажмите клавишу Enter
  6. Позвольте процессу установки программного обеспечения корректно завершиться

Вполне вероятно, что в процессе установки будет выведено сообщение об ошибке, связанное с отсутствующими в системе зависимостями пакета программного обеспечения. В этом случае вам придется либо использовать команду sudo apt-get install -f, либо вручную установить все необходимые пакеты программного обеспечения, после чего приложение Firetools будет готово к использованию.

Использование утилиты Firejail

Для начала давайте воспользуемся интерфейсом командной строки утилиты Firejail. Разработчики сделали ее интерфейс командной строки максимально простым. К примеру, предположим, что вам нужно запустить веб-браузер Firefox в изолированном окружении с помощью Firejail. Для этого достаточно открыть окно терминала и выполнить с помощью него команду firejail firefox. После запуска приложения вы сможете без труда обнаружить, что силами Firejail был создан дочерний процесс и веб-браузер Firefox, окно которого было отображено, исполняется в изолированном окружении (Рисунок 1).

Просто, не так ли?

Веб-браузер Firefox, исполняющийся в рамках изолированного окружения, созданного силами Firejail

Рисунок 1: Веб-браузер Firefox, исполняющийся в рамках изолированного окружения, созданного силами Firejail.

Одна особенность, на которую вы наверняка обратите внимание, заключается в том, что исполняющиеся в рамках изолированного окружения Firejail приложения не имеют доступа к вашим файлам (это сделано умышленно). Например, если вы запустите веб-браузер Firefox с помощью Firejail и попытаетесь загрузить с помощью него на веб-сайт графический файл из директории "Изображения", вы не сможете сделать этого. Любое приложение, исполняющееся в рамках изолированного окружения, не имеет неограниченного доступа к произвольным файлам и директориям.

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

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

  1. Откройте окно терминала
  2. Выполните с помощью него команду mkdir -p ~/.config/firejail
  3. Перейдите в только что созданную директорию
  4. Скопируйте файл стандартного профиля в эту директорию с помощью команды cp /etc/firejail/generic.profile ~/.config/firejail/<ИМЯ ПРИЛОЖЕНИЯ>.profile (здесь вместо строки <ИМЯ ПРИЛОЖЕНИЯ> следует использовать реальное имя приложения)
  5. Отредактируйте созданный файл профиля приложения в соответствии со своими потребностями

Стандартный профиль приложения выглядит аналогичным образом:

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

blacklist ${HOME}/Документы

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

blacklist /home/<ИМЯ ПОЛЬЗОВАТЕЛЯ>/Документы

Здесь вместо строки <ИМЯ ПОЛЬЗОВАТЕЛЯ> следует использовать реальное имя пользователя.

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

read-only ${HOME}/Документы

Для получения информации о том, что еще можно сделать с созданным профилем приложения, следует выполнить команду man firejail-profile. Данная команда позволяет отобразить страницу руководства со списком других директив, которые могут использоваться в новом профиле приложения.

Использование приложения Firetools

Давайте рассмотрим методику использования графического интерфейса Firejail под названием Firetools. Для запуска этого приложения следует выполнить с помощью окна терминала команду firetools &. В результате вы должны будете обнаружить две вещи: окно приложения Firejail и его иконку в системном трее. В GNOME 3 системный трей расположен в левом нижнем углу экрана, причем он скрыт по умолчанию, но после открытия позволяет получить доступ к графическому интерфейсу приложения Firetools (Рисунок 2).

Окно Firetools и значок в открытом системном трее GNOME 3

Рисунок 2: Окно Firetools и значок в открытом системном трее GNOME 3.

Несколько приложений уже должно быть добавлено в меню запуска Firetools. Для запуска приложения из меню вы можете либо воспользоваться двойным кликом мыши над его значком, либо нажать на правую кнопку мыши и выбрать пункт контекстного меню "Run". Firetools позволяет осуществлять мониторинг состояния приложений, запущенных с помощью Firejail. Для открытия окна монитора достаточно открыть окно Firetootls, воспользоваться правой кнопкой мыши над ним и выбрать пункт меню "Tools". После открытия окна монитора вы увидите список всех исполняющихся с участием Firejail приложений (Рисунок 3).

Идентификаторы, имена и параметры всех процессов, исполняющихся с участием Firejail

Рисунок 3: Идентификаторы, имена и параметры всех процессов, исполняющихся с участием Firejail.

Для добавления нового приложения в меню запуска Firetools следует воспользоваться правой кнопкой мыши над его окном и выбрать пункт контекстного меню "Edit". С помощью нового окна (Рисунок 4) следует ввести параметры интересующего вас приложения. В поле ввода команды (Command) необходимо использовать префикс firejail. Например, для добавления в меню запуска приложения KeePassX следует ввести команду "firejail keepassx".

Добавление нового приложения в меню запуска приложений Firetools

Рисунок 4: Добавление нового приложения в меню запуска приложений Firetools.

Незаменимая утилита для людей, заботящихся о безопасности своих данных

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