Kubernetes Hardening

Reading time: 10 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

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

Tools to analyse a cluster

**Steampipe - Kubernetes Compliance

यह Kubernetes क्लस्टर पर कई अनुपालन जांच करेगा। इसमें CIS, राष्ट्रीय सुरक्षा एजेंसी (NSA) और साइबर सुरक्षा और बुनियादी ढांचे की सुरक्षा एजेंसी (CISA) के Kubernetes हार्डनिंग के लिए साइबर सुरक्षा तकनीकी रिपोर्ट का समर्थन शामिल है।

bash
# Install Steampipe
brew install turbot/tap/powerpipe
brew install turbot/tap/steampipe
steampipe plugin install kubernetes

# Start the service
steampipe service start

# Install the module
mkdir dashboards
cd dashboards
powerpipe mod init
powerpipe mod install github.com/turbot/steampipe-mod-kubernetes-compliance

# Run the module
powerpipe server

Kubescape

Kubescape एक K8s ओपन-सोर्स टूल है जो एक मल्टी-क्लाउड K8s सिंगल पेन ऑफ ग्लास प्रदान करता है, जिसमें जोखिम विश्लेषण, सुरक्षा अनुपालन, RBAC विज़ुअलाइज़र और इमेज कमजोरियों की स्कैनिंग शामिल है। Kubescape K8s क्लस्टर्स, YAML फ़ाइलों और HELM चार्ट्स को स्कैन करता है, कई ढांचों के अनुसार गलत कॉन्फ़िगरेशन का पता लगाता है (जैसे NSA-CISA, MITRE ATT&CK®), सॉफ़्टवेयर कमजोरियाँ, और RBAC (भूमिका-आधारित-एक्सेस-नियंत्रण) उल्लंघन CI/CD पाइपलाइन के प्रारंभिक चरणों में, जोखिम स्कोर तुरंत गणना करता है और समय के साथ जोखिम प्रवृत्तियों को दिखाता है।

bash
curl -s https://raw.githubusercontent.com/kubescape/kubescape/master/install.sh | /bin/bash
kubescape scan --verbose

Popeye

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

Kube-bench

उपकरण kube-bench एक उपकरण है जो यह जांचता है कि क्या Kubernetes सुरक्षित रूप से तैनात है, CIS Kubernetes Benchmark में दस्तावेजीकृत जांचों को चलाकर।
आप चुन सकते हैं:

  • कंटेनर के अंदर kube-bench चलाना (होस्ट के साथ PID नामस्थान साझा करना)
  • एक कंटेनर चलाना जो होस्ट पर kube-bench स्थापित करता है, और फिर होस्ट पर सीधे kube-bench चलाना
  • Releases page से नवीनतम बाइनरी स्थापित करना,
  • इसे स्रोत से संकलित करना।

Kubeaudit

[DEPRECATED] उपकरण kubeaudit एक कमांड लाइन उपकरण और एक Go पैकेज है जो विभिन्न सुरक्षा चिंताओं के लिए Kubernetes क्लस्टरों का ऑडिट करता है।

Kubeaudit यह पता लगा सकता है कि क्या यह क्लस्टर में एक कंटेनर के भीतर चल रहा है। यदि हां, तो यह उस क्लस्टर में सभी Kubernetes संसाधनों का ऑडिट करने का प्रयास करेगा:

kubeaudit all

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

Kube-hunter

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

bash
kube-hunter --remote some.node.com

Trivy

Trivy में सुरक्षा मुद्दों की खोज करने वाले स्कैनर होते हैं, और लक्ष्यों की पहचान करते हैं जहाँ यह उन मुद्दों को खोज सकता है:

  • कंटेनर इमेज
  • फ़ाइल प्रणाली
  • गिट रिपॉजिटरी (दूरस्थ)
  • वर्चुअल मशीन इमेज
  • कुबेरनेट्स

Kubei

[ऐसा लगता है कि इसे बनाए नहीं रखा गया है]

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

KubiScan

KubiScan कुबेरनेट्स के रोल-आधारित एक्सेस कंट्रोल (RBAC) प्राधिकरण मॉडल में जोखिम भरे अनुमतियों के लिए कुबेरनेट्स क्लस्टर को स्कैन करने के लिए एक उपकरण है।

Managed Kubernetes Auditing Toolkit

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

  • find-role-relationships: जो यह पता लगाएगा कि कौन से AWS भूमिकाएँ किस पॉड में चल रही हैं
  • find-secrets: जो K8s संसाधनों जैसे पॉड्स, कॉन्फ़िगमैप्स, और सीक्रेट्स में सीक्रेट्स की पहचान करने की कोशिश करता है।
  • test-imds-access: जो पॉड्स को चलाने और मेटाडेटा v1 और v2 तक पहुँचने की कोशिश करेगा। चेतावनी: यह क्लस्टर में एक पॉड चलाएगा, बहुत सावधान रहें क्योंकि शायद आप ऐसा नहीं करना चाहते!

Audit IaC Code

KICS

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

Checkov

Checkov इन्फ्रास्ट्रक्चर-ऐज़-कोड के लिए एक स्थैतिक कोड विश्लेषण उपकरण है।

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

Kube-score

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

इंस्टॉल करने के लिए:

वितरणकमांड / लिंक
macOS, Linux, और Windows के लिए पूर्व-निर्मित बाइनरीGitHub रिलीज़
डॉकरdocker pull zegl/kube-score (Docker Hub)
होमब्रे (macOS और Linux)brew install kube-score
Krew (macOS और Linux)kubectl krew install score

टिप्स

Kubernetes PodSecurityContext और SecurityContext

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

Kubernetes SecurityContext(s)

Kubernetes API Hardening

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

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

टिप्स:

  • पोर्ट बंद करें।
  • गुमनाम पहुँच से बचें।
  • NodeRestriction; API तक विशिष्ट नोड्स से कोई पहुँच नहीं।
  • https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#noderestriction
  • मूल रूप से kubelets को node-restriction.kubernetes.io/ उपसर्ग के साथ लेबल जोड़ने/हटाने/अपडेट करने से रोकता है। यह लेबल उपसर्ग प्रशासकों के लिए उनके नोड ऑब्जेक्ट्स को कार्यभार अलगाव के उद्देश्यों के लिए लेबल करने के लिए आरक्षित है, और kubelets को उस उपसर्ग के साथ लेबल को संशोधित करने की अनुमति नहीं होगी।
  • और साथ ही, kubelets को इन लेबलों और लेबल उपसर्गों को जोड़ने/हटाने/अपडेट करने की अनुमति देता है।
  • लेबल के साथ सुरक्षित कार्यभार अलगाव सुनिश्चित करें।
  • API पहुँच से विशिष्ट पॉड्स को बचें।
  • इंटरनेट पर ApiServer के प्रदर्शन से बचें।
  • अनधिकृत पहुँच RBAC से बचें।
  • फ़ायरवॉल और IP व्हाइटलिस्टिंग के साथ ApiServer पोर्ट।

SecurityContext Hardening

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

yaml
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 वातावरण को आवश्यकतानुसार अपडेट करना चाहिए ताकि:

  • निर्भरताएँ अद्यतित हों।
  • बग और सुरक्षा पैच।

रिलीज़ चक्र: हर 3 महीने में एक नया माइनर रिलीज़ होता है -- 1.20.3 = 1(मुख्य).20(माइनर).3(पैच)

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

  • मास्टर नोड के घटकों को इस अनुक्रम का पालन करते हुए अपग्रेड करें:
  • etcd (सभी उदाहरण)।
  • kube-apiserver (सभी नियंत्रण विमान होस्ट)।
  • kube-controller-manager।
  • kube-scheduler।
  • क्लाउड कंट्रोलर प्रबंधक, यदि आप एक का उपयोग करते हैं।
  • कार्यकर्ता नोड के घटकों जैसे kube-proxy, kubelet को अपग्रेड करें।

Kubernetes निगरानी और सुरक्षा:

  • Kyverno नीति इंजन
  • Cilium Tetragon - eBPF-आधारित सुरक्षा अवलोकन और रनटाइम प्रवर्तन
  • नेटवर्क सुरक्षा नीतियाँ
  • Falco - रनटाइम सुरक्षा निगरानी और पहचान

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

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