تخطَّ إلى المحتوى

Tetragon - أمان وقت التشغيل eBPF

Tetragon - أمان وقت التشغيل eBPF

Tetragon هي أداة مفتوحة المصدر قائمة على eBPF لأمان وقت التشغيل والمراقبة من مشروع Cilium (CNCF). تخطاف النواة لالتقاط الأحداث ذات الصلة بالأمان — تنفيذ العملية والوصول إلى الملفات والاتصالات على الشبكة واستخدام القدرات وتصعيد الامتيازات — مع نفقية منخفضة جداً، و يمكنها تنفيذ السياسة داخل النواة (إنهاء أو تجاوز استدعاءات النظام) بدلاً من الإنذار فقط. تعمل على Kubernetes أو بشكل مستقل على مضيف Linux.

المتطلبات

  • نواة Linux مع BTF (/sys/kernel/btf/vmlinux موجود) — معظم التوزيعات الحديثة
  • الجذر / حاوية مميزة (eBPF يحتاج إلى CAP_BPF / CAP_SYS_ADMIN)

التثبيت

Kubernetes (Helm)

helm repo add cilium https://helm.cilium.io
helm repo update
helm install tetragon cilium/tetragon -n kube-system
kubectl rollout status -n kube-system ds/tetragon -w

مضيف مستقل (Docker)

docker run --name tetragon --rm --pull always \
  --pid=host --cgroupns=host --privileged \
  -v /sys/kernel:/sys/kernel \
  quay.io/cilium/tetragon:latest

تثبيت CLI tetra

# Linux amd64
curl -L https://github.com/cilium/tetragon/releases/latest/download/tetra-linux-amd64.tar.gz | tar -xz
sudo mv tetra /usr/local/bin/
tetra version

مراقبة الأحداث

الأمرالوصف
kubectl exec -n kube-system ds/tetragon -c tetragon -- tetra getevents -o compactتدفق الأحداث الحية (Kubernetes)
docker exec tetragon tetra getevents -o compactتدفق الأحداث الحية (مستقل)
tetra geteventsتدفق الحدث JSON الكامل
tetra getevents --processesأحداث exec/exit للعملية فقط
tetra getevents --pods my-podالتصفية حسب pod
`tetra getevents -o jsonjq`

يعرض الإخراج المضغوط ملخص سطر واحد لكل حدث، مثل تنفيذ العملية أو فتح الملف أو الاتصال، مع تعليق pod/binary/args.

TracingPolicy (ما يجب مراقبته)

يتم دفع سلوك Tetragon بموارد TracingPolicy مخصصة (أو YAML محلي في الوضع المستقل). تعلق السياسة على kprobes/tracepoints/LSM hooks وتضيف الإجراءات بشكل اختياري.

apiVersion: cilium.io/v1alpha1
kind: TracingPolicy
metadata:
  name: monitor-sensitive-files
spec:
  kprobes:
  - call: "security_file_permission"
    syscall: false
    args:
    - index: 0
      type: "file"
    selectors:
    - matchArgs:
      - index: 0
        operator: "Prefix"
        values:
        - "/etc/shadow"
        - "/etc/sudoers"
الأمرالوصف
kubectl apply -f policy.yamlتحميل TracingPolicy (Kubernetes)
kubectl get tracingpoliciesقائمة السياسات النشطة
kubectl delete tracingpolicy NAMEإزالة سياسة
tetra tracingpolicy add policy.yamlتحميل سياسة (gRPC مستقل)
tetra tracingpolicy listالسياسات المحملة (مستقل)

إجراءات الإنفاذ

أضف كتلة matchActions إلى محدد للتصرف داخل النواة:

الإجراءالتأثير
Sigkillإنهاء العملية المخالفة بشكل متزامن
Overrideإرجاع رمز خطأ مختار من استدعاء النظام
Postبث حدث فقط (مراقبة)
NotifyEnforcer / Signalإرسال إشارة إلى العملية
      matchActions:
      - action: Sigkill        # كتل، لا تسجيل فقط

الكشف الشائع

الهدفالنهج
رؤية تنفيذ العمليةالأحداث المدمجة exec/exit للعملية (بدون سياسة مطلوبة)
الوصول إلى الملفات الحساسةkprobe على security_file_permission مع محددات المسار
تصعيد الامتيازاتمراقبة تغييرات القدرات / عائلة setuid
خروج الشبكة غير المتوقعخطاف tcp connect مع محددات CIDR
محاولات الهروب من الحاويةمراقبة تغييرات Namespace/القدرات

تصفية وتلميحات الإخراج

# عرض أحداث exec فقط لملف تنفيذي محدد
tetra getevents -o compact | grep curl

# تدفق مضغوط ملون وجميل
kubectl exec -n kube-system ds/tetragon -c tetragon -- tetra getevents -o compact --pods web

# تصدير JSON خام لخط أنابيب SIEM
tetra getevents -o json >> /var/log/tetragon-events.json

Tetragon مقابل Falco

الجانبTetragonFalco
المحركeBPF (Cilium)eBPF / وحدة النواة
الإنفاذنعم (إنهاء/تجاوز داخل النواة)التنبيهات تركز
نموذج السياسةTracingPolicy CRDsقواعد Falco (YAML)
سياق الهوية K8sقوي (pod/labels)نعم
الأفضل لـالوقاية + رؤية نواة عميقةمكتبة قواعد ناضجة والكشف

الموارد