Kubernetes Hardening

हैकट्रिक्स का समर्थन करें

क्लस्टर का विश्लेषण करने के लिए उपकरण

Kubescape एक K8s ओपन-सोर्स उपकरण है जो रिस्क विश्लेषण, सुरक्षा अनुपालन, RBAC विज़ुअलाइज़र और इमेज सुरक्षा जांच जैसी विभिन्न फ्रेमवर्क के अनुसार मिसकॉन्फ़िगरेशन का पता लगाता है, सॉफ़्टवेयर वंलरेबिलिटी और RBAC (रोल-आधारित-पहुंच-नियंत्रण) उल्लंघन को स्थानीय स्तरों पर पहले ही चरणों में खोजता है, सीआई/सीडी पाइपलाइन के शुरुआती चरणों में जोखिम स्कोर की गणना तुरंत करता है और समय के साथ जोखिम रुझान दिखाता है।

kubescape scan --verbose

यह टूल क्यूब-बेंच एक टूल है जो यह जांचता है कि क्यूबरनेटीज़ सुरक्षित ढंग से डिप्लॉय किया गया है या नहीं, जिसके लिए CIS क्यूबरनेटीज़ बेंचमार्क में दर्ज की गई जांचें चलाता है। आप निम्नलिखित में से चुन सकते हैं:

  • कंटेनर के अंदर से kube-bench चलाएं (होस्ट के साथ PID नेमस्पेस साझा करते हुए)

  • होस्ट पर kube-bench स्थापित करने वाला एक कंटेनर चलाएं, और फिर होस्ट पर kube-bench सीधे चलाएं

  • रिलीज़ पेज से नवीनतम बाइनरी इंस्टॉल करें,

  • स्रोत से इसे कंपाइल करें।

यह टूल क्यूबऑडिट एक कमांड लाइन टूल और एक गो पैकेज है जो क्यूबरनेटीज़ क्लस्टर के लिए विभिन्न सुरक्षा संबंधित चिंताओं के लिए ऑडिट करता है।

क्यूबऑडिट यह डिटेक्ट कर सकता है कि क्या यह क्लस्टर में एक कंटेनर के अंदर चल रहा है। अगर हां, तो यह कोशिश करेगा कि उस क्लस्टर में सभी क्यूबरनेटीज़ संसाधनों का ऑडिट करें:

kubeaudit all

इस टूल में एर्ग्यूमेंट autofix भी है जो स्वचालित रूप से पता लगी समस्याओं को ठीक करता है।

यह टूल kube-hunter कुबरनेटीज़ क्लस्टर में सुरक्षा कमियों की खोज करता है। यह टूल कुबरनेटीज़ वातावरण में सुरक्षा समस्याओं के लिए जागरूकता और दृश्यता बढ़ाने के लिए विकसित किया गया था।

kube-hunter --remote some.node.com

Kubei एक vulnerabilities स्कैनिंग और CIS Docker benchmark टूल है जो उपयोगकर्ताओं को उनके कुबरनेटीज़ क्लस्टर का सटीक और तत्काल जोखिम मूल्यांकन प्राप्त करने की अनुमति देता है। Kubei कुबरनेटीज़ क्लस्टर में उपयोग की जा रही सभी छवियों को स्कैन करता है, जिसमें एप्लिकेशन पॉड्स और सिस्टम पॉड्स की छवियां शामिल हैं।

KubiScan एक टूल है जो Kubernetes क्लस्टर को स्कैन करता है और Kubernetes के Role-based access control (RBAC) अधिकार मॉडल में जोखिमपूर्ण अनुमतियों के लिए खतरनाक अनुमतियों की जांच करता है।

Mkat एक टूल है जो अन्य प्रकार की उच्च जोखिम जांच करने के लिए बनाया गया है जो अन्य टूलों की तुलना में। इसमें मुख्य रूप से 3 विभिन्न मोड हैं:

  • find-role-relationships: जो खोजेगा कि कौन से AWS roles कौन से पॉड्स में चल रहे हैं

  • find-secrets: जो K8s संसाधनों में रहस्यों की पहचान करने का प्रयास करेगा जैसे Pods, ConfigMaps, और Secrets।

  • test-imds-access: जो पॉड्स को चलाने की कोशिश करेगा और मेटाडेटा v1 और v2 तक पहुँचने की कोशिश करेगा। चेतावनी: यह क्लस्टर में एक पॉड चलाएगा, बहुत सावधान रहें क्योंकि शायद आप ऐसा करना नहीं चाहेंगे!

IaC कोड की मान्यता की जाँच

Popeye एक उपयोगीता है जो लाइव Kubernetes क्लस्टर को स्कैन करती है और डिप्लॉय किए गए संसाधनों और विन्यासों में संभावित मुद्दों की रिपोर्ट करती है। यह आपके क्लस्टर को उस पर आधारित करके साफ करता है जो डिप्लॉय किया गया है और न कि जो डिस्क पर बैठा है। अपने क्लस्टर को स्कैन करके, यह गलत विन्यासों का पता लगाता है और आपको सुनिश्चित करने में मदद करता है कि सर्वोत्तम अभ्यास स्थान पर हैं, जिससे भविष्य की परेशानियों से बचा जा सके। यह वन्दरणीय अधिकारिक ओवरलोड को कम करने का उद्देश्य रखता है जिसका सामना करना पड़ता है जब कोई कुबरनेटीज़ क्लस्टर को जंगल में चलाने की जरूरत होती है। इसके अतिरिक्त, यदि आपका क्लस्टर एक मैट्रिक-सर्वर का उपयोग करता है, तो यह संभावित संसाधनों की अधिक/कम आवंटन और यदि आपके क्लस्टर क्षमता समाप्त हो जाए, तो आपको चेतान करने की कोशिश करता है।

KICS सुरक्षा जोखिम, अनुपालन मुद्दे, और इंफ्रास्ट्रक्चर मिसकॉन्फ़िगरेशन को खोजता है निम्नलिखित इंफ्रास्ट्रक्चर जैसे कोड समाधानों में: Terraform, Kubernetes, Docker, AWS CloudFormation, Ansible, Helm, Microsoft ARM, और OpenAPI 3.0 निर्देशिका

Checkov एक स्थैतिक कोड विश्लेषण टूल है इंफ्रास्ट्रक्चर-जैसे-कोड के लिए।

यह Terraform, Terraform प्लान, Cloudformation, AWS SAM, Kubernetes, Dockerfile, Serverless या ARM Templates का उपयोग करके प्रदान किए गए क्लाउड इंफ्रास्ट्रक्चर को स्कैन करता है और ग्राफ-आधारित स्कैनिंग का उपयोग करके सुरक्षा और अनुपालन मिसकॉन्फ़िगरेशन का पता लगाता है।

kube-score एक टूल है जो आपके Kubernetes ऑब्जेक्ट परिभाषाओं का स्थैतिक कोड विश्लेषण करता है।

स्थापित करने के लिए:

वितरणकमांड / लिंक

macOS, Linux, और Windows के लिए पूर्व-निर्मित बाइनरी

Docker

docker pull zegl/kube-score (Docker Hub)

Homebrew (macOS और Linux)

brew install kube-score

Krew (macOS और Linux)

kubectl krew install score

सुझाव

Kubernetes PodSecurityContext और SecurityContext

आप पॉड्स की सुरक्षा संदर्भ को कॉन्फ़िगर कर सकते हैं (PodSecurityContext) और कंटेनर्स की सुरक्षा संदर्भ को जो चलाए जाएँगे (SecurityContext)। अधिक जानकारी के लिए पढ़ें:

Kubernetes SecurityContext(s)

Kubernetes API Hardening

कुबरनेटीज़ एपीआई सर्वर का पहुँच सुरक्षित करना बहुत महत्वपूर्ण है क्योंकि पर्याप्त विशेषाधिकारों वाला एक दुर्भाग्यपूर्ण कलाकार इसका दुरुपयोग कर सकता है और वातावरण में कई तरह के नुकसान कर सकता है। यह महत्वपूर्ण है कि पहुँच को सुरक्षित किया जाए (व्हाइटलिस्ट मूलों को एपीआई सर्वर तक पहुँचने की अनुमति देना और किसी अन्य कनेक्शन को नकारना) और प्रमाणीकरण (कम से कम विशेषाधिकार के सिद्धांत का पालन करना)। और निश्चित रूप से कभी भी अनामत अनुरोधों की अनुमति नहीं देनी

सामान्य अनुरोध प्रक्रिया: उपयोगकर्ता या K8s सेवा खाता –> प्रमाणीकरण –> अधिकारीकरण –> प्रवेश नियंत्रण।

सुझाव:

  • पोर्ट बंद करें।

  • अनामत पहुँच से बचें।

  • NodeRestriction; एपीआई से विशेष नोडों की कोई पहुँच न हो।

  • मूल रूप से kubelets को नोड-प्रतिबंध.kubernetes.io/ उपसर्ग के साथ लेबल जोड़ने/हटाने/अपडेट करने से रोकता है। यह लेबल उपसर्ग व्यवस्थापकों के लिए अपने नोड ऑब्जेक्ट को लेबल करने के लिए सुरक्षित कार्यकलापों के लिए आरक्षित है, और kubelets को इस उपसर्ग के साथ लेबलों को संशोधित करने की अनुमति नहीं दी जाएगी।

  • और भी, लेबल के साथ सुरक्षित कार्यकलाप स्थानांतरण सुनिश्चित करें।

  • एपीआई पहुँच के लिए विशेष पॉड से बचें।

  • इंटरनेट को एपीआई सर्वर का सामना न करें।

  • अनधिकृत पहुँच RBAC से बचें।

  • फायरवॉल और आईपी व्हाइटलिस्टिंग के साथ ApiServer पोर्ट को सुरक्षित करें।

SecurityContext Hardening

डिफ़ॉल

apiVersion: v1
kind: Pod
metadata:
name: security-context-demo
spec:
securityContext:
runAsUser: 1000
runAsGroup: 3000
fsGroup: 2000
volumes:
- name: sec-ctx-vol
emptyDir: {}
containers:
- name: sec-ctx-demo
image: busybox
command: [ "sh", "-c", "sleep 1h" ]
securityContext:
runAsNonRoot: true
volumeMounts:
- name: sec-ctx-vol
mountPath: /data/demo
securityContext:
allowPrivilegeEscalation: true

सामान्य हार्डनिंग

आपको अपने Kubernetes environment को जितनी जरुरत हो उतनी बार अपडेट करना चाहिए:

  • Dependencies को अपडेट करें।

  • Bug और सुरक्षा पैचेस।

रिलीज़ साइकिल: हर 3 महीने में एक नया माइनर रिलीज़ होता है -- 1.20.3 = 1(Major).20(Minor).3(patch)

Kubernetes Cluster को अपडेट करने का सबसे अच्छा तरीका है (यहाँ से यहाँ):

  • इस क्रम में मास्टर नोड components को अपग्रेड करें:

  • etcd (सभी instances).

  • kube-apiserver (सभी control plane hosts).

  • kube-controller-manager.

  • kube-scheduler.

  • cloud controller manager, अगर आप इस्तेमाल करते हैं।

  • kube-proxy, kubelet जैसे Worker Node components को अपग्रेड करें।

HackTricks का समर्थन करें

Last updated