Skip to content
KitploitKITPLOIT
ИнструментыБлог
Log in
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
qubes-mirage-firewall — Минимальный межсетевой экран на базе unikernel для QubesOS, который фильтрует сетевой трафик, реализует NAT и взаимодействует через Qubes DB и qrexec. | Kitploit
Инструменты/GitHubGitHub/mirage/qubes-mirage-firewall
Оборонительные ИнструментыКонтроль доступа к сетиВиртуализация для безопасностиСетевая безопасность
GitHubmirage/qubes-mirage-firewall

qubes-mirage-firewall

Минимальный межсетевой экран на базе unikernel для QubesOS, который фильтрует сетевой трафик, реализует NAT и взаимодействует через Qubes DB и qrexec.

Репозиторий
23929191 месяц назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

qubes-mirage-firewall

Уникернел, который может работать как ProxyVM в QubesOS, заменяя sys-firewall. Для реализации протоколов Qubes используется библиотека [mirage-qubes][].

Подробности см. в статье [A Unikernel Firewall for QubesOS][].

Готовые бинарные выпуски

Готовые бинарные файлы доступны на [странице релизов][]. Инструкции по установке см. в разделе Развёртывание ниже.

Сборка из исходников

Примечание: самый надёжный способ сборки — с использованием Docker или Podman. Для этого хорошо подходит Fedora 42, Debian 12 тоже работает, но вам нужно будет следовать инструкциям на [docker.com][debian-docker], чтобы получить Docker (не используйте версию из Debian).

Создайте новую AppVM Fedora-42 (или используйте существующую). В настройках Qube (Basic / Disk storage) увеличьте максимальный размер приватного хранилища с значения по умолчанию 2048 МиБ до 8192 МиБ. Откройте терминал.

Клонируйте этот Git-репозиторий и запустите скрипт build-with.sh с аргументом docker или podman (Примечание: вызов chcon обязателен на Fedora с новыми политиками SELinux, которые не позволяют стандартно хранить образы docker в домашнем каталоге):

mkdir /home/user/docker
sudo ln -s /home/user/docker /var/lib/docker
sudo chcon -Rt container_file_t /home/user/docker
sudo dnf install docker
sudo systemctl start docker
git clone https://github.com/mirage/qubes-mirage-firewall.git
cd qubes-mirage-firewall
sudo ./build-with.sh docker

Или

sudo systemctl start podman
git clone https://github.com/mirage/qubes-mirage-firewall.git
cd qubes-mirage-firewall
./build-with.sh podman

На моём ноутбуке это заняло около 15 минут (при повторном запуске будет гораздо быстрее). Шаг с символьной ссылкой в начале не нужен, если ваша сборочная VM является standalone. Он даёт Docker больше дискового пространства и позволяет не терять кэш образов Docker при перезагрузке Qube. Для Podman это не требуется, так как контейнеры по умолчанию хранятся в вашем домашнем каталоге.

Примечание: объектные файлы хранятся в каталоге _build для ускорения инкрементальной сборки. Если вы меняете зависимости, вам нужно будет удалить этот каталог перед повторной сборкой.

Можно устанавливать пакет Docker или Podman в шаблонную VM, если вы хотите, чтобы он сохранялся после перезагрузки, но сама сборка межсетевого экрана должна выполняться в обычной AppVM.

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

Скрипт сборки фиксирует версии используемых библиотек, гарантируя, что вы получите ровно тот же бинарный файл, что и в релизе. Если вы собираете без него, сборка будет выполняться с использованием последних версий (и хэш, вероятно, не совпадёт). Однако работать всё равно должно нормально.

Развёртывание

Ручное развёртывание

Если вы хотите развернуть вручную, вам нужно просто скачать qubes-firewall.xen и qubes-firewall.sha256 в domU и проверить, что файл .xen имеет соответствующий хэш. qubes-firewall.xen — это сам уникернел, его следует скопировать в vmlinuz в каталог /var/lib/qubes/vm-kernels/mirage-firewall в dom0, например (если dev — это AppVM, где вы выполнили сборку):

[tal@dom0 ~]$ mkdir -p /var/lib/qubes/vm-kernels/mirage-firewall/
[tal@dom0 ~]$ cd /var/lib/qubes/vm-kernels/mirage-firewall/
[tal@dom0 mirage-firewall]$ qvm-run -p dev 'cat mirage-firewall/qubes-firewall.xen' > vmlinuz

Выполните эту команду в dom0, чтобы создать VM mirage-firewall, используя добавленное выше ядро mirage-firewall:

qvm-create \
  --property kernel=mirage-firewall \
  --property kernelopts='' \
  --property memory=32 \
  --property maxmem=32 \
  --property netvm=sys-net \
  --property provides_network=True \
  --property vcpus=1 \
  --property virt_mode=pvh \
  --property audiovm='' \
  --label=green \
  --class StandaloneVM \
  mirage-firewall

qvm-features mirage-firewall qubes-firewall 1
qvm-features mirage-firewall no-default-kernelopts 1
qvm-features mirage-firewall skip-update 1

Развёртывание с помощью saltstack

Если вы знакомы с запуском salt-состояний в Qubes, вы также можете использовать скрипт SaltScriptToDownloadAndInstallMirageFirewallInQubes.sls для автоматического развёртывания последней версии mirage firewall в вашей Qubes OS. Введение можно найти здесь и здесь. Следуя инструкциям из первой ссылки, вы можете запустить скрипт в dom0 командой sudo qubesctl --show-output state.apply SaltScriptToDownloadAndInstallMirageFirewallInQubes saltenv=user. Скрипт проверяет контрольную сумму с интеграционного сервера и сравнивает её с последней версией, указанной в релизах GitHub. Возможно, потребуется изменить шаблоны VM в скрипте, которые используются для загрузки уникернела mirage, если в ваших шаблонах по умолчанию не установлены инструменты curl и tar. Также не забудьте изменить VM, в которых должен использоваться уникернел, или настроить «Qubes Global Settings».

Обновление

Чтобы обновиться с более раннего выпуска, просто перезапишите /var/lib/qubes/vm-kernels/mirage-firewall/vmlinuz новой версией и перезапустите VM межсетевого экрана.

Настройка AppVM для его использования

Вы можете запускать mirage-firewall вместе с существующим sys-firewall и выбирать, какие AppVM будут использовать какой межсетевой экран, через графический интерфейс. Чтобы настроить AppVM на его использование, перейдите в настройки app VM в GUI и измените её NetVM с default (sys-firewall) на mirage-firewall.

Вы также можете настроить это, выполнив следующую команду в dom0 (замените my-app-vm на имя AppVM):

qvm-prefs --set my-app-vm netvm mirage-firewall

Кроме того, вы можете настроить mirage-firewall как вашу VM межсетевого экрана по умолчанию.

Обратите внимание, что по умолчанию dom0 использует sys-firewall в качестве своей «UpdateVM» (прокси для загрузки обновлений). mirage-firewall не может использоваться для этой цели, но подойдёт любая Linux VM. https://www.qubes-os.org/doc/software-update-dom0/ сообщает:

Роль UpdateVM может быть назначена любой VM в Qubes VM Manager, и в этом выборе нет существенных последствий для безопасности. По умолчанию эта роль назначена firewallvm.

Настройка межсетевого экрана с OpenBSD-подобной netvm

OpenBSD в настоящее время не может использоваться в качестве netvm, поэтому если вы хотите использовать BSD в качестве вашей sys-net VM, вам нужно будет установить для неё netvm значение qubes-mirage-firewall (см. https://github.com/mirage/qubes-mirage-firewall/issues/146 для получения дополнительной информации). Это означает, что у вас будет AppVMs -> qubes-mirage-firewall <- OpenBSD, где стрелка обозначает настройку свойства netvm.

В этом случае вам нужно будет указать qubes-mirage-firewall, какой клиент AppVM следует использовать в качестве аплинка:

qvm-prefs --set mirage-firewall -- kernelopts '--ipv4=X.X.X.X --ipv4-gw=Y.Y.Y.Y'

где X.X.X.X — IP-адрес для mirage-firewall, а Y.Y.Y.Y — IP-адрес вашей OpenBSD HVM.

Компоненты

На этой диаграмме показаны основные компоненты (каждый прямоугольник соответствует исходному файлу .ml с тем же именем):

Ethernet-кадры поступают от клиентских qube (таких как work или personal) или от sys-net. Интернет-пакеты (IP) отправляются в firewall, который обращается к таблице NAT и правилам из QubesDB, чтобы решить, что делать с пакетом. Если пакет следует отправить дальше, он использует router для отправки его выбранному получателю. client_net следит за базой данных XenStore, предоставляемой dom0, чтобы узнавать, когда клиентов нужно добавить или удалить.

Процесс загрузки:

Скачать инструмент