
eBPF-संचालित सुरक्षा उपकरण जो Linux मशीनों को लॉक और ऑडिट करने के लिए है। यह कर्नेल सुविधाओं को प्रतिबंधित करता है, फ़ाइल रहित निष्पादन को रोकता है, मेमोरी की सुरक्षा करता है, और घोषणात्मक प्रोफाइल के माध्यम से कंटेनरों और IoT उपकरणों को कठोर बनाता है।

bpflock - लिनक्स मशीनों को लॉक करने और ऑडिट करने के लिए eBPF-संचालित सुरक्षा।
नोट: bpflock वर्तमान में प्रायोगिक चरण में है, यह टूट सकता है, विकल्प और सुरक्षा अर्थ बदल सकते हैं, कुछ BPF प्रोग्राम Cilium ebpf library का उपयोग करने के लिए अपडेट किए जाएंगे।
bpflock लिनक्स सुरक्षा को मजबूत करने के लिए eBPF का उपयोग करता है। लिनक्स सुविधाओं की एक विस्तृत श्रृंखला तक पहुंच को प्रतिबंधित करके, bpflock हमले की सतह को कम करने और कुछ प्रसिद्ध हमला तकनीकों को अवरुद्ध करने में सक्षम है।
केवल कंटेनर प्रबंधकों, systemd और अन्य कंटेनरों/प्रोग्रामों जैसे प्रोग्राम जो होस्ट pid and network namespaces में चलते हैं, को पूर्ण लिनक्स सुविधाओं तक पहुंच की अनुमति है; अपने स्वयं के नेमस्पेस में चलने वाले कंटेनर और एप्लिकेशन प्रतिबंधित होंगे।
यदि bpflock bpf प्रोग्राम restricted प्रोफ़ाइल के तहत चलते हैं तो विशेषाधिकार प्राप्त प्रोग्रामों सहित सभी प्रोग्रामों/कंटेनरों की पहुंच अस्वीकार कर दी जाएगी।
bpflock Linux Security Modules + BPF सहित कई सुरक्षा सुविधाओं का लाभ उठाकर लिनक्स मशीनों की सुरक्षा करता है।
वास्तुकला और सुरक्षा डिजाइन नोट:
bpflock अनेक सुरक्षा सुरक्षाएं प्रदान करता है जिन्हें निम्नानुसार वर्गीकृत किया जा सकता है:
फाइलसिस्टम सुरक्षा
नेटवर्क सुरक्षा
bpflock सुरक्षा अर्थशास्त्र को सरल रखता है। यह सुरक्षा स्पेक्ट्रम को व्यापक रूप से कवर करने और विशिष्ट लिनक्स सुविधाओं तक पहुंच को प्रतिबंधित करने के लिए तीन वैश्विक प्रोफ़ाइलों का समर्थन करता है।
profile: यह वैश्विक प्रोफ़ाइल है जिसे प्रति bpf प्रोग्राम लागू किया जा सकता है, यह निम्नलिखित में से एक लेता है:
allow|none|privileged : ये समान हैं, ये सबसे कम सुरक्षित प्रोफ़ाइल को परिभाषित करते हैं। इस प्रोफ़ाइल में सभी प्रक्रियाओं के लिए पहुंच लॉग और अनुमत है। सुरक्षा घटनाओं को लॉग करने के लिए उपयोगी।baseline : प्रतिबंधात्मक प्रोफ़ाइल जहां सभी प्रक्रियाओं के लिए पहुंच अस्वीकार कर दी गई है, सिवाय विशेषाधिकार प्राप्त एप्लिकेशन और कंटेनरों के जो होस्ट नेमस्पेस में चलते हैं, या bpflock_cgroupmap bpf मानचित्र में प्रति cgroup अनुमत प्रोफ़ाइलों के।restricted : भारी प्रतिबंधित प्रोफ़ाइल जहां सभी प्रक्रियाओं के लिए पहुंच अस्वीकार कर दी गई है।Allowed या blocked संचालन/आदेश:
allow|privileged या baseline प्रोफ़ाइलों के तहत, अनुमत या अवरुद्ध आदेशों की एक सूची निर्दिष्ट की जा सकती है और लागू की जाएगी।
--protection-allow : अनुमत संचालनों की अल्पविराम-पृथक सूची। यह baseline प्रोफ़ाइल के तहत मान्य है, यह उन एप्लिकेशनों के लिए उपयोगी है जो बहुत विशिष्ट हैं और विशेषाधिकार प्राप्त संचालन करते हैं। यह allow | privileged प्रोफ़ाइल के उपयोग को कम करेगा, ताकि privileged प्रोफ़ाइल का उपयोग करने के बजाय, हम baseline प्रोफ़ाइल निर्दिष्ट कर सकते हैं और ऐसे एप्लिकेशनों के लिए केस-दर-केस परिभाषा प्रदान करने के लिए अनुमत आदेशों का एक सेट जोड़ सकते हैं।--protection-block : अवरुद्ध संचालनों की अल्पविराम-पृथक सूची। यह allow|privileged और baseline प्रोफ़ाइलों के तहत मान्य है, यह पूर्ण restricted प्रोफ़ाइल का उपयोग किए बिना कुछ सुविधाओं तक पहुंच को प्रतिबंधित करने की अनुमति देता है जो कुछ विशिष्ट एप्लिकेशनों को तोड़ सकता है। baseline या privileged प्रोफ़ाइल का उपयोग करने से अधिकांश लिनक्स सुविधाओं तक पहुंच का द्वार खुल जाता है, लेकिन --protection-block विकल्प के साथ इस पहुंच में से कुछ को अवरुद्ध किया जा सकता है।bpf सुरक्षा उदाहरणों के लिए bpflock कॉन्फ़िगरेशन उदाहरण देखें।
bpflock को निम्नलिखित की आवश्यकता है:
निम्नलिखित कॉन्फ़िगरेशन के साथ लिनक्स कर्नेल संस्करण >= 5.13:
CONFIG_BPF_SYSCALL=y
CONFIG_DEBUG_INFO=y
CONFIG_DEBUG_INFO_BTF=y
CONFIG_KPROBES=y
CONFIG_LSM="...,bpf"
CONFIG_BPF_LSM=y
स्पष्ट रूप से BTF सक्षम कर्नेल।
यदि आपका कर्नेल CONFIG_BPF_LSM=y के साथ संकलित किया गया था, तो पुष्टि करने के लिए /boot/config-* देखें, लेकिन bpflock चलाने पर यह निम्नलिखित संदेश के साथ विफल होता है:
must have a kernel with 'CONFIG_BPF_LSM=y' 'CONFIG_LSM=\"...,bpf\"'"
फिर उबंटू पर उदाहरण के लिए BPF LSM सक्षम करने के लिए:
GRUB_CMDLINE_LINUX चर में जोड़ें और सहेजें।
"lsm=lockdown,capability,yama,apparmor,bpf"
या
GRUB_CMDLINE_LINUX="lsm=lockdown,capability,yama,apparmor,bpf"
sudo update-grub2
डिफ़ॉल्ट allow या privileged प्रोफ़ाइल (सबसे कम सुरक्षित प्रोफ़ाइल) का उपयोग करके चलाने के लिए:
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