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

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

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
bpflock — أداة أمنية تعتمد على eBPF لقفل وتدقيق أجهزة لينكس. تقيد ميزات النواة، تمنع التنفيذ بدون ملفات، تحمي الذاكرة، وتقوي الحاويات وأجهزة إنترنت الأشياء عبر ملفات تعريف تصريحية. | Kitploit
أدوات/GitHubGitHub/linux-lock/bpflock
أدوات دفاعيةأمن الحاوياتأمان إنترنت الأشياء
GitHublinux-lock/bpflock

bpflock

أداة أمنية تعتمد على eBPF لقفل وتدقيق أجهزة لينكس. تقيد ميزات النواة، تمنع التنفيذ بدون ملفات، تحمي الذاكرة، وتقوي الحاويات وأجهزة إنترنت الأشياء عبر ملفات تعريف تصريحية.

عرض المستودع
1571543منذ 4 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

bpflock - قفل أجهزة لينكس

Bpflock Logo

bpflock - أمان مدعوم بـ eBPF لقفل وتدقيق أجهزة لينكس.

ملاحظة: bpflock حاليًا في مرحلة تجريبية، قد يتعطل، قد تتغير الخيارات ودلالات الأمان، سيتم تحديث بعض برامج BPF لاستخدام مكتبة Cilium ebpf.

الأقسام

  • 1. المقدمة
  • 2. نظرة عامة على الوظائف
    • 2.1 ميزات الأمان
    • 2.2 الدلالات
  • 3. النشر
  • 4. التوثيق
  • 5. البناء

1. المقدمة

يستخدم bpflock eBPF لتعزيز أمان لينكس. من خلال تقييد الوصول إلى مجموعة متنوعة من ميزات لينكس، يمكن لـ bpflock تقليل سطح الهجوم وحظر بعض تقنيات الهجوم المعروفة.

فقط البرامج مثل مديري الحاويات، systemd والحاويات/البرامج الأخرى التي تعمل في مساحات أسماء pid والشبكة للمضيف يُسمح لها بالوصول إلى ميزات لينكس الكاملة، بينما الحاويات والتطبيقات التي تعمل في مساحة الأسماء الخاصة بها ستكون مقيدة. إذا تم تشغيل برامج bpflock bpf تحت ملف التعريف restricted فسيتم رفض الوصول لجميع البرامج/الحاويات بما في ذلك المميزة.

يحمي bpflock أجهزة لينكس من خلال الاستفادة من ميزات أمان متعددة بما في ذلك وحدات أمان لينكس + BPF.

ملاحظات حول التصميم المعماري والأمني:

  • bpflock ليس حلاً لتصنيف التحكم الإلزامي في الوصول، ولا ينوي استبدال AppArmor، SELinux، وحلول MAC الأخرى. يستخدم bpflock ملف تعريف أمان تصريحي بسيط.
  • يقدم bpflock عدة برامج bpf صغيرة يمكن إعادة استخدامها في سياقات متعددة من نشر السحابة الأصلية إلى أجهزة لينكس الخاصة بإنترنت الأشياء.
  • يمكن لـ bpflock تقييد root من الوصول إلى ميزات لينكس معينة، لكنه لا يحمي من root الخبيث.

2. نظرة عامة على الوظائف

2.1 ميزات الأمان

يقدم bpflock حماية أمان متعددة يمكن تصنيفها كالتالي:

  • حماية الذاكرة

    • تأمين صورة النواة
    • حماية وحدات النواة
    • حماية BPF
  • حماية العمليات

    • تنفيذ الذاكرة بدون ملف
    • حماية مساحات الأسماء
  • هجمات إضافة الأجهزة

    • حماية إضافات USB
  • تتبع النظام والتطبيقات

    • تتبع تنفيذ التطبيقات
    • تتبع عمليات النظام المميزة
  • حماية نظام الملفات

    • حماية نظام الملفات الجذر للقراءة فقط
    • حماية sysfs
  • حماية الشبكة

    • قد يتضمن bpflock في المستقبل حماية شبكة بسيطة يمكن استخدامها في حمل عمل جهاز واحد أو Linux-IoT، لكنه لن يتضمن حماية سحابة أصلية. Cilium وحلول kubernetes CNI الأخرى هي أفضل بكثير.

2.2 الدلالات

يحافظ bpflock على دلالات الأمان بسيطة. يدعم ثلاثة ملفات تعريف عالمية لتغطية نطاق الأمان على نطاق واسع، وتقييد الوصول إلى ميزات لينكس محددة.

  • profile: هذا هو ملف التعريف العالمي الذي يمكن تطبيقه لكل برنامج bpf، ويأخذ أحد القيم التالية:

    • allow|none|privileged: هي نفسها، تحدد أقل ملف تعريف آمن. في هذا الملف يتم تسجيل الوصول والسماح به لجميع العمليات. مفيد لتسجيل أحداث الأمان.
    • baseline: ملف تعريف مقيد حيث يتم رفض الوصول لجميع العمليات، باستثناء التطبيقات والحاويات المميزة التي تعمل في مساحات أسماء المضيف، أو لكل ملفات تعريف cgroup المسموح بها في خريطة bpf bpflock_cgroupmap.
    • restricted: ملف تعريف مقيد بشدة حيث يتم رفض الوصول لجميع العمليات.
  • العمليات/الأوامر المسموحة أو المحظورة:

    تحت ملفات تعريف allow|privileged أو baseline، يمكن تحديد قائمة من الأوامر المسموحة أو المحظورة وسيتم تطبيقها.

    • --protection-allow: قائمة مفصولة بفواصل من العمليات المسموحة. صالحة تحت ملف تعريف baseline، مفيدة للتطبيقات المحددة جدًا والتي تؤدي عمليات مميزة. يقلل من استخدام ملف تعريف allow | privileged، فبدلاً من استخدام ملف تعريف privileged، يمكننا تحديد ملف تعريف وإضافة مجموعة من الأوامر المسموحة لتقديم تعريف حالة بحالة لمثل هذه التطبيقات.

للاطلاع على أمثلة أمان bpf، تحقق من أمثلة تكوين bpflock

3. النشر

3.1 المتطلبات الأساسية

يحتاج bpflock إلى ما يلي:

  • إصدار نواة لينكس >= 5.13 مع التكوين التالي:

    root@kitploit:~
    CONFIG_BPF_SYSCALL=y
    CONFIG_DEBUG_INFO=y
    CONFIG_DEBUG_INFO_BTF=y
    CONFIG_KPROBES=y
    CONFIG_LSM="...,bpf"
    CONFIG_BPF_LSM=y
    
  • من الواضح نواة ممكّنة بـ BTF.

تمكين دعم BPF LSM

إذا تم تجميع نواتك مع CONFIG_BPF_LSM=y تحقق من /boot/config-* لتأكيد، ولكن عند تشغيل bpflock يفشل مع:

root@kitploit:~
must have a kernel with 'CONFIG_BPF_LSM=y' 'CONFIG_LSM=\"...,bpf\"'"

لتمكين BPF LSM كمثال على Ubuntu:

  1. افتح ملف /etc/default/grub بصلاحيات مميزة بالطبع.
  2. أضف ما يلي إلى متغير GRUB_CMDLINE_LINUX واحفظ.
    root@kitploit:~
    "lsm=lockdown,capability,yama,apparmor,bpf"
    
    أو
    root@kitploit:~
    GRUB_CMDLINE_LINUX="lsm=lockdown,capability,yama,apparmor,bpf"
    
  3. قم بتحديث تكوين grub باستخدام:
    root@kitploit:~
    sudo update-grub2
    
  4. أعد التشغيل إلى نواتك.

3.2 النشر باستخدام Docker

للتنزيل باستخدام ملف التعريف الافتراضي allow أو privileged (أقل ملف تعريف آمن):

root@kitploit:~
docker run --name bpflock -it --rm --cgroupns=host \
  --pid=host --privileged \
  -v /sys/kernel/:/sys/kernel/ \
  -v /sys/fs/bpf:/sys/fs/bpf linuxlock/bpflock

تنفيذ الملفات الثنائية بدون ملفات

لتسجيل وتقييد تنفيذ الملفات الثنائية بدون ملفات قم بالتشغيل بـ:

root@kitploit:~
docker run --name bpflock -it --rm --cgroupns=host --pid=host --privileged \
  -e "BPFLOCK_FILELESSLOCK_PROFILE=restricted" \
  -v /sys/kernel/:/sys/kernel/ \
  -v /sys/fs/bpf:/sys/fs/bpf linuxlock/bpflock

عند التشغيل تحت ملف تعريف restricted، ستظهر سجلات الحاوية:

root@kitploit:~
time="2022-02-04T14:54:33Z" level=info msg="event=syscall_execve tgid=1833 pid=1833 ppid=1671 uid=1000 cgroupid=8821 comm=loader pcomm=bash filename=./loader retval=0" bpfprog=execsnoop subsys=bpf

time="2022-02-04T14:54:33Z" level=info msg="event=lsm_bprm_creds_from_file tgid=1833 pid=1833 ppid=1671 uid=1000 cgroupid=8821 comm=loader pcomm=bash filename=memfd:memfd-test retval=-1 reason=denied (restricted)" bpfprog=filelesslock subsys=bpf

time="2022-02-04T14:54:33Z" level=info msg="event=syscall_execve tgid=1833 pid=1833 ppid=0 uid=1000 cgroupid=8821 comm= pcomm= filename=/proc/self/fd/3 retval=-1" bpfprog=execsnoop subsys=bpf

التشغيل تحت ملف تعريف restricted قد يسبب مشاكل، لهذا السبب ملف التعريف الافتراضي هو allow.

حماية وحدات النواة

لتطبيق حماية وحدات النواة قم بالتشغيل مع متغير البيئة BPFLOCK_KMODLOCK_PROFILE=baseline أو BPFLOCK_KMODLOCK_PROFILE=restricted:

root@kitploit:~
docker run --name bpflock -it --rm --cgroupns=host --pid=host --privileged \
  -e "BPFLOCK_KMODLOCK_PROFILE=restricted" \
  -v /sys/kernel/:/sys/kernel/ \
  -v /sys/fs/bpf:/sys/fs/bpf linuxlock/bpflock

مثال:

root@kitploit:~
$ sudo unshare -p -n -f
# modprobe xfs
modprobe: ERROR: could not insert 'xfs': Operation not permitted
root@kitploit:~
time="2022-02-07T06:50:25+01:00" level=info msg="event=syscall_execve tgid=52323 pid=52323 ppid=52288 uid=0 cgroupid=7014 comm=modprobe pcomm=bash filename=/usr/sbin/modprobe retval=0" bpfprog=execsnoop subsys=bpf

time="2022-02-07T06:50:25+01:00" level=info msg="event=lsm_kernel_read_file operation=loading module tgid=52323 pid=52323 ppid=52288 uid=0 cgroupid=7014 comm=modprobe pcomm=bash filename=xfs.ko retval=-1 reason=denied (restricted)" bpfprog=kmodlock subsys=bpf

تأمين صورة النواة

لتطبيق تأمين صورة النواة قم بالتشغيل مع متغير البيئة BPFLOCK_KIMGLOCK_PROFILE=baseline:

root@kitploit:~
docker run --name bpflock -it --rm --cgroupns=host --pid=host --privileged \
  -e "BPFLOCK_KIMGLOCK_PROFILE=baseline" \
  -v /sys/kernel/:/sys/kernel/ \
  -v /sys/fs/bpf:/sys/fs/bpf linuxlock/bpflock
root@kitploit:~
$ sudo unshare -f -p -n bash
# head -c 1 /dev/mem
head: cannot open '/dev/mem' for reading: Operation not permitted
root@kitploit:~
time="2022-02-07T06:57:22+01:00" level=info msg="event=syscall_execve tgid=52428 pid=52428 ppid=52288 uid=0 cgroupid=7014 comm=head pcomm=bash filename=/usr/bin/head retval=0" bpfprog=execsnoop subsys=bpf

time="2022-02-07T06:57:22+01:00" level=info msg="event=lsm_locked_down operation=/dev/mem,kmem,port tgid=52428 pid=52428 ppid=52288 uid=0 cgroupid=7014 comm=head pcomm=bash retval=-1 reason=denied (baseline)" bpfprog=kimglock subsys=bpf

حماية BPF

لتطبيق تقييد bpf قم بالتشغيل مع متغير البيئة BPFLOCK_BPFRESTRICT_PROFILE=baseline أو BPFLOCK_BPFRESTRICT_PROFILE=restricted:

root@kitploit:~
docker run --name bpflock -it --rm --cgroupns=host --pid=host --privileged \
  -e "BPFLOCK_BPFRESTRICT_PROFILE=baseline" \
  -v /sys/kernel/:/sys/kernel/ \
  -v /sys/fs/bpf:/sys/fs/bpf linuxlock/bpflock

مثال للتشغيل في مساحات أسماء pid وشبكة مختلفة وباستخدام bpftool:

root@kitploit:~
$ sudo unshare -f -p -n bash
# bpftool prog
Error: can't get next program: Operation not permitted
root@kitploit:~
time="2022-02-04T15:40:56Z" level=info msg="event=lsm_bpf tgid=2378 pid=2378 ppid=2364 uid=0 cgroupid=9458 comm=bpftool pcomm=bash filename= retval=-1 reason=baseline" bpfprog=bpfrestrict subsys=bpf

time="2022-02-04T15:40:56Z" level=info msg="event=lsm_bpf tgid=2378 pid=2378 ppid=2364 uid=0 cgroupid=9458 comm=bpftool pcomm=bash filename= retval=-1 reason=baseline" bpfprog=bpfrestrict subsys=bpf

التشغيل مع ملف تعريف -e "BPFLOCK_BPFRESTRICT_PROFILE=restricted" سيمنع bpf للجميع:

root@kitploit:~
time="2022-02-04T15:44:13Z" level=info msg="event=syscall_execve tgid=2500 pid=2500 ppid=2499 uid=0 cgroupid=9458 comm=bpftool pcomm=sudo filename=./tools/amd64/bpftool retval=0" bpfprog=execsnoop subsys=bpf

time="2022-02-04T15:44:13Z" level=info msg="event=lsm_bpf tgid=2500 pid=2500 ppid=2499 uid=0 cgroupid=9458 comm=bpftool pcomm=sudo filename= retval=-1 reason=denied (restricted)" bpfprog=bpfrestrict subsys=bpf

time="2022-02-04T15:44:13Z" level=info msg="event=lsm_bpf tgid=2500 pid=2500 ppid=2499 uid=0 cgroupid=9458 comm=bpftool pcomm=sudo filename= retval=-1 reason=denied (restricted)" bpfprog=bpfrestrict subsys=bpf

3.3 ملف التكوين والبيئة

يمكن تحقيق تمرير التكوين كوصلات ربط باستخدام الأمر التالي.

على افتراض أن bpflock.yaml وملفات تعريف bpf.d موجودة في الدليل الحالي داخل دليل bpflock، يمكننا ببساطة استخدام:

root@kitploit:~
ls bpflock/
  bpf.d  bpflock.d  bpflock.yaml
root@kitploit:~
docker run --name bpflock -it --rm --cgroupns=host --pid=host --privileged \
  -v $(pwd)/bpflock/:/etc/bpflock \
  -v /sys/kernel/:/sys/kernel/ \
  -v /sys/fs/bpf:/sys/fs/bpf linuxlock/bpflock

يمكن أيضًا تمرير متغيرات البيئة باستخدام ملفات عبر --env-file. يمكن تمرير جميع المعاملات كمتغيرات بيئة باستخدام التنسيق BPFLOCK_$VARIABLE_NAME=VALUE.

مثال تشغيل مع متغيرات البيئة في ملف:

root@kitploit:~
docker run --name bpflock -it --rm --cgroupns=host --pid=host --privileged \
  --env-file bpflock.env.list \
  -v /sys/kernel/:/sys/kernel/ \
  -v /sys/fs/bpf:/sys/fs/bpf linuxlock/bpflock

4. التوثيق

يمكن العثور على ملفات التوثيق هنا.

5. البناء

يستخدم bpflock docker BuildKit للبناء و Golang لعمل بعض الفحوصات وتشغيل الاختبارات. يتم بناء bpflock داخل حاوية Ubuntu التي تقوم بتنزيل حزمة golang القياسية.

قم بتشغيل ما يلي لبناء حاوية bpflock docker:

root@kitploit:~
git submodule update --init --recursive
make

تُبنى برامج Bpf باستخدام libbpf. صورة docker المستخدمة هي Ubuntu.

إذا كنت ترغب في بناء برامج bpf فقط مباشرة دون استخدام docker، ففي Ubuntu:

root@kitploit:~
sudo apt install -y pkg-config bison binutils-dev build-essential \
        flex libc6-dev clang-12 libllvm12 llvm-12-dev libclang-12-dev \
        zlib1g-dev libelf-dev libfl-dev gcc-multilib zlib1g-dev \
        libcap-dev libiberty-dev libbfd-dev

ثم قم بتشغيل:

root@kitploit:~
make bpf-programs

في هذه الحالة ستكون البرامج المُنشأة داخل الدليل ./bpf/build/...

الاعتمادات

يستخدم bpflock الكثير من الموارد بما في ذلك كود المصدر من مشاريع Cilium و bcc.

الترخيص

مكونات مساحة المستخدم الخاصة بـ bpflock مرخصة بموجب رخصة Apache، الإصدار 2.0. كود BPF حيثما هو مذكور مرخص بموجب الرخصة العامة العامة، الإصدار 2.0.

تنزيل الأداة
baseline
  • --protection-block: قائمة مفصولة بفواصل من العمليات المحظورة. صالحة تحت ملفات تعريف allow|privileged و baseline، تسمح بتقييد الوصول لبعض الميزات دون استخدام ملف تعريف restricted الكامل الذي قد يعطل بعض التطبيقات المحددة. استخدام ملفات تعريف baseline أو privileged يفتح الباب للوصول إلى معظم ميزات لينكس، ولكن مع خيار --protection-block يمكن حظر جزء من هذا الوصول.