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

Про необходимость подобной изоляции говорят уже давно, хотя таких кардинальных решений ещё не было. В Qubes используется система виртуализации Xen, а программы разделены на работающие в собственных виртуальных окружениях классы. Системные сервисы (вроде сетевой подсистемы или драйверов накопителей) также работают в отдельных виртуальных машинах. Есть здесь хранилище данных – программе доступна на чтение корневая ФС и ее локальные файлы, а также специальный сервис взаимодействия между приложениями. Дистрибутив обеспечивает бесшовный доступ к установленным продуктам, при этом программы из разных классов выделяются цветом рамки окна.

Рабочий стол Qubes, скриншот с theinvisiblethings.blogspot.com

Все довольно красиво, но экстремальная изоляция требует приличной вычислительной мощности – процессора с архитектурой AMD64 (желательно с поддержкой VT-d или AMD IOMMU) и 4 ГБ оперативной памяти. Есть определенные трудности с поддержкой видеоадаптеров NVIDIA (продукты ATI разработчики еще не тестировали), пока без проблем работают только интегрированные адаптеры Intel. Устроена система просто – виртуальные машины генерируются на основе шаблона, а набор пакетов взят из Fedora 17. Также в системе есть графический конфигуратор Qubes Manager. Для обновления окружений используется специальный прокси, не требующий предоставления им доступа к сети.

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