вторник, 13 сентября 2016 г.

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

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

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


При разговоре о безопасности систем Linux обычно рассматриваются вопросы безопасного функционирования серверов. В процессе выполнения мероприятий, направленных на защиту серверов, чаще всего прибегают к ограничению возможностей отдельных серверов, а также к задействованию межсетевых экранов с целью разрешения лишь необходимых сетевых взаимодействий между ними. В случае использования на сервере современного программного окружения, в котором исполняется лишь демон SSH, а также один или несколько сетевых сервисов у взломщика остается не так уж и много возможностей для проникновения. Если же определенный сервер все же подвергается взлому, идеальным вариантом действий является своевременное установление факта взлома, изоляция скомпрометированного сервера и устранение последствий взлома с условием поддержания работоспособности всей остальной инфраструктуры.
Подход к обеспечению безопасности настольных систем Linux принципиально отличается от описанного выше ввиду широкого спектра операций, выполняемых с использованием настольных компьютеров. Каждое действие, которое выполняется с помощью настольного компьютера, открывает новый путь его компрометации. Веб-серфинг, особенно в том случае, если в вашей системе все еще установлены такие небезопасные плагины для веб-браузера, как Flash, является одним из основных путей компрометации настольной системы. Сообщения электронной почты являются еще одним популярным вектором атаки, так как пользователю нужно лишь открыть вредоносное вложение или нажать на фишинговую ссылку для того, чтобы атака прошла успешно. Настольные системы Linux обычно используются в качестве платформ для разработки программных компонентов и это означает, что их пользователи могут загружать, компилировать или исполнять чей-либо код, а также использовать программные компоненты, собранные на основе собственноручно написанного кода. Хотя некоторые пользователи Linux и могут ехидно улыбаться при разговоре о вредоносном программном обеспечении для других платформ, фактически их представления сформировались в то время, когда в качестве настольной системы могла использоваться лишь ОС Windows, при этом на сегодняшний день многое вредоносное программное обеспечение изначально является кросплатформенным и может функционировать в различных операционных системах.
Самой большой проблемой, связанной с нарушением безопасности настольной системы Linux, является набор данных, к которому получит доступ злоумышленник в результате успешного осуществления атаки: это все ваши персональные данные. Ими могут быть любые данные начиная с различных имен и паролей и заканчивая данными для доступа к важным учетным записям, таким, как учетные записи, связанные с банковским счетом или кредитной картой, а также социальными сетями, регистраторами доменных имен и службами хостинга, которыми вы пользовались в прошлом и которые все еще хранят данные о вашей кредитной карте. В результате успешной атаки злоумышленник получит доступ ко всем вашим персональным фотографиям и сообщениям электронной почты. Он может оставить в вашей системе троян с интерфейсом удаленного доступа для того, чтобы снова проникнуть в вашу систему впоследствии, а до этого времени следить за вам с помощью веб-камеры и встроенного микрофона. Кроме того, он может даже скопировать ваши ключи SSH, VPN и GPG, которые позволят получить доступ к другим компьютерам.
Основная идея механизма безопасности системы Qubes может быть сформулирована как «безопасность через разграничение». Данный подход позволяет минимизировать последствия компрометации того или иного программного компонента путем разделения программных компонентов и используемых ими файлов в по виртуальным машинам. Вы можете установить для каждой из виртуальных машин отдельный уровень доверия на основе риска, связанного с компрометацией программного компонента, исполняющегося в рамках этой виртуальной машины. Например, вы можете создать виртуальную машину с низким уровнем доверия для веб-серфинга без аутентификации. При этом впоследствии вы можете также создать отдельную виртуальную машину с высоким уровнем доверия только для работы с онлайн-банкингом. После этого вы можете создать еще одну виртуальную машину вообще без доступа к сети для работы с локальными документами. Если вы также выполняете какую-либо оплачиваемую работу с помощью вашего персонального компьютера, вы можете создать отдельные виртуальные машины для работы персональными файлами и выполнения оплачиваемой работы, причем последняя виртуальная машина должна иметь более высокий уровень доверия. Если вы перейдете на веб-сайт с вредоносным содержимым помощью веб-браузера из виртуальной машины с низким уровнем доверия, взломщик не получит доступа к учетной записи онлайн-банкинга и к вашим персональным файлам, так как они хранятся в других виртуальных машинах. В Qubes вы можете использовать даже одноразовые виртуальные машины: файлы этих виртуальных машин полностью удаляются с диска после закрытия запущенных в них приложений.

Принцип работы Qubes

Хотя вы и можете без каких-либо сложностей использовать любые существующие в данное время технологии виртуализации для создания нескольких виртуальных машин в любом дистрибутиве Linux для настольных систем, данный подход может быть как минимум неудобным, особенно в том случае, если вы не желаете использовать несколько окружений рабочего стола в рамках отдельных виртуальных машин. Также при использовании данного подхода не исключены различные ошибки, которые могут свести на нет все предпринятые вам меры предосторожности. Кроме того, у вас может возникнуть ряд резонных вопросов, например: «Как передавать файлы или использовать буфер обмена для безопасного обмена данными между виртуальными машинами?» или «Как обновлять все программные компоненты в рамках этих виртуальных машин?».
В то время, как традиционные дистрибутивы Linux упрощают методику получения всего необходимого программного обеспечения, позволяя отказаться от загрузки исходного кода и компиляции в ручном режиме, Qubes предоставляет набор дополнительных инструментов для упрощения процесса управления множеством виртуальных машин с различными уровнями доверия в рамках настольной операционной системы. При этом Qubes позволяет выполнять все операции, выполняемые в классических операционных системах для настольных компьютеров, с учетом безопасности их выполнения, а также использует по умолчанию безопасные параметры конфигурации. Таким образом, Qubes значительно усложняет (но не делает невозможным) собственноручное выведение системы из строя.
Qubes использует технологию виртуализации Xen (если вас интересует мотивация выбора данной технологии, вы можете обратиться к разделу с ответами на часто задаваемые вопросы веб-сайта проекта Qubes). Вместо запуска отдельных экземпляров окружения рабочего стола в каждой из виртуальных машин, для окружения рабочего стола в Qubes используется более привилегированная виртуальная машина Xen dom0 (на данный момент Qubes позволяет выбрать в качестве окружения рабочего стола либо KDE, либо XFCE, хотя участники сообщества поддерживают своими силами и другие окружения рабочих столов), при этом все остальные виртуальные машины выводят окна отдельных приложений в рамках окружения рабочего стола, запущенного в виртуальной машине dom0.
Таким образом, запуск веб-браузера Firefox в Qubes на первый взгляд осуществляется точно так же, как и в любом дистрибутиве Linux. Главное отличие заключается в том, что Qubes позволяет установить цветовой уровень доверия для каждой из ваших виртуальных машин начиная с красного (минимальный уровень доверия) и заканчивая черным (максимальный уровень доверия) с множеством цветов между ними.
При запуске приложения из виртуальной машины приложения (appVM в терминологии Qubes), последняя начнет свою работу в том случае, если она не была запущена ранее, после чего на экране появится окно приложения с рамкой цвета, соответствующего уровню доверия, присвоенному виртуальной машине приложения. Следовательно, в том случае, если в вашей системе запущено два экземпляра веб-браузера Firefox, вы сможете без каких-либо проблем отличить веб-браузер с низким уровнем доверия от веб-браузера для онлайн-банкинга, так как рамка окна веб-браузера с низким уровнем доверия будет иметь красный цвет, а окна веб-браузера для онлайн-банкинга — зеленый. На Рисунке 1 представлен снимок экрана из руководства пользователя Qubes, который отлично иллюстрирует описанную ситуацию.
Множество окон приложений с рамками различных цветов
Рисунок 1. Множество окон приложений с рамками различных цветов
Так как виртуальная машина dom0 имеет привилегии, позволяющие осуществлять доступ к данным других виртуальных машин Xen, в Qubes предприняты дополнительные меры, направленные на ее защиту, а именно, список запускаемых с помощью нее программных компонентов ограничен компонентами окружения рабочего стола, а также из нее полностью закрыт доступ к сети. Вам придется выполнять минимально возможное количество действий в рамках данной виртуальной машины, а для работы с любыми из доступных приложений использовать вместо нее виртуальные машины приложений. В Qubes умышленно затруднена методика копирования файлов из виртуальной машины dom0 по сравнению с методикой копирования файлов между виртуальными машинами приложений. Соответствующий каждой из виртуальных машин элемент меню приложений окружения рабочего стола, которое запущено в виртуальной машине dom0, содержит подменю, позволяющее запускать в виртуальной машине каждое из установленных приложений (Рисунок 2). В составе Qubes имеются инструменты, с помощью которых вы можете установить соответствия между виртуальными машинами и приложениями, поэтому данные подменю не должны выглядеть слишком громоздкими.
Меню приложений Qubes
Рисунок 2. Меню приложений Qubes

Механизм обмена информацией на уровне виртуальных машин приложений

В том случае, если у вас открыто несколько окон приложений, невольно возникает вопрос: «Как осуществляются операции копирования и вставки данных?». Небезопасный вариант реализации подобного механизма мог бы заключаться в разделении буфера обмена между всеми окнами приложений, но в случае его использования нельзя бы было исключить такие ситуации, когда при открытии веб-браузера в доверенной виртуальной машине и копировании пароля для входа на веб-сайт из менеджера паролей, пароль становился доступен всем приложениям, которые исполняются в других виртуальных машинах. Вместо описанной модели в Qubes используется двухуровневая модель буфера обмена. Каждая виртуальная машина приложения имеет свой собственный буфер обмена, с помощью которого вы можете осуществлять операции копирования/вставки в рамках данной виртуальной машины обычным образом. Если же вам нужно скопировать данные в рамках одной виртуальной машины приложения и вставить их в рамках другой, то сразу же после копирования данных в первой виртуальной машине вам придется воспользоваться сочетанием клавиш Ctrl-Shift-c для перемещения скопированных данных в глобальный буфер обмена, после чего перейти к окну приложения, в которое требуется вставить данные и воспользоваться сочетанием клавиш Ctrl-Shift-v для перемещения данных в буфер обмена виртуальной машины этого приложения и их автоматического удаления из глобального буфера обмена. После выполнения описанных действий вы сможете вставить скопированные данные в окно приложения обычным образом. Очевидно, что данный процесс содержит один дополнительный этап, но вы наверняка удивитесь быстроте привыкания к выполнению описанной последовательности действий: Ctrl-c, Ctrl-Shift-c, переход к окну другого приложения, Ctrl-Shift-v, Ctrl-v. Кроме того, именно этот дополнительный этап позволяет предотвратить случайную вставку информации в окно приложения, для которого эта информация не предназначается.
В составе Qubes также поставляется утилита с интерфейсом командной строки и плагины для контекстных меню файловых менеджеров, позволяющие осуществлять передачу файлов между виртуальными машинами приложений. При попытке копирования файла вы увидите окно подтверждения с черной рамкой, которое никоим образом не зависит от виртуальной машины запущенного приложения и позволяет подтвердить правомерность передачи файла. Даже после подтверждения вы не сможете скопировать файл в любую директорию в рамках целевой виртуальной машины приложения (ведь в противном случае злоумышленник имел бы возможность замены важных файлов на собственные файлы с бэкдорами). Вместо этого все файлы будут размещаться в директории QubesIncoming, расположенной в домашней директории виртуальной машины приложения.

Шаблонные виртуальные машины, целостность системы и защита от бэкдоров

Еще одним механизмом Qubes, реализующим дополнительный уровень защиты данных пользователя настольной системы, является механизм поддержания целостности системы. В том случае, если злоумышленникам удастся скомпрометировать обычную настольную систему, они смогут установить в нее версии таких стандартных утилит, как ls или bash с бэкдорами, или же установить дополнительные программы, активировав механизм их запуска в процессе загрузки системы. В случае Qubes виртуальные машины приложений основываются на шаблонных виртуальных машинах (templateVM), которые по умолчанию содержат базовые компоненты таких дистрибутивов, как Fedora, Debian или Whonix (участники сообщества также поддерживают шаблонные виртуальные машины на основе компонентов других популярных дистрибутивов). При создании новой виртуальной машины приложения вам предоставляется возможность выбора шаблона, на которой она будет основываться, а в процессе ее запуска ей предоставляется доступ на чтение к корневой файловой системе выбранной шаблонной виртуальной машины. Несмотря на то, что пользователь все же может устанавливать программное обеспечение в рамках виртуальной машины приложения или изменять содержимое ее корневой файловой системы, при остановке виртуальной машины все изменения удаляются. При этом сохраняются лишь изменения файловых систем, смонтированных в директории /rw, /usr/local и /home. Это означает, что история и закладки вашего веб-браузера будут сохранены, но в том случае, если злоумышленник все же сможет скомпрометировать ваш веб-браузер и попытается установить версию командной оболочки bash или веб-браузера Firefox с бэкдором, после следующего запуска этой виртуальной машины бэкдор исчезнет сам собой.
Также по умолчанию в рамках виртуальных машин приложений не исполняются какие-либо системные службы, такие, как демон планирования задач cron. Это означает, что злоумышленники также не смогут создать задачу cron для планирования исполнения бэкдора. Несмотря на то, что у злоумышленников все же остается возможность сохранения вредоносного программного обеспечения в домашней директории виртуальной машины приложения, после перезапуска виртуальной машины это вредоносное программное обеспечение больше не будет исполняться и у них не будет возможности его автоматического перезапуска.
Но как в таком случае устанавливать программное обеспечение? Так как каждая виртуальная машина приложения использует корневую файловую систему шаблонной виртуальной машины, при необходимости установки нового программного обеспечения вам придется запустить менеджер программного обеспечения в рамках соответствующей шаблонной виртуальной машины, такой, как yum, apt-get, менеджер с графическим интерфейсом или любой другой, и установить необходимое программное обеспечение. После этого Qubes установит факт наличия новых элементов меню приложений и сделает их доступными в рамках виртуальных машин приложений, основывающихся на использованной шаблонной виртуальной машине.
Единственный недостаток данного подхода заключается в том, что установленные приложения не обнаруживаются виртуальными машинами приложений до момента перезапуска последних. Ввиду того, что в случае компрометации шаблонной виртуальной машины будут скомпрометированы все основанные на ней виртуальные машины приложений, в руководстве Qubes рекомендуется не запускать шаблонные виртуальные машины, не использовать их для запуска обычных приложений и запускать их лишь тогда, когда необходимо установить надежное программное обеспечение. Хотя данный подход и подразумевает наличие дополнительных трудозатрат в процессе установки программного обеспечения, его достоинством является упрощение процесса обновления системы, ведь при наличии обновления безопасности вам придется установить его лишь в шаблонной виртуальной машине, так как после перезапуска всех основанных на ней виртуальных машин приложений файлы этого обновления автоматически появится в их файловых системах.

Обеспечение безопасной работы с сетью с помощью сетевых виртуальных машин

Еще одним механизмом обеспечения безопасности данных пользователя, применяемым в Qubes, является механизм разделения ресурсов сетевого соединения. После установки Qubes будет создано несколько специальных системных виртуальных машин, называемых сетевыми виртуальными машинами (netVM) с именами sys-net, sys-firewall и sys-whonix. Сетевая виртуальная машина с именем sys-net связана со всеми сетевыми устройствами вашего узла, поэтому они недоступны для любых других виртуальных машин. Так как данная сетевая виртуальная машина является единственной виртуальной машиной с IP-адресом во внешней сети, она считается недоверенной и обозначается с помощью красного цвета. Вы можете использовать утилиту конфигурации Network Manager для настройки сетевого соединения в рамках этой виртуальной машины, после чего в области уведомлений вашего окружения рабочего стола появится классический апплет Network Manager. Сетевая виртуальная машина с именем sys-firewall (технически классифицируемая как сетевая виртуальная машина с прокси — proxyVM) обозначена с помощью зеленого цвета и позволяет соединить сетевую виртуальную машину с именем sys-net непосредственно с сетевыми клиентами. По умолчанию создаваемые вами виртуальные машины приложений используют виртуальную машину с именем sys-firewall для организацию доступа к сети.
Для чего все эти сложности? Во-первых, сетевая виртуальная машина с именем sys-firewall функционирует как полноценный межсетевой экран, который может использоваться всеми вашими виртуальными машинами приложений. Несмотря на то, что по умолчанию все виртуальные машины приложений могут взаимодействовать с ресурсами сети Интернет без каких-либо ограничений, в составе Qubes поставляется приложение с графическим интерфейсом для упрощения ограничения доступа отдельных виртуальных машин приложений к сетевым ресурсам, благодаря которому заданные приложения будут получать доступ лишь к заданным узлам сети. Например, вы можете ограничить доступ виртуальной машины приложения для работы с онлайн-банкингом к ресурсам сети таким образом, что приложение сможет использовать лишь порт 443 для доступа к веб-сайту банка или виртуальной машины приложения для работы с сообщениями электронной почты таким образом, что оно будет взаимодействовать лишь с вашим удаленным почтовым сервером. Кроме того, вы можете ввести даже такие ограничения для других виртуальных машин, что они смогут взаимодействовать лишь с узлами из вашей внутренней сети. Любому, кому захочется атаковать одну из ваших виртуальных машин приложений, придется преодолеть сетевые виртуальные машины с именами sys-net и sys-firewall. Это также означает, что в том случае, если злоумышленники скомпрометируют виртуальную машину приложения, они не получат прямого доступа к сетевым устройствам и не смогут, к примеру, настроить автоматическое соединение с другой точкой доступа беспроводной сети.
Сетевая виртуальная машина sys-whonix функционирует аналогично sys-firewall за исключением того, что она автоматически активирует безопасный программный маршрутизатор сети Tor. Любые виртуальные машины приложений, использующие виртуальную машину sys-whonix вместо sys-firewall для доступа к сетевым ресурсам автоматически передают свой трафик посредством сети Tor. В составе Qubes также по умолчанию поставляется виртуальная машина приложения anon-whonix, созданная на основе дистрибутива Whonix для анонимной и безопасной работы в сети, включающая браузер Tor и по умолчанию передающая весь трафик посредством сетевой виртуальной машины sys-whonix.
Я уверен, что вы уже оценили высокую применимость операционной системы Qubes в ряде областей обусловленную тем, что она является более безопасной, чем любой обычный дистрибутив Linux для настольных компьютеров. Надеюсь, вы разобрались с отличиями подхода к защите пользовательских данных, примененного в Qubes, от подхода, примененного в тех программных продуктах, к работе с которыми вы привыкли. При работе с Qubes вы будете гораздо больше задумываться о том, как осуществляется изоляция файлов и данных, а также о том, что могут сделать злоумышленники, если им удастся скомпрометировать одну из ваших виртуальных машин приложений. Даже те дополнительные действия, которые необходимо выполнять при копировании и вставке данных посредством буфера обмена, а также при копировании файлов, будут привлекать ваше внимание к факту передачи информации между недоверенной и доверенной виртуальными машинами приложений и заставлять задумываться о последствиях. Я считаю, что описанные дополнительные меры безопасности на самом деле позволили мне немного расслабиться, так как, к примеру, теперь я уверен в том, что вложение из сообщения электронной почты, которое я открою в одноразовой виртуальной машине, не причинит вреда моей системе или вредоносный веб-сайт, который я открою в недоверенном веб-браузере не получит доступа к важным данным.
В данной статье я затронул лишь некоторые высокоуровневые механизмы защиты пользовательских данных, реализованные в операционной системе Qubes. В следующей статье серии я постараюсь описать методику загрузки и установки Qubes, дать пояснения относительно использования Qubes в качестве операционной системы для настольных компьютеров, не обходя вниманием некоторые базовые функции менеджера виртуальных машин Qubes и других специфичных для Qubes инструментов, а также приведу некоторые примеры организации повседневной работы с настольным компьютером, на котором используются приложения в отдельных виртуальных машинах. Далее в еще одной статье я постараюсь описать дополнительные возможности Qubes, включая технологию split-GPG (данная технология позволяет использовать ваш закрытый ключ GPG в рамках виртуальных машин приложений без необходимости осуществления непосредственного доступа к нему), методику более безопасной работы со ссылками с использованием стандартных обработчиков, методику автоматического открытия вложений сообщений электронной почты в отдельных одноразовых виртуальных машинах, а также методику создания виртуальной машины USB (usbVM), которая позволит изолировать все ваши устройства с интерфейсом USB (я также расскажу о том, почему это стоит делать).

Комментариев нет:

Отправить комментарий