
Kubernetes के लिए eBPF-आधारित रनटाइम सुरक्षा एजेंट जो अज्ञात प्रक्रियाओं और फ़ाइल परिवर्तनों का पता लगाता है, पूर्व-पंजीकृत बाधाओं को लागू करता है, और रैनसमवेयर तथा अन्य हमलों को कम करने के लिए पॉड को स्वचालित रूप से हटाने या अलर्ट करने का कार्य करता है।

अपने Kubernetes पर चल रहे एप्लिकेशन को दुर्भावनापूर्ण हमलों से बचाएं, अपनी विश्वसनीय प्रक्रियाओं और विश्वसनीय फ़ाइल हस्ताक्षरों को पूर्व-पंजीकृत करके। Tarian अज्ञात प्रक्रियाओं और पंजीकृत फ़ाइलों में बदलाव का पता लगाएगा, फिर अलर्ट भेजेगा और स्वचालित कार्रवाई करेगा। अपने K8s वातावरण को Ransomware से बचाएं!
हम इसे एक ओपन-सोर्स प्रोजेक्ट के रूप में बनाए रखना चाहते हैं ताकि हम अपने पसंदीदा Kubernetes इकोसिस्टम पर होने वाले हमलों से लड़ सकें। निरंतर योगदान से, हम एक समुदाय के रूप में मिलकर खतरों से लड़ सकते हैं।
Tarian कैसे काम करता है?
Tarian Cluster Agent Kubernetes क्लस्टर में चलता है, अज्ञात प्रक्रियाओं और फ़ाइलों में अज्ञात बदलावों का पता लगाता है, Tarian Server को रिपोर्ट करता है, और वैकल्पिक रूप से कार्रवाई करता है: उल्लंघन किए गए pod को हटा देता है। यह नई प्रक्रियाओं का पता लगाने के लिए eBPF का उपयोग करता है। फ़ाइल बदलाव का पता लगाने के लिए, Tarian Cluster Agent आपके मुख्य एप्लिकेशन के pod में एक साइडकार कंटेनर इंजेक्ट करता है जो कॉन्फ़िगर किए गए पथ में फ़ाइल चेकसम की जाँच करेगा और उनकी तुलना Tarian Server में पंजीकृत चेकसम से करेगा। Tarian आपके एप्लिकेशन के pod का हिस्सा dev से prod वातावरण तक रहेगा, इसलिए आप अपने Tarian DB में पंजीकृत कर सकते हैं कि आपके कंटेनर में क्या होना चाहिए और क्या चलना चाहिए + देखी जाने वाली फ़ाइल हस्ताक्षर + क्या सूचित किया जा सकता है + पता लगाए गए बदलावों के आधार पर क्या कार्रवाई करनी है (pod को स्वयं नष्ट करें)। अपने डिटेक्शन तंत्र को Shift-left करें!
यदि कंटेनर के अंदर कोई अज्ञात बदलाव होता है जो Tarian के पंजीकरण DB में नहीं है, तो Tarian उस पर कैसे प्रतिक्रिया करता है?
यदि कोई अज्ञात बदलाव होता है, तो Tarian आपकी सुरक्षा टीम को देखे गए विश्लेषण के बारे में सूचित कर सकता है। फिर आपके सुरक्षा इंजीनियर उस बदलाव को Tarian DB में पंजीकृत कर सकते हैं, चाहे वह खतरा माना जाए या नहीं। साथ ही, उनके विश्लेषण के आधार पर वे कॉन्फ़िगर कर सकते हैं कि जब वह बदलाव फिर से हो तो क्या कार्रवाई करनी है।
समुदाय का योगदान Tarian के माध्यम से खतरों से लड़ने में कैसे मदद करता है?
आपके सुरक्षा विशेषज्ञों द्वारा विश्लेषित और खतरे के रूप में चिह्नित कोई भी नया डिटेक्शन, यदि वे चाहें, तो ओपन-सोर्स Tarian समुदाय DB के साथ सभी लॉग, देखने के लिए स्ट्रिंग, अवलोकन, पारदर्शिता, कॉन्फ़िगर करने के लिए कार्रवाइयाँ, ... मूल रूप से वह सब कुछ जो विशेषज्ञ चेतावनी देना चाहते हैं और समुदाय के साथ साझा करना चाहते हैं, साझा किया जा सकता है। आप एक Tarian उपयोगकर्ता के रूप में उस जानकारी का उपयोग कर सकते हैं और अपने वातावरण में उपयोग किए जाने वाले Tarian ऐप में कार्रवाइयाँ कॉन्फ़िगर कर सकते हैं। यह मूल रूप से खतरों और उनके साथ क्या करना है, इस बारे में जानकारी साझा करने का एक तंत्र है। यह Tarian का उपयोग करने वाले सभी लोगों को अपने ज्ञान और अनुभव को साझा करके अपने-अपने K8s वातावरण में एक साथ कार्रवाई करने में मदद करता है।
Tarian ज्ञात खतरे(खतरों) के आधार पर किस प्रकार की कार्रवाई(कार्रवाइयाँ) करेगा?
Tarian उस pod को स्वयं नष्ट कर देगा जिस पर वह चल रहा है। यदि मैलवेयर/वायरस बाकी वातावरण में फैल जाता है, तो आप जानते हैं कि क्या होता है। इसलिए, Tarian मूल रूप से pods को नष्ट करके जोखिम को यथासंभव कम करने में मदद करने के लिए डिज़ाइन किया गया है। नए pod का प्रावधान K8s डिप्लॉयमेंट द्वारा संभाला जाएगा। Tarian केवल pods का विनाश करेगा यदि आप Tarian को ऐसा करने के लिए कहते हैं। यदि आप कोई कार्रवाई नहीं चाहते हैं, तो आपको किसी भी चीज़ को कॉन्फ़िगर या ट्रिगर करने की आवश्यकता नहीं है; आप बस Tarian को केवल आपको सूचित करने के लिए कह सकते हैं। Tarian मूल रूप से वही करता है जो आप जोखिम कम करने के लिए करना चाहते हैं।
जब पहले से ही कई टूल उपलब्ध हैं, जैसे Falco, Kube-Hunter, Kube-Bench, Calico Enterprise Security, और कई अन्य सुरक्षा टूल (ओपन-सोर्स और वाणिज्यिक) जो नेटवर्क, इंफ्रा और एप्लिकेशन स्तर पर खतरों का पता लगा सकते हैं और रोक सकते हैं, तो एक और नया सुरक्षा टूल क्यों? Tarian क्यों?
Tarian के जन्म का मुख्य कारण समुदाय के रूप में एक साथ Kubernetes में खतरों से लड़ना है। दूसरा कारण यह था, क्या होगा यदि अभी भी कोई परिष्कृत हमला है जो आपकी सुरक्षा की प्रत्येक परत को भेदने में सक्षम है, आपके रनटाइम ऐप (Remote Code Execution) और आपके स्टोरेज वॉल्यूम तक पहुंचने में सक्षम है, और आपके इंफ्रा और डेटा को नुकसान पहुंचाने या लॉक करने के लिए फैलने में सक्षम है?! आप ऐसे हमलों के बारे में क्या करना चाहते हैं, विशेष रूप से जो ransomware में बदल जाते हैं। Tarian ऐसे जोखिमों को कम करने के लिए डिज़ाइन किया गया है, कार्रवाई(कार्रवाइयाँ) करके। हम जानते हैं कि Tarian अंतिम समाधान नहीं है, लेकिन हमें विश्वास है कि यह जोखिमों को कम करने में मदद कर सकता है, खासकर जब समुदाय द्वारा लगातार ज्ञान साझा किया जाता है। तकनीकी दृष्टिकोण से, Tarian संक्रमित संसाधनों को नष्ट करके जोखिम को कम करने में मदद कर सकता है।

kubectl create namespace tarian-system
आप किसी भी Dgraph इंस्टॉलेशन विकल्प का उपयोग कर सकते हैं जब तक इसे tarian सर्वर से एक्सेस किया जा सके।
helm repo add tarian https://kube-tarian.github.io/helm-charts
helm repo update
helm upgrade -i tarian-server tarian/tarian-server --devel -n tarian-system --set server.dgraph.address=DGRAPH_ADDRESS:PORT
helm upgrade -i 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 dgraph apply-schema
github रिलीज़ पेज से tarianctl बाइनरी डाउनलोड करें।
चलाएँ:
tarianctl install
आप अपने इंस्टॉलेशन को अनुकूलित करने के लिए निम्नलिखित फ़्लैग का उपयोग कर सकते हैं।
Tarian को Kubernetes पर इंस्टॉल करें।
उपयोग:
tarianctl install [flags]
फ़्लैग:
--agents-values strings Tarian Cluster Agent और Node agent के लिए helm values फ़ाइल का पथ।
--charts string tarian helm चार्ट निर्देशिका का पथ।
--dgraph-values strings DGraph के लिए helm values फ़ाइल का पथ।
-h, --help install के लिए सहायता
-n, --namespace string Tarian इंस्टॉल करने के लिए नेमस्पेस। (डिफ़ॉल्ट "tarian-system")
--nats-values strings Nats के लिए helm values फ़ाइल का पथ।
--server-values strings Tarian Server के लिए helm values फ़ाइल का पथ।
ग्लोबल फ़्लैग:
-k, --kubeconfig string उपयोग करने के लिए kubeconfig फ़ाइल का पथ
-e, --log-formatter string वैध log formatters: json, text(डिफ़ॉल्ट) (डिफ़ॉल्ट "text")
-l, --log-level string वैध log levels: debug, info(डिफ़ॉल्ट), warn/warning, error, fatal (डिफ़ॉल्ट "info")
-s, --server-address string संवाद करने के लिए tarian सर्वर का पता (डिफ़ॉल्ट "localhost:50051")
-c, --server-tls-ca-file string सर्वर द्वारा TLS कनेक्शन के लिए उपयोग किया जाने वाला ca फ़ाइल
-t, --server-tls-enabled यदि सक्षम है, तो TLS का उपयोग करके सर्वर से संवाद करेगा
-i, --server-tls-insecure-skip-verify यदि true पर सेट किया जाता है, तो सर्वर के प्रमाणपत्र श्रृंखला और होस्टनाम सत्यापन को छोड़ देगा (डिफ़ॉल्ट true)
Helm चार्ट मान देखें:
प्राइवेट GKE क्लस्टर डिफ़ॉल्ट रूप से फ़ायरवॉल नियम बनाता है जो मास्टर से नोड्स तक संचार को केवल पोर्ट 443 और 10250 तक सीमित करता है।
tarian-pod-agent कंटेनर को इंजेक्ट करने के लिए, tarian एक म्यूटेटिंग एडमिशन वेबहुक का उपयोग करता है। वेबहुक सर्वर पोर्ट 9443 पर चलता है। इसलिए, हमें
मास्टर IP एड्रेस रेंज से नोड्स तक TCP पोर्ट 9443 पर इनग्रेस की अनुमति देने के लिए एक नया फ़ायरवॉल नियम बनाने की आवश्यकता है।
अधिक जानकारी के लिए, इस विषय पर GKE दस्तावेज़ देखें: https://cloud.google.com/kubernetes-engine/docs/how-to/private-clusters#add_firewall_rules।
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
बाधाएँ बनने के बाद, हम एक एनोटेशन जोड़कर pod में tarian-pod-agent इंजेक्ट करते हैं:
metadata:
annotations:
pod-agent.k8s.tarian.dev/threat-scan: "true"
इस एनोटेशन वाले pod में एक अतिरिक्त कंटेनर (tarian-pod-agent) इंजेक्ट किया जाएगा। tarian-pod-agent कंटेनर लगातार पंजीकृत बाधाओं के आधार पर रनटाइम वातावरण की पुष्टि करेगा। किसी भी उल्लंघन की रिपोर्ट की जाएगी, जो tarianctl get events के साथ सुलभ होगी।
kubectl apply -f https://raw.githubusercontent.com/kube-tarian/tarian/main/dev/config/monitored-pod/configmap.yaml
kubectl apply -f https://raw.githubusercontent.com/kube-tarian/tarian/main/dev/config/monitored-pod/pod.yaml
# wait for it to become ready
kubectl wait --for=condition=ready pod nginx
# simulate unknown process runs
kubectl exec -ti nginx -c nginx -- sleep 15
# you should see it reported in tarian
tarianctl get events
Tarian डिफ़ॉल्ट रूप से Prometheus 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/troubleshooting.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"
tarian-server को TLS से सुरक्षित करने के लिए, TLS प्रमाणपत्र वाला एक सीक्रेट बनाएँ। आप मैन्युअल रूप से सीक्रेट बना सकते हैं, या Cert Manager का उपयोग कर सकते हैं। एक बार आपके पास सीक्रेट होने पर, आप नाम को helm chart मान में पास कर सकते हैं:
helm upgrade -i tarian-server tarian/tarian-server --devel -n tarian-system \
--set server.tlsSecretName=tarian-server-tls
देखें docs/contributing.md
देखें CODE_OF_CONDUCT.md
देखें MAINTAINERS.md
| वातावरण | काम करता है | नोट्स |
|---|
| Kind v0.14.0 | ✔️ | |
| Minikube v1.26.0 | ✔️ | |
| Linode Kubernetes Engine (LKE) 1.22 | ✔️ | |
| Digital Ocean Kubernetes Engine (DOKS) 1.22 | ✔️ | |
| Google Kubernetes Engine (GKE) 1.22 | ✔️ | |
| Amazon Elastic Kubernetes Engine (EKS) | ➖ | kernel < 5.8 |
| Azure Kubernetes Service (AKS) | ➖ | kernel < 5.8 |