فالكو
Falco هي أداة أمان وقت تشغيل سحابية أصلية لأنظمة تشغيل Linux. وهو مصمم لاكتشاف السلوك غير الطبيعي والتهديدات الأمنية المحتملة والتنبيه بها في الوقت الفعلي.
في جوهره، يعد Falco وكيل مراقبة واكتشاف kernel يراقب الأحداث، مثل مكالمات النظام، بناءً على قواعد مخصصة. يمكن لـ Falco تحسين هذه الأحداث من خلال دمج البيانات التعريفية من وقت تشغيل الحاوية وKubernetes. يمكن تحليل الأحداث المجمعة خارج المضيف في SIEM أو أنظمة بحيرة البيانات.
Falco، الذي أنشأته Sysdig في الأصل، هو مشروع متدرج في إطار مؤسسة Cloud Native Computing Foundation (CNCF) المستخدمة في الإنتاج من قبل مؤسسات مختلفة.
للحصول على معلومات فنية مفصلة ورؤى حول التهديدات السيبرانية التي يمكن لـ Falco اكتشافها، قم بزيارة موقع Falco الرسمي.
للحصول على معلومات شاملة حول آخر التحديثات والتغييرات في المشروع، يرجى الرجوع إلى سجل التغيير. بالإضافة إلى ذلك، قمنا بتوثيق عملية الإصدار لتقديم إصدارات جديدة من Falco.
فالكو ريبو: تشغيل جوهر مشروع فالكو
هذا هو مستودع Falco الرئيسي الذي يحتوي على الكود المصدري لبناء ثنائي Falco. من خلال استخدام libs وملف التكوين falco.yaml، يشكل هذا المستودع أساس وظائف Falco. يرتبط مستودع Falco ارتباطًا وثيقًا بالمستودعات الأساسية التالية:
- falcosecurity/libs: مكتبات Falco هي المفتاح لعملياتها الأساسية، وتشكل الجزء الأكبر من الكود المصدري لثنائي Falco وتوفر ميزات أساسية مثل برامج تشغيل kernel.
- falcosecurity/rules: يحتوي على مجموعة القواعد الرسمية لـ Falco، مما يوفر قواعد اكتشاف محددة مسبقًا لمختلف التهديدات الأمنية والسلوكيات غير الطبيعية.
- falcosecurity/المكونات الإضافية: تسهل مكونات Falco الإضافية التكامل مع الخدمات الخارجية، وتوسع قدرات Falco إلى ما هو أبعد من مكالمات النظام وأحداث الحاويات، وهي مصممة للتطور مع وظائف متخصصة في الإصدارات المستقبلية.
- falcosecurity/falcoctl: أداة مساعدة لسطر الأوامر لإدارة Falco والتفاعل معه.
لمزيد من المعلومات، قم بزيارة المركز الرسمي لمشروع Falco: falcosecurity/evolution. فهو يوفر رؤى ومعلومات قيمة حول مستودعات المشروع.
الشروع في العمل مع فالكو
قم بمراجعة واتباع الوثائق الرسمية بعناية.
اعتبارات وإرشادات لمتبني Falco:
فهم التبعيات: قم بتقييم البيئة التي ستشغل فيها Falco وفكر في إصدارات kernel وبنيتها.
تحديد أهداف الكشف عن التهديدات: حدد بوضوح التهديدات التي تريد اكتشافها وتقييم نقاط القوة والقيود لدى Falco.
ضع في الاعتبار الأداء والتكلفة: قم بتقييم الحمل العام لأداء الحوسبة ومواءمته مع مسؤولي النظام أو SREs. الميزانية وفقا لذلك.
اختر أسلوب البناء والتخصيص: اختر بين بناء Falco مفتوح المصدر أو إنشاء مسار بناء مخصص. قم بتخصيص عملية الإنشاء والنشر حسب الضرورة، بما في ذلك دمج الاختبارات أو الأساليب الفريدة، لضمان النشر المرن مع دورات النشر السريعة.
التكامل مع وجهات المخرجات: قم بدمج Falco مع SIEM أو أنظمة بحيرة البيانات أو وجهات المخرجات المفضلة الأخرى لإنشاء أساس قوي لتحليل البيانات الشامل وتمكين سير عمل الاستجابة الفعالة للحوادث.
البيئة التجريبية
يتم توفير بيئة تجريبية عبر ملف إنشاء عامل إرساء يمكن تشغيله على مضيف عامل إرساء يتضمن falco وfalcosidekick وfalcosidekick-ui وقاعدة بيانات redis المطلوبة. لمزيد من المعلومات، راجع قسم إنشاء عامل الإرساء
كيفية المساهمة
يرجى الرجوع إلى دليل المساهمة ومدونة قواعد السلوك لمزيد من المعلومات حول كيفية المساهمة.
انضم إلى المجتمع
للمشاركة في مشروع Falco، يرجى زيارة مستودع المجتمع للعثور على مزيد من المعلومات وطرق المشاركة.
إذا كانت لديك أي أسئلة حول Falco أو المساهمة، فلا تتردد في تقديم مشكلة أو الاتصال بمشرفي Falco وأعضاء المجتمع للحصول على المساعدة.
كيفية التواصل؟
- انضم إلى قناة #falco على Kubernetes Slack.
- انضم إلى القائمة البريدية لفالكو.
- قم بإرسال مشكلة أو تقديم طلبات الميزات.
الالتزام بأمن Falco الخاص
يمكن العثور على التقارير الكاملة لعمليات التدقيق الأمني المختلفة هنا.
بالإضافة إلى ذلك، يمكنك الرجوع إلى أقسام الأمان الخاصة بـ falco و libs للحصول على تحديثات تفصيلية حول النصائح والسياسات الأمنية.
للإبلاغ عن الثغرات الأمنية، يرجى اتباع عملية المجتمع الموضحة في الوثائق الموجودة هنا.
ما هو التالي بالنسبة لفالكو؟
ابق على اطلاع دائم بقدرات Falco المتطورة من خلال استكشاف خريطة طريق Falco، التي توفر نظرة ثاقبة للميزات قيد التطوير حاليًا والمخطط لها للإصدارات المستقبلية.
رخصة
تم ترخيص Falco لك بموجب ترخيص Apache 2.0 مفتوح المصدر.
اختبار
قم بتوسيع تعليمات الاختبار
يعد Falco's Build Falco من المصدر هو المصدر الأمثل لفهم كيفية إنشاء Falco من المصدر. بالإضافة إلى ذلك، يوفر مستودع falcosecurity/libs معلومات قيمة إضافية حول الاختبارات وتصحيح الأخطاء لمكتبات Falco الأساسية وبرامج تشغيل kernel.
فيما يلي مثال لأمر cmake
الذي سيعمل على تمكين كل ما تحتاجه لجميع اختبارات الوحدات لهذا المستودع:
cmake
-DUSE_BUNDLED_DEPS=ON
-DBUILD_LIBSCAP_GVISOR=ON
-DBUILD_BPF=ON
-DBUILD_DRIVER=ON
-DBUILD_FALCO_MODERN_BPF=ON
-DCREATE_TEST_TARGETS=ON
-DBUILD_FALCO_UNIT_TESTS=ON .. ;
بناء وتشغيل مجموعة اختبار الوحدة:
nproc= $( grep processor /proc/cpuinfo | tail -n 1 | awk ' {print $3} ' ) ;
make -j $(( $nproc - 1 )) falco_unit_tests ;
# Run the tests
sudo ./unit_tests/falco_unit_tests ;
اختياريًا، قم بإنشاء برنامج التشغيل الذي تختاره واختبر تشغيل برنامج Falco الثنائي لإجراء الاختبارات اليدوية.
أخيرًا، قام مشروع Falco بنقل اختبارات انحدار Falco إلى اختبار/أمن falco.
لماذا يستخدم Falco لغة C++ بدلاً من Go أو {language}؟
قم بتوسيع المعلومات
- تمت كتابة الأسطر الأولى من التعليمات البرمجية في قاعدة Falco منذ بعض الوقت، حيث لم يكن لدى Go بعد نفس مستوى النضج والاعتماد كما هو الحال اليوم.
- نموذج تنفيذ Falco متسلسل وأحادي الخيط نظرًا لمتطلبات حالة الأداة، وبالتالي لن يتم الاستفادة من معظم نقاط البيع المرتبطة بالتزامن في وقت تشغيل Go على الإطلاق.
- يتعامل رمز Falco مع برمجة منخفضة المستوى جدًا في العديد من الأماكن (على سبيل المثال، تتم مشاركة بعض الرؤوس مع مسبار eBPF ووحدة Kernel)، ونعلم جميعًا أن ربط Go مع C أمر ممكن ولكنه يجلب الكثير من التعقيد والمقايضات إلى الطاولة .
- باعتبارها أداة أمنية تهدف إلى استهلاك إنتاجية عالية جدًا من الأحداث في الثانية، تحتاج Falco إلى ضغط الأداء في جميع المسارات الساخنة في وقت التشغيل وتتطلب تحكمًا عميقًا في تخصيص الذاكرة، وهو ما لا يمكن أن يوفره وقت تشغيل Go (هناك أيضًا مجموعة من البيانات المهملة) .
- على الرغم من أن Go لم يتناسب مع المتطلبات الهندسية لجوهر Falco، إلا أننا ما زلنا نعتقد أنه يمكن أن يكون مرشحًا جيدًا لكتابة ملحقات Falco من خلال نظام المكونات الإضافية. هذا هو السبب الرئيسي الذي جعلنا نولي اهتمامًا خاصًا وأولوية عالية لتطوير البرنامج المساعد-sdk-go.
- Go ليس شرطًا لوجود ثنائيات مرتبطة بشكل ثابت. في الواقع، نحن نقدم تصميمات Falco ثابتة بالكامل منذ سنوات قليلة. المشكلة الوحيدة في ذلك هي أن نظام المكونات الإضافية لا يمكن دعمه بنموذج المكتبة الديناميكي الحالي الموجود لدينا حاليًا.
- لقد تم تصور نظام البرنامج الإضافي لدعم لغات متعددة، لذلك من جانبنا فإن الحفاظ على قاعدة تعليمات برمجية متوافقة مع لغة C هو أفضل استراتيجية لضمان أقصى قدر من التوافق بين اللغات.
- بشكل عام، تحتوي المكونات الإضافية على متطلبات/تبعيات GLIBC لأنها تحتوي على روابط C منخفضة المستوى مطلوبة للتحميل الديناميكي. يمكن أن يكون الحل المحتمل للمستقبل أيضًا هو دعم البرنامج الإضافي ليتم ربطه بشكل ثابت في وقت الترجمة وبالتالي إصداره كمجمع في ثنائي Falco. على الرغم من عدم بدء أي عمل حتى الآن في هذا الاتجاه، إلا أن هذا من شأنه أن يحل معظم المشكلات التي أبلغت عنها وسيوفر ثنائيًا ثابتًا تمامًا أيضًا. بالطبع، لن يكون هذا متوافقًا مع التحميل الديناميكي بعد الآن، ولكنه قد يكون حلاً قابلاً للتطبيق لنكهة البناء الثابت الخاصة بنا لـ Falco.
- من المؤكد أن سلامة الذاكرة هي مصدر قلق ونحن نبذل قصارى جهدنا للحفاظ على مستوى عالٍ من الجودة على الرغم من أن لغة C++ عرضة للأخطاء. على سبيل المثال، نحاول استخدام المؤشرات الذكية كلما أمكن ذلك، ونبني المكتبات بمطهر العناوين في CI لدينا، ونشغل Falco عبر Valgrind قبل كل إصدار، ولدينا طرق لاختبار الضغط لاكتشاف تراجعات الأداء أو الاستخدام الغريب للذاكرة ( على سبيل المثال https://github.com/falcosecurity/event-generator). علاوة على ذلك، لدينا أيضًا جهات خارجية تقوم بمراجعة قاعدة التعليمات البرمجية من وقت لآخر. لا شيء من هذا يمثل وجهة نظر سلامة مثالية بالطبع، لكننا نحاول تعظيم احتمالاتنا. من المؤكد أن تطبيق Go سيجعل حياتنا أسهل من هذا المنظور، لكن المقايضات لم تجعل الأمر يستحق العناء حتى الآن بسبب النقاط المذكورة أعلاه.
- تعد قاعدة بيانات C++ الخاصة بـ falcosecurity/libs، والتي تقع في قلب Falco، كبيرة ومعقدة للغاية. سيكون نقل كل هذا الرمز إلى لغة أخرى بمثابة جهد كبير يتطلب الكثير من موارد التطوير مع وجود فرصة كبيرة للفشل والتراجع. على هذا النحو، كان نهجنا حتى الآن هو اختيار عوامل إعادة البناء وصقل التعليمات البرمجية بدلاً من ذلك، حتى نصل إلى المستوى الأمثل من الاستقرار والجودة والنمطية، في هذا الجزء من التعليمات البرمجية. وهذا من شأنه أن يسمح لمزيد من التطورات أن تكون أكثر سلاسة وأكثر جدوى في المستقبل.
موارد
- الحكم
- مدونة لقواعد السلوك
- إرشادات المشرفين
- قائمة المشرفين
- المبادئ التوجيهية للمستودعات
- قائمة المستودعات
- قائمة المتبنين
- تثبيت وتشغيل
- استكشاف الأخطاء وإصلاحها