
برنامج eBPF خفيف الوزن لمراقبة أحداث إنشاء الملفات وتعديلها على لينكس. تستخدم هذه الأداة eBPF (مرشح حزم بيركلي الموسّع) لتتبّع عمليات الملفات مباشرةً من النواة، مما يوفر مراقبة عالية الأداء بأقل قدر من الحمل الإضافي.
برنامج eBPF خفيف الوزن لمراقبة أحداث إنشاء الملفات وتعديلها على Linux. تستخدم هذه الأداة تقنية eBPF (Extended Berkeley Packet Filter) لتتبع عمليات الملفات مباشرة من النواة، مما يوفر مراقبة عالية الأداء مع حمل إضافي ضئيل.
touch, nano, إلخ) مباشرة من النواة./tmp).cd /tmp; touch file) بشكل صحيح من خلال تتبع inodes الدلائل في النواة.يمكنك تنزيل أحدث النسخ من صفحة الإصدارات.
لبناء المشروع بنفسك، تحتاج إلى تثبيت Go.
# Clone the repository
git clone https://github.com/harshavmb/fim-ebpf.git
cd fim-ebpf
# Build the binary
go build -o fim-ebpf .
أنشئ ملف config.yaml في نفس الدليل الذي يوجد فيه البرنامج (أو عدّل الملف الموجود).
monitored_files:
- /tmp/testfile
- /etc/passwd
- /etc/shadow
- /tmp ## monitor the entire directory
ignore_actions:
- read
- stat
ignore_users:
- root
شغّل البرنامج بصلاحيات الجذر:
sudo ./fim-ebpf
2025/08/18 07:22:09 Monitoring started. Ctrl+C to exit.
2025/08/18 07:22:37 Event: PID=1745080 UID=6087179 (6087179 (harsha)) CMD=touch FILE=/tmp/testfile FLAGS=00000941 ## actual user
2025/08/18 07:22:54 Event: PID=1745108 UID=0 (0 (root) [Login: 6087179 (harsha)]) CMD=touch FILE=/tmp/testfile FLAGS=00000941 ## even after sudo
2026/01/03 18:55:56 Event: PID=3718310 UID=1002 (1002 (harsha)) CMD=touch FILE=/tmp/testfile ACTION=OPEN FLAGS=00000941 ## monitoring files in a dir
يستخدم المشروع cilium/ebpf لتحميل برنامج eBPF والتفاعل معه. يعمل كود eBPF داخل النواة ويرسل الأحداث إلى برنامج Go في مساحة المستخدم عبر مخزن مؤقت حلقي (ring buffer).