
مكافح الفيروسات لـ K8s. احمِ تطبيقاتك التي تعمل على Kubernetes من الهجمات الخبيثة من خلال كود المصدر المسجل مسبقًا، ومراقبة العمليات في وقت التشغيل، والتحليلات، والتنبيهات، وكذلك مشاركة الاكتشافات مع المجتمع. ربما ينقذ من برامج الفدية.
نريد الحفاظ على هذه الأداة مفتوحة المصدر لمكافحة الهجمات على نظام Kubernetes البيئي الذي نحبه. يمكننا مواجهة التهديدات معًا كمجتمع، من خلال المساهمة المستمرة.
كيف يعمل تاريان؟
يعمل تاريان كحاوية جانبية (sidecar) في بود تطبيقك الرئيسي، حيث يراقب التغييرات في معرفات العمليات، عدد العمليات الجارية، علاقات العمليات الأم والفرعية، الملفات والدلائل في نظام الملفات التابعة لتطبيقك، والتغييرات التي تطرأ على توقيعات ملفاتك، وما إلى ذلك. سيكون تاريان جزءًا من بود تطبيقك من بيئة التطوير إلى الإنتاج، وبالتالي يمكنك التسجيل في قاعدة بيانات تاريان الخاصة بك ما يفترض أن يحدث ويعمل داخل الحاوية الخاصة بك + ما يمكن مراقبته + ما يمكن الإبلاغ عنه + الإجراء (تدمير البود ذاتيًا) الذي يجب اتخاذه بناءً على التغييرات المكتشفة. قم بتحويل آلية الكشف الخاصة بك إلى اليسار (Shift-left)!
ماذا لو حدث تغيير غير معروف داخل الحاوية غير مسجل في قاعدة بيانات تسجيل تاريان، كيف يتفاعل تاريان مع ذلك؟
إذا حدث تغيير غير معروف، يمكن لتاريان ببساطة إخطار فريق الأمان الخاص بك بالتحليلات المرصودة + إرسال السجل إلى فريق الأمان. بعد ذلك، يمكن لمهندسي الأمان لديك تسجيل هذا التغيير في قاعدة بيانات تاريان سواء كان تهديدًا أم لا، وبناءً على تحليلاتهم يمكنهم تكوين الإجراء الذي يجب اتخاذه. سيتم إرسال هذا الإجراء كأمر إلى تطبيق تاريان الجانبي لتنفيذ الإجراء.
كيف تساعد مساهمة المجتمع في مكافحة التهديدات عبر تاريان؟
أي اكتشاف جديد يتم تحليله ووصفه بأنه تهديد من قبل خبراء الأمن لديك، إذا اختاروا ذلك، يمكن مشاركته مع قاعدة بيانات مجتمع تاريان مفتوحة المصدر مع جميع السجلات والسلاسل النصية التي يجب البحث عنها والملاحظات والشفافية والإجراءات التي يجب تكوينها، بشكل أساسي أي شيء يريد الخبير التحذير منه ومشاركته مع المجتمع. يمكنك استخدام هذه المعلومات كمستخدم لتاريان وتكوين الإجراءات في تطبيق تاريان الذي تستخدمه في بيئتك. هذا هو بشكل أساسي مشاركة المعلومات حول التهديدات وما يجب فعله حيالها. يساعد هذا كل من يستخدم تاريان على مشاركة تحليلاتهم واتخاذ الإجراءات معًا في بيئات K8s الخاصة بهم من خلال مشاركة المعرفة والخبرة.
ما نوع الإجراء (الإجراءات) الذي سيتخذه تاريان بناءً على التهديد (التهديدات) المعروفة؟
سيقوم تاريان ببساطة بتدمير البود الذي يعمل عليه ذاتيًا مع حذف أي ملفات على وحدات التخزين لتقليل المخاطر. إذا انتشر البرنامج الضار/الفيروس إلى بقية البيئة، حسنًا، أنت تعرف ما يحدث. لذلك، تم تصميم تاريان بشكل أساسي للمساعدة في تقليل المخاطر قدر الإمكان، عن طريق تدمير البودات. سيتم التعامل مع توفير بود جديد بواسطة K8s لأن هذه هي طريقة عمل K8s. سيقوم تاريان فقط بتدمير البودات، وفقط إذا أخبرت تاريان بذلك عن طريق التكوين المسبق للإجراء في وحدة التحكم تاريان أو عن طريق إخبار تاريان بذلك أثناء التشغيل. إذا كنت لا تريد حدوث أي إجراءات، فلا يتعين عليك تكوين أو تشغيل أي منها؛ يمكنك ببساطة إخبار تاريان بإخطارك فقط. يقوم تاريان بشكل أساسي بما تريد القيام به لتقليل المخاطر.
لماذا أداة أمنية جديدة أخرى عندما تتوفر بالفعل العديد من الأدوات، مثل Falco و Kube-Hunter و Kube-Bench و Calico Enterprise Security، والعديد من الأدوات الأمنية الأخرى (مفتوحة المصدر والتجارية) التي يمكنها اكتشاف ومنع التهديدات على مستوى الشبكة والبنية التحتية والتطبيق؟ لماذا تاريان؟
كما ذكرت أعلاه، السبب الرئيسي وراء نشأة تاريان هو القتال معًا كمجتمع ضد التهديدات في Kubernetes. والسبب الآخر هو، ماذا لو كان لا يزال هناك هجوم متطور قادر على اختراق كل طبقة من طبقات الأمان الخاصة بك والوصول إلى تطبيق وقت التشغيل الخاص بك، وحدات تخزين البيانات الخاصة بك، وقادر على الانتشار لإتلاف أو قفل البنية التحتية والبيانات الخاصة بك؟! ماذا تريد أن تفعل حيال مثل هذه الهجمات، خاصة تلك التي تتحول إلى برامج فدية. تم تصميم تاريان لتقليل هذه المخاطر، عن طريق اتخاذ إجراء (إجراءات). نحن نعلم أن تاريان ليس الحل النهائي، لكننا واثقون من أنه يمكن أن يساعد في تقليل المخاطر خاصة عندما يتم مشاركة المعرفة باستمرار من قبل المجتمع وأيضًا من الناحية الفنية، يمكن أن يساعد تاريان في تقليل المخاطر عن طريق تدمير الموارد المصابة.
سأقوم بوضع اللمسات النهائية على مخطط التصميم قريبًا بمجرد الانتهاء من التحدث مع بعض خبراء الأمن (تحدثت بالفعل مع القليل، ولدي بضع مناقشات أخرى معلقة).
kubectl create namespace tarian-system
helm install tarian-postgresql bitnami/postgresql -n tarian-system \
--set postgresqlUsername=postgres \
--set postgresqlPassword=tarian \
--set postgresqlDatabase=tarian
helm repo add tarian https://devopstoday11.github.io/tarian
helm repo update
helm install tarian-server tarian/tarian-server --devel -n tarian-system
helm install tarian-cluster-agent tarian/tarian-cluster-agent --devel -n tarian-system
kubectl wait --for=condition=ready pod --all -n tarian-system
kubectl exec -ti deploy/tarian-server -n tarian-system -- ./tarian-server db migrate
انظر قيم مخطط Helm لـ
kubectl port-forward svc/tarian-server -n tarian-system 41051:80
export TARIAN_SERVER_ADDRESS=localhost:41051
tarianctl get events
tarianctl add constraint --name nginx --namespace default \
--match-labels run=nginx \
--allowed-processes=pause,tarian-pod-agent,nginx
tarianctl get constraints
tarianctl add constraint --name nginx-files --namespace default \
--match-labels run=nginx \
--allowed-file-sha256sums=/usr/share/nginx/html/index.html=38ffd4972ae513a0c79a8be4573403edcd709f0f572105362b08ff50cf6de521
tarianctl get constraints
بعد إنشاء القيود، نقوم بحقن tarian-pod-agent في البود عن طريق إضافة تعليق توضيحي:
metadata:
annotations:
pod-agent.k8s.tarian.dev/threat-scan: "true"
البود الذي يحتوي على هذا التعليق التوضيحي سيكون له حاوية إضافية محقونة (tarian-pod-agent). ستقوم حاوية tarian-pod-agent باستمرار بالتحقق من بيئة وقت التشغيل بناءً على القيود المسجلة. سيتم الإبلاغ عن أي انتهاك، ويمكن الوصول إليه باستخدام tarianctl get events.
kubectl apply -f https://raw.githubusercontent.com/devopstoday11/tarian/main/dev/config/monitored-pod/configmap.yaml
kubectl apply -f https://raw.githubusercontent.com/devopstoday11/tarian/main/dev/config/monitored-pod/pod.yaml
# انتظر حتى يصبح جاهزًا
kubectl wait --for=condition=ready pod nginx
# محاكاة عملية غير معروفة تعمل
kubectl exec -ti nginx -c nginx -- sleep 15
# يجب أن تراها مبلغًا عنها في تاريان
tarianctl get events
يأتي تاريان مع Prometheus Alert Manager بشكل افتراضي. إذا كنت ترغب في استخدام مثيل alert manager آخر:
helm install tarian-server tarian/tarian-server --devel \
--set server.alert.alertManagerAddress=http://alertmanager.monitoring.svc:9093 \
--set alertManager.install=false \
-n tarian-system
لتعطيله، يمكنك تعيين قيمة alertManagerAddress إلى فارغة.
انظر docs/falco-integration.md
عندما يعمل tarian-pod-agent في وضع التسجيل، بدلاً من الإبلاغ عن العمليات والملفات غير المعروفة كنتهاكات، يقوم تلقائيًا بتسجيلها كقيد جديد. هذا مناسب لتوفير الوقت من التسجيل اليدوي.
لتمكين تسجيل القيود، يجب تكوين cluster-agent.
helm install tarian-cluster-agent tarian/tarian-cluster-agent --devel -n tarian-system \
--set clusterAgent.enableAddConstraint=true
metadata:
annotations:
# تسجيل كل من العمليات ومجموع اختبار الملفات
pod-agent.k8s.tarian.dev/register: "processes,files"
# تجاهل مسارات محددة من التسجيل التلقائي
pod-agent.k8s.tarian.dev/register-file-ignore-paths: "/usr/share/nginx/**/*.txt"
يمكن أيضًا إجراء التسجيل التلقائي للقيود في كتلة dev/staging، بحيث يكون هناك تغييرات أقل في الإنتاج.
metadata:
annotations:
# تحديد عدد المرات التي يجب أن يتحقق فيها tarian-pod-agent من مجموع اختبار الملف
pod-agent.k8s.tarian.dev/file-validation-interval: "1m"