Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

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.

عرض المستودع
23929منذ يوم واحدتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

qubes-mirage-firewall

نواة أحادية (unikernel) يمكنها العمل كـ ProxyVM في QubesOS، لتحل محل sys-firewall. يستخدم مكتبة mirage-qubes لتنفيذ بروتوكولات Qubes.

انظر جدار حماية أحادي النواة لـ QubesOS لمزيد من التفاصيل.

الإصدارات الثنائية

تتوفر ثنائيات مبنية مسبقًا من صفحة الإصدارات. انظر قسم النشر أدناه للحصول على تعليمات التثبيت.

البناء من المصدر

ملاحظة: الطريقة الأكثر موثوقية للبناء هي استخدام Docker أو Podman. يعمل Fedora 42 بشكل جيد لهذا الغرض، كما يعمل Debian 12 أيضًا، لكنك ستحتاج إلى اتباع التعليمات في docker.com للحصول على Docker (لا تستخدم نسخة Debian).

أنشئ AppVM جديد بنظام Fedora-42 (أو أعد استخدام واحد موجود). في إعدادات Qube (الأساسي / تخزين القرص)، قم بزيادة الحد الأقصى لحجم التخزين الخاص من الافتراضي 2048 MiB إلى 8192 MiB. افتح محطة طرفية.

استنسخ مستودع Git هذا وشغّل السكربت build-with.sh مع تمرير docker أو podman كوسيط (ملاحظة: استدعاء chcon إلزامي على Fedora مع سياسات SELinux الجديدة التي لا تسمح بالاحتفاظ بصور docker في مجلد المستخدم بشكل اعتيادي):

root@kitploit:~
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

أو

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

استغرق هذا حوالي 15 دقيقة على جهازي المحمول (سيكون أسرع بكثير إذا أعدت تشغيله). خطوة الروابط الرمزية (symlink) في البداية ليست ضرورية إذا كانت 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 حيث بنيته):

root@kitploit:~
[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 التي أضفتها أعلاه

root@kitploit:~
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 تلقائيًا في نظام Qubes OS لديك. يمكن العثور على مقدمة هنا وهنا. باتباع التعليمات من الرابط الأول، يمكنك تشغيل السكربت في dom0 بالأمر sudo qubesctl --show-output state.apply SaltScriptToDownloadAndInstallMirageFirewallInQubes saltenv=user. يتحقق السكربت من المجموع الاختباري من خادم التكامل ويقارنه بأحدث إصدار متاح في إصدارات GitHub. قد يكون من الضروري تعديل قوالب VM في السكربت المستخدمة لتنزيل نواة mirage الأحادية، إذا كانت قوالبك الافتراضية لا تحتوي على الأداتين curl و tar مثبتتين افتراضيًا. أيضًا لا تنسَ تغيير VMs التي يجب استخدام النواة الأحادية فيها أو ضبط "الإعدادات العامة لـ Qubes".

الترقية

للترقية من إصدار سابق، فقط استبدل /var/lib/qubes/vm-kernels/mirage-firewall/vmlinuz بالنسخة الجديدة وأعد تشغيل VM جدار الحماية.

تكوين AppVMs لاستخدامه

يمكنك تشغيل mirage-firewall جنبًا إلى جنب مع sys-firewall الحالي ويمكنك اختيار أي AppVMs تستخدم أي جدار حماية عبر الواجهة الرسومية. لتكوين AppVM لاستخدامه، انتقل إلى إعدادات VM التطبيق في الواجهة الرسومية وغيّر NetVM من default (sys-firewall) إلى mirage-firewall.

يمكنك أيضًا تكوينه بتشغيل هذا الأمر في dom0 (استبدل my-app-vm باسم AppVM):

root@kitploit:~
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.

تكوين جدار الحماية مع netvm شبيه بـ OpenBSD

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 عميل يجب استخدامه كوصلة صاعدة:

root@kitploit:~
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 بنفس الاسم):

تصل إطارات إيثرنت من qubes الخاصة بالعملاء (مثل work أو personal) أو من sys-net. تُرسل حزم الإنترنت (IP) إلى firewall، الذي يستشير جدول NAT والقواعد من QubesDB ليقرر ما يجب فعله بالحزمة. إذا كان يجب تمريرها، فإنه يستخدم router لإرسالها إلى الوجهة المختارة. client_net يراقب قاعدة بيانات XenStore التي يوفرها dom0 لمعرفة متى يجب إضافة العملاء أو إزالتهم.

عملية الإقلاع:

  • config.ml يصف المكتبات المستخدمة وإعدادات التكوين الثابتة (حجم جدول NAT). تستخدم أداة mirage هذا لتوليد main.ml.
  • main.ml يهيئ برامج التشغيل المحددة بواسطة config.ml ويستدعي دالة start في unikernel.ml.
  • unikernel.ml يربط وكلاء Qubes، ويجهز مكونات الشبكة، ثم ينتظر طلب إيقاف التشغيل.

نشر سهل للمطورين

للتطوير، استخدم سكربتات test-mirage لنشر النواة الأحادية (qubes-firewall.xen) من AppVM التطوير الخاص بك. يستغرق هذا مزيدًا من الإعداد في المرة الأولى، لكنه سيكون أسرع بكثير بعد ذلك. مثال:

root@kitploit:~
[user@dev ~]$ test-mirage dist/qubes-firewall.xen mirage-firewall
Waiting for 'Ready'... OK
Uploading 'dist/qubes-firewall.xen' (7454880 bytes) to "mirage-test"
Waiting for 'Booting'... OK
Connecting to mirage-test console...
Solo5: Xen console: port 0x2, ring @0x00000000FEFFF000
            |      ___|
  __|  _ \  |  _ \ __ \
\__ \ (   | | (   |  ) |
____/\___/ _|\___/____/
Solo5: Bindings version v0.7.3
Solo5: Memory map: 32 MB addressable:
Solo5:   reserved @ (0x0 - 0xfffff)
Solo5:       text @ (0x100000 - 0x319fff)
Solo5:     rodata @ (0x31a000 - 0x384fff)
Solo5:       data @ (0x385000 - 0x53ffff)
Solo5:       heap >= 0x540000 < stack < 0x2000000
2022-08-13 14:55:38 -00:00: INF [qubes.rexec] waiting for client...
2022-08-13 14:55:38 -00:00: INF [qubes.db] connecting to server...
2022-08-13 14:55:38 -00:00: INF [qubes.db] connected
2022-08-13 14:55:38 -00:00: INF [qubes.db] got update: "/mapped-ip/10.137.0.20/visible-ip" = "10.137.0.20"
2022-08-13 14:55:38 -00:00: INF [qubes.db] got update: "/mapped-ip/10.137.0.20/visible-gateway" = "10.137.0.23"
2022-08-13 14:55:38 -00:00: INF [qubes.rexec] client connected, using protocol version 3
2022-08-13 14:55:38 -00:00: INF [unikernel] QubesDB and qrexec agents connected in 0.041 s
2022-08-13 14:55:38 -00:00: INF [dao] Got network configuration from QubesDB:
            NetVM IP on uplink network: 10.137.0.4
            Our IP on uplink network:   10.137.0.23
            Our IP on client networks:  10.137.0.23
            DNS resolver:               10.139.1.1
            DNS secondary resolver:     10.139.1.2
2022-08-13 14:55:38 -00:00: INF [net-xen frontend] connect 0
2022-08-13 14:55:38 -00:00: INF [net-xen frontend] create: id=0 domid=1
2022-08-13 14:55:38 -00:00: INF [net-xen frontend]  sg:true gso_tcpv4:true rx_copy:true rx_flip:false smart_poll:false
2022-08-13 14:55:38 -00:00: INF [net-xen frontend] MAC: 00:16:3e:5e:6c:00
2022-08-13 14:55:38 -00:00: INF [ethernet] Connected Ethernet interface 00:16:3e:5e:6c:00
2022-08-13 14:55:38 -00:00: INF [ARP] Sending gratuitous ARP for 10.137.0.23 (00:16:3e:5e:6c:00)
2022-08-13 14:55:38 -00:00: INF [ARP] Sending gratuitous ARP for 10.137.0.23 (00:16:3e:5e:6c:00)
2022-08-13 14:55:38 -00:00: INF [udp] UDP layer connected on 10.137.0.23
2022-08-13 14:55:38 -00:00: INF [dao] Watching backend/vif
2022-08-13 14:55:38 -00:00: INF [memory_pressure] Writing meminfo: free 20MiB / 27MiB (72.68 %)

اختبار عمل جدار الحماية

تتوفر نواة أحادية تختبر جدار الحماية في المجلد الفرعي test/. لاستخدامها، شغّل test.sh واتبع التعليمات لإعداد بيئة الاختبار.

النشرات الأمنية

انظر القضايا الموسومة بـ "security" للحصول على النشرات الأمنية التي تؤثر على جدار الحماية.

الترخيص

انظر LICENSE.md

تنزيل الأداة