
وكيل Linux قائم على eBPF يفرض سياسات وصول على مستوى الملفات التنفيذية في مساحة النواة، ويحصر العمليات في بيئة معزولة ويقيّد الوصول إلى الملفات والشبكة ووحدة معالجة الرسومات عبر خطافات LSM.
Bomfather Agent هو وكيل يعتمد على eBPF يعمل في مساحة النواة لحظر الإجراءات بناءً على سياسة محددة.
لقد بنينا هذا الوكيل لحل المشكلات التي واجهناها مع الحلول الموجودة.
هذه النقاط هي نجمنا الشمالي لهذا المشروع بأكمله. جميع الميزات والتطورات تهدف إلى تحقيق هذه النقاط.
لاحظ أننا نحاول تجنب استخدام الكود المولّد بالذكاء الاصطناعي في هذا المستودع ولن نقبل طلبات السحب المولّدة بالذكاء الاصطناعي.
(إليك دليل حول كيفية تمكين LSM على نظامك: https://docs.bomfather.dev/prerequisites)
للبناء من المصدر، تحتاج إلى تثبيت الأدوات التالية:
go 1.26 or higher
make
clang
llvm
llvm-14
protobuf-compiler
git
على Debian/Ubuntu، يمكنك تثبيت تبعيات البناء غير الخاصة بـ Go باستخدام:
apt-get update \
&& apt-get install -y --no-install-recommends \
clang \
llvm \
llvm-14 \
protobuf-compiler \
&& rm -rf /var/lib/apt/lists/*
ثم قم ببناء الوكيل باستخدام:
make
للبدء السريع، يمكنك استخدام الأمر التالي لتشغيل الوكيل بسياسة افتراضية:
sudo ./agent run --config config.yaml
سيقوم هذا بتشغيل الوكيل بأي سياسة محددة في ملف الإعدادات.
يمكنك بعد ذلك اختياريًا استخدام الأمر التالي لرؤية حالة الوكيل:
sudo ./agent status --help
أمر الحالة مخصص بشكل أساسي لقراءة مقاييس Prometheus من الوكيل.
السياسة هي ملف YAML يحدد القواعد التي يفرضها الوكيل.
يتكون الإعداد بشكل أساسي من قسمين، policies و attributes. يحدد قسم policies من يُسمح له بالوصول إلى مورد محمي. يحدد قسم policies الملفات التنفيذية المسموح لها بالوصول إلى الأدلة أو عناوين IP المحمية. تحدد attributes حدود الملف التنفيذي، لذا يمكن للسمة أن تجعل الملف التنفيذي يتصل بعنوان IP واحد فقط وتحظره من الاتصال بأي عنوان IP آخر.
هناك طرق عديدة لإنشاء سياسة، لذا لكل ميزة، لدينا قسم مخصص في الوثائق يشرح كيفية إنشاء سياسة لتلك الميزة: https://docs.bomfather.dev/configuration-guide.
لكن لحالة استخدام البدء السريع، يمكنك استخدام ملف السياسة التالي:
policies:
- executable: "filepath = [absolute-path]/app/signer"
can_access_dirs:
- "[absolute-path]/secrets/keys : read"
is_allowed_to_access_ip:
- "kms.us-east-1.amazonaws.com:443"
attributes:
- path: "type = executable | filepath = [absolute-path]/app/signer"
can_only_access_ips:
- "kms.us-east-1.amazonaws.com:443"
تسمح لنا هذه السياسة بعزل الموقّع في بيئة معزولة وضمان أنه العملية الوحيدة على النظام التي يمكنها الوصول إلى البيانات.
في قسم policies، نحدد أن الملف التنفيذي signer هو العملية الوحيدة المسموح لها بالوصول إلى دليل /secrets/keys وعناوين IP المرتبطة بنقطة نهاية AWS KMS.
في قسم attributes، نحدد أن الملف التنفيذي signer مسموح له فقط بالوصول إلى نقطة نهاية AWS KMS، وليس أي عناوين IP أخرى.
في هذا الإعداد البسيط نسبيًا، تمكنا من تقوية عملية signer الخاصة بنا بشكل كبير (والتي في العالم الحقيقي قد تكون جزءًا من نظام أكبر) في إعداد لا يتجاوز 10 أسطر فقط.
هناك بعض الأمثلة الواقعية الإضافية في الوثائق https://docs.bomfather.dev/examples/gpu.
اختياريًا، إذا كنت ترغب في تصدير الانتهاكات التي يكتشفها الوكيل، يمكنك تضمين مفتاح API وسيرسل الوكيل الانتهاكات إلى خوادم Bomfather.
لكن الأهم من ذلك، هذا ليس إلزاميًا، سيعمل الوكيل بنفس الطريقة بدونه. لا يتم تعطيل أي ميزات إذا لم تضمّن مفتاح API، وإذا لم يتم تضمين مفتاح API، لا يتم إرسال أي بيانات من أي نوع إلى خوادم Bomfather.
إذا كنت ترغب بالفعل في استخدام خوادم Bomfather، يرجى التواصل معنا على [email protected].