Рейтинг@Mail.ru

Наши друзья и партнеры

UnixForum





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

Защищенная операционная система Qubes для настольных компьютеров: разделение задач

Оригинал: Secure Desktops with Qubes: Compartmentalization
Автор: Kyle Rankin
Дата публикации: 13 октября 2016 г.
Перевод: А.Панин
Дата перевода: 15 ноября 2016 г.

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

При первом запуске Qubes вы можете серьезно задуматься том, как лучше разделить ваши файлы и действия между отдельными виртуальными машинами. После того, как я столкнулся с данным вопросом, мне пришлось черпать вдохновение из статьи Йоанны Рутковской (создательницы Qubes), посвященной описанию ее методики работы с Qubes. В данной статье я опишу методику распределения действий между виртуальными машинами, которая применяется на моем персональном компьютере. Хотя я и не хочу заявлять, что мой подход является идеальным, и могу признать, что имеется возможность создания более защищенной конфигурации, вы все же сможете использовать данную статью как один из примеров при первом знакомстве с операционной системой.

Основные концепции Qubes

В предыдущей статье серии я описал основные концепции операционной системы Qubes, такие, как различные типы виртуальных машин, уровни доверия и так далее, но так как я буду ссылаться на них и в данной статье, следует кратко напомнить о них. (Если вы хотите узнать больше, обратитесь к прошлым статьям серии).

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

  • Одноразовые виртуальные машины: это виртуальные машины типа dispVM, которые предназначены для однократного использования. Все хранящиеся в них данные удаляются после закрытия приложений.
  • Доменные виртуальные машины: это виртуальные машины типа appVM. В них исполняются приложения, с которыми пользователи работают большую часть времени.
  • Сервисные виртуальные машины: сервисные виртуальные машины разделены на такие подкатегории, как сетевые виртуальные машины (netVM) и виртуальные машины для прокси (proxyVM). Эти виртуальные машины обычно работают в фоновом режиме и предоставляют сервисы для виртуальных машин приложений (чаще всего связанные с доступом к сети).
  • Шаблонные виртуальные машины: все виртуальные машины других типов создают свои корневые файловые системы на основе шаблонных виртуальных машин (templateVM), причем при отключении виртуальной машины приложения все изменения корневой файловой системы, которые вы могли внести, уничтожаются (сохраняются лишь изменения в директориях /rw, /usr/local и /home). Обычно шаблонные виртуальные машины находятся в выключенном состоянии за исключением тех случаев, когда вы устанавливаете или обновляете программное обеспечение.

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

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

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

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

Идея данного разделения виртуальных машин по категориям заключается в следующем: вы можете выполнять любые небезопасные действия (такие, как веб-серфинг) в виртуальной машине для приложений с низким уровнем доверия и не хранить в этой виртуальной машине каких-либо данных. Также вы можете выполнять более важные действия, такие, как проверка электронной почты или веб-серфинг, связанный с вводом персональных данных, в виртуальной машине используемой для работы с персональными данными. Кроме того, вы можете проверять рабочую электронную почту и хранить рабочие документы в виртуальной машине для работы с рабочими данными. Наконец, вы можете хранить свои ключи GPG и использовать менеджер паролей в виртуальной машине для менеджера паролей (которая вообще не имеет доступа к сети). Хотя подобная конфигурация и является отличным вариантом для новых пользователей системы, спустя некоторое время вы наверняка сами придете к выводу о том, что у вас имеется возможность лучшей изоляции действий и файлов.

При этом установщик системы создает дополнительные сервисные виртуальные машины sys-net, sys-firewall и sys-whonix для предоставления доступа к сети, межсетевого экрана для виртуальных машин приложений и шлюза Tor соответственно. Также вы можете при необходимости активировать сервисную виртуальную машину sys-usb, которая будет связана со всеми вашими USB-контроллерами для защиты остальной системы от атак, проводимых на уровне протокола USB.

Мой персональный компьютер

Я использую компьютер Purism Librem 13, причем с помощью него я выполняю лишь те действия, которые выполняет практически каждый пользователь. А это список выполняемых мной действий, отсортированный по уровню риска:

  • Веб-серфинг
  • Проверка электронной почты
  • Общение в чате IRC
  • Работа с 3D-принтером
  • Написание статей

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

Одноразовая виртуальная машина, идентифицируемая с помощью красного цвета: я использую одноразовые виртуальные машины для выполнения любых потенциально опасных действий, таких, как переход по незнакомым ссылкам. Например, мой клиент электронной почты настроен для автоматического открытия всех вложений в одноразовой виртуальной машине (таким образом, как описано в руководстве "Qubes mutt guide"). Таким образом, даже если кто-либо пришлет мне вредоносный документ формата Word или PDF, я смогу прочитать его в рамках одноразовой виртуальной машины, причем атака также будет изолирована в рамках этой виртуальной машины. После того, как я закрою этот документ, любое запущенное вредоносное программное обеспечение будет удалено и злоумышленник не получит доступа к моим персональным файлам.

Виртуальная машина для приложений с низким уровнем доверия, идентифицируемая с помощью красного цвета: я использую виртуальную машину с низким уровнем доверия для посещения всех веб-сайтов за исключением тех, на которых нужно вводить имя пользователя и пароль. Она имеет неограниченный доступ к сети Интернет. Кроме нее я создал несколько виртуальных машин приложений с более высокими уровнями доверия (одна из которых используется для общения в чате IRC) и наладил автоматическое открытие ссылок из них в рамках данной виртуальной машины (путем использования в качестве пути к бинарному файлу стандартного веб-браузера вызова утилиты qvm-open-in-vm). Я не храню каких-либо персональных файлов в этой виртуальной машине с низким уровнем доверия, поэтому в случае сомнений относительно безопасности открытой ссылки я могу просто удалить и снова создать данную виртуальную машину меньше, чем за минуту, получив в свое распоряжение ее чистую копию.

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

Виртуальная машина для работы с социальной сетью Facebook, идентифицируемая с помощью оранжевого цвета: некоторых читателей может шокировать тот факт, что у меня есть учетная запись в социальной сети Facebook. На самом деле, я не размещаю в данной сети большого количества постов (причем я отдаю себе отчет, что все размещенные мной посты будут видимы любому человеку из любой точки света), но, как и у многих из вас, у меня есть друзья, с которыми нет возможности видеться лично и которые размещают информацию о событиях своей жизни исключительно на своих страницах в Facebook. Я прекрасно понимаю, что Facebook отслеживает все мои перемещения по глобальной сети, но при этом я также хочу иметь возможность читать посты моих друзей, чего я не смогу сделать, не входя в социальную сеть.

Компромиссным решением в моем случае стало создание отдельной виртуальной машины исключительно для посещения социальной сети Facebook. Эта виртуальная машина для приложений настроена для работы с виртуальной машиной для прокси под названием sys-whonix для доступа к сети, поэтому весь сетевой трафик проходит через сеть Tor, причем я использую ресурс Facebook в скрытом сегменте сети Tor для доступа в социальную сеть. В этом случае любые куки, используемые социальной сетью Facebook для отслеживания перемещений пользователей по ресурсам глобальной сети, не будут выходить за пределы веб-браузера, исполняющегося в рамках этой виртуальной машины; Tor предотвращает распространение информации о том, что я использую Facebook, между всеми другими ресурсами глобальной сети, причем даже Facebook не получает моего реального IP-адреса.

Виртуальная машина для посещения веб-сайтов с вводом персональных данных, идентифицируемая с помощью желтого цвета: ввиду того, что веб-серфинг является самым небезопасным действием из тех, что я выполняю в процессе работы с компьютером, я принял решение о необходимости отделения виртуальной машины для посещения веб-сайтов с необходимостью аутентификации не только от основной виртуальной машины для веб-серфинга, но и от виртуальной машины с моими персональными файлами. Так как веб-сайты, требующие аутентификации пользователей, обычно предоставляют возможность работы по протоколу HTTPS, я ограничиваю набор портов серверов из сети Интернет, с которыми может соединяться веб-браузер из данной виртуальной машины, портом номер 443. Данная виртуальная машина используется для посещения всех веб-сайтов, которые требуют ввода имени пользователя и пароля (помимо веб-сайтов интернет-банкинга). Поэтому, например, при выборе товаров для покупки через Интернет я могу использовать виртуальную машину с низким уровнем доверия, но тогда, когда я готов войти в интернет-магазин и приобрести что-либо, я использую данную виртуальную машину. Я настроил свой менеджер паролей для открытия веб-страниц в рамках данной виртуальной машины, а не виртуальной машины с низким уровнем доверия.

В данном случае идея заключается в предотвращении доступа злоумышленника, который скомпрометировал виртуальную машину для приложений с низким уровнем доверия с помощью вредоносного веб-сайта, к данным для доступа к веб-сайтам. Хотя и сложно не согласиться с тем, что злоумышленники, которые скомпрометировали один из многих веб-сайтов, на котором я прохожу аутентификацию в рамках данной виртуальной машины, без труда смогут получить мои данные для доступа к другим веб-сайтам, они все же не смогут получить доступ к моим персональным файлам (таким, как документы или ключи GPG и SSH). Кроме того, они не смогут получить доступ к моим данным для интернет-банкинга, так как я осуществляю соответствующие операции в рамках отдельной виртуальной машины. Некоторые пользователи Qubes, которые более трепетно относятся к безопасности своих данных для доступа к различным веб-сайтам, вообще используют для этих целей одноразовые виртуальные машины.

Виртуальная машина для работы с персональными файлами, идентифицируемая с помощью желтого цвета: данная виртуальная машина максимально похожа на традиционную домашнюю директорию и содержит все мои персональные файлы, такие, как ключи SSH. Кроме того, при необходимости осуществления веб-серфинга я использую не эту виртуальную машину, а виртуальную машину для приложений с низким уровнем доверия, виртуальную машину для посещения веб-сайтов с вводом персональных данных или виртуальную машину для выполнения финансовых операций. Я использую эту виртуальную машину главным образом для управления другими серверами по протоколу SSH, проверки электронной почты, соединения с удаленными сессиями рабочих столов, которые я использую для IRC, а также для работы над несколькими проектами, размещенными на хостинге исходного кода GitHub. По этой причине я воспользовался утилитой из состава Qubes для разрешения лишь исходящих соединений по протоколу SSH с любым удаленным IP-адресом, а также исходящих соединений по протоколам IMAP и SMTP с адресом моего почтового сервера.

Так как данная виртуальная машина содержит большое количество моих персональных файлов и мой (защищенный с помощью пароля) ключ SSH, я отношусь к ней с большей осторожностью, чем к некоторым другим. По этой причине я не осуществляю веб-серфинга в рамках этой виртуальной машины, и хотя я проверяю в рамках нее электронную почту, все присылаемые вложения открываются в одноразовых виртуальных машинах.

Виртуальная машина для работы с принтером, идентифицируемая с помощью зеленого цвета: я решил создать отдельную виртуальную машину для взаимодействия с моим 3D-принтером, так как я открыл доступ во внутренней сети к разделу диска сетевого хранилища, на котором хранятся все мои 3D-модели. Помимо управления 3D-принтером, я также использую в рамках данной виртуальной машины программу Cura для модификации и слайсинга 3D-моделей. Выделив данные действия в отдельную виртуальную машину, я получил возможность использования межсетевого экрана Qubes для разрешения доступа лишь к локальному серверу Octoprint и сетевому хранилищу, так как при работе с данной виртуальной машиной практически не приходится осуществлять доступ к ресурсам сети Интернет.

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

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

Виртуальная машина для менеджеров паролей, идентифицируемая с помощью черного цвета: данная виртуальная машина в моем случае является одной из наиболее важных и обладает самым высоким уровнем доверия. Вместо максимально жестких правил межсетевого экрана, она вообще не имеет доступа к сетевому устройству. Я использую эту виртуальную машину для хранения моего ключа GPG и базы данных менеджера паролей KeepassX. Qubes предоставляет сервис под названием split-GPG, который выступает в роли обертки для GPG и может использоваться из других виртуальных машин каждый раз при необходимости использования ключа GPG. На практике, виртуальная машина приложения, которая хочет получить доступ к ключу, отправляет данные для шифрования или дешифрования в эту виртуальную машину с помощью специального сценария из комплекта поставки Qubes. Вы увидите запрос о том, хотите ли вы позволить используемой в текущий момент виртуальной машине приложений получить доступ к ключу GPG на заданный период времени. Если вы ответите на него утвердительно, данные будут переданы рассматриваемой виртуальной машине, зашифрованы или расшифрованы, после чего возвращены той же виртуальной машине, от которой поступили. Таким образом, ваша виртуальная машина никогда не получит доступа к закрытому ключу GPG, хранящемуся в рассматриваемой виртуальной машине, а сама эта виртуальная машина будет работать как аппаратный модуль безопасности для бедных.

Я надеюсь, что вы получили представление о том, как я организую работу с операционной системой Qubes на своем настольном компьютере и используете какие-либо из описанных подходов при создании собственных виртуальных машин. Вообще говоря, настройка Qubes заключается в четком распределении различных действий и файлов в соответствии с прогнозируемыми рисками. При осуществлении данного распределения следует руководствоваться принципом, в соответствии с которым каждая из виртуальных машин может быть скомпрометирована (особенно виртуальная машина для приложений с низким уровнем доверия), следовательно, нужно пытаться сокращать количество файлов и возможность доступа к каждой из виртуальных машин. Если вы хотите ознакомиться с другими руководствами относительно использования Qubes, лучше всего начать со страницы документации проекта Qubes, так как она содержит большое количество полезных руководств по выполнению стандартных действий (таких, как настройка программы split-GPG).

Поделиться:


Средняя оценка 5 при 1 голосовавших