Узнайте о том, как устанавливать и использовать утилиту 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. Так как данная утилита доступна из стандартного репозитория дистрибутива, процесс ее установки является предельно простым. Просто выполните следующую последовательность действий:
Откройте окно терминала
Выполните с помощью него команду sudo apt-get install firejail
Введите свой пароль и нажмите клавишу Enter
В случае вывода соответствующего запроса, введите "y", согласившись тем самым с продолжением процесса установки
Позвольте процессу установки программного обеспечения корректно завершиться
Теперь давайте приступим к установке приложения Firetools. Вы не найдете его в стандартных репозиториях дистрибутива. Однако, разработчик разместил пакеты программного обеспечения формата .deb на официальном веб-сайте проекта. Для установки такого пакета в систему вам придется выполнить следующую последовательность действий:
Загрузите файл, соответствующий архитектуре вашей операционной системы (32 или 64-битной)
Откройте окно терминала
Перейдите в директорию "Загрузки" с помощью команды cd ~/Загрузки
Выполните команду sudo dpkg -i firetools*.deb
Введите ваш пароль и нажмите клавишу Enter
Позвольте процессу установки программного обеспечения корректно завершиться
Вполне вероятно, что в процессе установки будет выведено сообщение об ошибке, связанное с отсутствующими в системе зависимостями пакета программного обеспечения. В этом случае вам придется либо использовать команду sudo apt-get install -f, либо вручную установить все необходимые пакеты программного обеспечения, после чего приложение Firetools будет готово к использованию.
Использование утилиты Firejail
Для начала давайте воспользуемся интерфейсом командной строки утилиты Firejail. Разработчики сделали ее интерфейс командной строки максимально простым. К примеру, предположим, что вам нужно запустить веб-браузер Firefox в изолированном окружении с помощью Firejail. Для этого достаточно открыть окно терминала и выполнить с помощью него команду firejail firefox. После запуска приложения вы сможете без труда обнаружить, что силами Firejail был создан дочерний процесс и веб-браузер Firefox, окно которого было отображено, исполняется в изолированном окружении (Рисунок 1).
Просто, не так ли?
Рисунок 1: Веб-браузер Firefox, исполняющийся в рамках изолированного окружения, созданного силами Firejail.
Одна особенность, на которую вы наверняка обратите внимание, заключается в том, что исполняющиеся в рамках изолированного окружения Firejail приложения не имеют доступа к вашим файлам (это сделано умышленно). Например, если вы запустите веб-браузер Firefox с помощью Firejail и попытаетесь загрузить с помощью него на веб-сайт графический файл из директории "Изображения", вы не сможете сделать этого. Любое приложение, исполняющееся в рамках изолированного окружения, не имеет неограниченного доступа к произвольным файлам и директориям.
Для завершения работы приложения, запущенного с помощью Firejail, достаточно просто закрыть его окно точно таким же образом, как и при обычном запуске.
Firejail работает с профилями приложений. В комплект поставки данной утилиты уже включен набор профилей популярных приложений, а также стандартный профиль с множеством ограничений. В том случае, если Firejail не найдет профиля для переданной команды, она запустит приложение со стандартным профилем. Вы можете создать собственный профиль приложения, выполнив следующую последовательность действий:
Откройте окно терминала
Выполните с помощью него команду mkdir -p ~/.config/firejail
Перейдите в только что созданную директорию
Скопируйте файл стандартного профиля в эту директорию с помощью команды cp /etc/firejail/generic.profile ~/.config/firejail/<ИМЯ ПРИЛОЖЕНИЯ>.profile (здесь вместо строки <ИМЯ ПРИЛОЖЕНИЯ> следует использовать реальное имя приложения)
Отредактируйте созданный файл профиля приложения в соответствии со своими потребностями
Стандартный профиль приложения выглядит аналогичным образом:
Предположим, к примеру, что вам нужно закрыть для приложения доступ к директории "Документы" из вашей домашней директории. Для этого следует добавить следующую директиву в только что созданный файл профиля:
blacklist ${HOME}/Документы
Примечание: вы также можете использовать полный путь к необходимой директории аналогичным образом:
blacklist /home/<ИМЯ ПОЛЬЗОВАТЕЛЯ>/Документы
Здесь вместо строки <ИМЯ ПОЛЬЗОВАТЕЛЯ> следует использовать реальное имя пользователя.
Теперь предположим, что приложению требуется доступ к определенной директории, но вы хотите разрешить ему лишь читать данные из этой директории. Вы можете реализовать подобный механизм с помощью данной директивы:
read-only ${HOME}/Документы
Для получения информации о том, что еще можно сделать с созданным профилем приложения, следует выполнить команду man firejail-profile. Данная команда позволяет отобразить страницу руководства со списком других директив, которые могут использоваться в новом профиле приложения.
Использование приложения Firetools
Давайте рассмотрим методику использования графического интерфейса Firejail под названием Firetools. Для запуска этого приложения следует выполнить с помощью окна терминала команду firetools &. В результате вы должны будете обнаружить две вещи: окно приложения Firejail и его иконку в системном трее. В GNOME 3 системный трей расположен в левом нижнем углу экрана, причем он скрыт по умолчанию, но после открытия позволяет получить доступ к графическому интерфейсу приложения Firetools (Рисунок 2).
Рисунок 2: Окно Firetools и значок в открытом системном трее GNOME 3.
Несколько приложений уже должно быть добавлено в меню запуска Firetools. Для запуска приложения из меню вы можете либо воспользоваться двойным кликом мыши над его значком, либо нажать на правую кнопку мыши и выбрать пункт контекстного меню "Run". Firetools позволяет осуществлять мониторинг состояния приложений, запущенных с помощью Firejail. Для открытия окна монитора достаточно открыть окно Firetootls, воспользоваться правой кнопкой мыши над ним и выбрать пункт меню "Tools". После открытия окна монитора вы увидите список всех исполняющихся с участием Firejail приложений (Рисунок 3).
Рисунок 3: Идентификаторы, имена и параметры всех процессов, исполняющихся с участием Firejail.
Для добавления нового приложения в меню запуска Firetools следует воспользоваться правой кнопкой мыши над его окном и выбрать пункт контекстного меню "Edit". С помощью нового окна (Рисунок 4) следует ввести параметры интересующего вас приложения. В поле ввода команды (Command) необходимо использовать префикс firejail. Например, для добавления в меню запуска приложения KeePassX следует ввести команду "firejail keepassx".
Рисунок 4: Добавление нового приложения в меню запуска приложений Firetools.
Незаменимая утилита для людей, заботящихся о безопасности своих данных
Если вам нужно запускать стандартные приложения в изолированных рабочих окружениях, утилита Firejail будет, пожалуй, самым простым вариантом решения задачи. Firejail является дружелюбной и надежной утилитой, не позволяющей ненадежным приложениям получать доступ к важным данным, которые хранятся в вашей системе. Попытайтесь самостоятельно оценить ее пригодность для защиты ваших данных в процессе работы со сторонними приложениями в Linux.