
eBPF-आधारित Linux एजेंट जो कर्नेल स्पेस में निष्पादन-योग्य-स्तर की एक्सेस नीतियों को लागू करता है, प्रक्रियाओं को सैंडबॉक्स करता है और LSM हुक्स के माध्यम से फ़ाइल, नेटवर्क और GPU एक्सेस को प्रतिबंधित करता है।
Bomfather Agent एक eBPF-आधारित एजेंट है जो कर्नेल स्पेस में चलता है और किसी पॉलिसी के आधार पर क्रियाओं को ब्लॉक करता है।
हमने इस एजेंट को मौजूदा समाधानों के साथ आने वाली समस्याओं को हल करने के लिए बनाया है।
ये बिंदु इस पूरे प्रोजेक्ट के लिए हमारा मार्गदर्शक सिद्धांत हैं। सभी सुविधाएँ और विकास इन बिंदुओं को पूरा करने के लिए हैं।
ध्यान दें कि हम इस रेपो में AI द्वारा जनरेट किए गए कोड का उपयोग करने से बचने का प्रयास करते हैं और AI द्वारा जनरेट किए गए PR स्वीकार नहीं करेंगे।
(यहाँ आपके सिस्टम पर 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
status कमांड मुख्य रूप से एजेंट से Prometheus मेट्रिक्स पढ़ने के लिए है।
पॉलिसी एक YAML फ़ाइल है जो उन नियमों को परिभाषित करती है जिन्हें एजेंट लागू करता है।
कॉन्फ़िग मुख्य रूप से दो सेक्शनों से बना होता है, policies और attributes। policies सेक्शन परिभाषित करता है कि किसे किसी संरक्षित संसाधन तक पहुँचने की अनुमति है। policies सेक्शन परिभाषित करता है कि किन निष्पादन योग्यों को संरक्षित डायरेक्टरी या IP तक पहुँचने की अनुमति है। attributes किसी निष्पादन योग्य की सीमाओं को परिभाषित करते हैं, इसलिए एक attribute किसी निष्पादन योग्य को केवल एक ही 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"
यह पॉलिसी हमें signer को सैंडबॉक्स करने और यह सुनिश्चित करने की अनुमति देती है कि यह सिस्टम पर एकमात्र प्रक्रिया है जो डेटा तक पहुँच सकती है।
policies सेक्शन में, हम परिभाषित करते हैं कि निष्पादन योग्य signer ही एकमात्र प्रक्रिया है जिसे /secrets/keys डायरेक्टरी और AWS KMS एंडपॉइंट से जुड़े IP तक पहुँचने की अनुमति है।
attributes सेक्शन में, हम परिभाषित करते हैं कि निष्पादन योग्य signer को केवल AWS KMS एंडपॉइंट तक पहुँचने की अनुमति है, और किसी अन्य IP तक नहीं।
इस अपेक्षाकृत सरल कॉन्फ़िग में, हम केवल 10 पंक्तियों लंबे कॉन्फ़िग में अपनी signer प्रक्रिया (जो वास्तविक दुनिया में एक बड़े सिस्टम का हिस्सा हो सकती है) को काफी मजबूत बनाने में सक्षम हुए हैं।
दस्तावेज़ीकरण में कुछ और वास्तविक दुनिया के उदाहरण हैं https://docs.bomfather.dev/examples/gpu।
वैकल्पिक रूप से, यदि आप एजेंट द्वारा पाई गई violations को एक्सपोर्ट करना चाहते हैं, तो आप एक API key शामिल कर सकते हैं और एजेंट violations को Bomfather सर्वर पर भेज देगा।
लेकिन सबसे महत्वपूर्ण बात, यह अनिवार्य नहीं है, इसके बिना भी एजेंट उसी तरह काम करेगा। यदि आप API key शामिल नहीं करते हैं तो कोई भी सुविधा अक्षम नहीं होती, और यदि कोई API key शामिल नहीं है, तो किसी भी प्रकार का कोई डेटा Bomfather सर्वर पर नहीं भेजा जाता है।
यदि आप Bomfather सर्वर का उपयोग करना चाहते हैं, तो कृपया हमसे [email protected] पर संपर्क करें।