
CVE-2020-8554: LoadBalancer या ExternalIPs का उपयोग करके मैन-इन-द-मिडल हमला
CVE-2020-8554 को संबोधित करने के लिए बनाया गया है।
नोट: यह चार्ट कुबरनेट्स संस्करण 1.21 के लिए अप्रचलित है और 1.22 से शुरू होने पर असमर्थित है। CVE-2020-8554 को कम करने के लिए, क्लस्टर पर DenyServiceExternalIPs प्रवेश नियंत्रक सक्षम करें।
externalip-webhook, एक मान्य करने वाला वेबहुक है जो सेवाओं को यादृच्छिक बाहरी IP का उपयोग करने से रोकता है। क्लस्टर प्रशासक allowed-external-ip-cidrs पैरामीटर निर्दिष्ट करके बाहरी IP के रूप में उपयोग करने की अनुमति वाले CIDR की सूची निर्दिष्ट कर सकते हैं। वेबहुक केवल उन सेवाओं के निर्माण की अनुमति देगा जिन्हें बाहरी IP की आवश्यकता नहीं है या जिनके बाहरी IP प्रशासक द्वारा निर्दिष्ट सीमा के भीतर हैं।
यह रेपो kubebuilder का उपयोग करके बनाया गया है।
बाहरी IP को कुछ CIDR तक सीमित करने के लिए, webhook.yaml में allowed-external-ip-cidrs को अनकमेंट और अपडेट करें।
नोट: यदि auth-proxy सक्षम है तो metrics_server_auth_proxy.yaml में allowed-external-ip-cidrs अपडेट करें।
इस रेपो में मेनिफेस्ट का उपयोग करके वेबहुक तैनात करने के लिए, आपके पथ में kustomize होना चाहिए।
आप kustomize यहाँ डाउनलोड कर सकते हैं: https://kubernetes-sigs.github.io/kustomize/installation/
make deploy
make docker-build IMG=DOCKER_IMAGE_TAG
make deploy IMG=DOCKER_IMAGE_TAG
तैनाती की सुविधा के लिए एक rancher-externalip-webhook हेल्म चार्ट बनाया गया है।
बाहरी IP को कुछ CIDR तक सीमित करने के लिए, हेल्म कमांड पर allowedExternalIPCidrs मान सेट करें।
वेबहुक डॉकर इमेज बनाने और एक नया चार्ट संस्करण उत्पन्न करने के लिए
make rancher-ci
सिर्फ एक नया चार्ट संस्करण उत्पन्न करने के लिए
make rancher-chart-ci
हेल्म चार्ट संशोधन build/chart फ़ोल्डर के अंतर्गत उत्पन्न होगा। हेल्म चार्ट आर्काइव build/chart/latest/rancher-externalip-webhook-<VERSION>.tgz और हेल्म चार्ट फ़ोल्डर build/chart/rancher-externalip-webhook
चार्ट तैनात करना
helm -n externalip-webhook template rancher-externalip-webhook build/chart/latest/rancher-externalip-webhook-<VERSION>.tgz --output-dir . --set metrics.enabled=true --set metrics.prometheusExport=true
kubectl apply -R -f ./rancher-externalip-webhook
वेबहुक डिफ़ॉल्ट रूप से externalip-validation-system ns के अंतर्गत चलता है। इसे kustomization.yaml फ़ाइल में namespace और namePrefix अपडेट करके बदला जा सकता है।
वेबहुक प्रमाणपत्र या तो cert-manager के माध्यम से उत्पन्न किए जा सकते हैं या प्रमाणपत्र अपलोड करके। निम्नलिखित अनुभाग बताता है कि यह कैसे प्राप्त किया जा सकता है।
kustomization.yaml फ़ाइल में 'CERTMANAGER' वाले सभी अनुभागों को अनकमेंट करें।
webhook-server-cert नाम के कुबरनेट्स सीक्रेट के रूप में kustomization.yaml के समान नेमस्पेस में अपलोड करें।caBundle फ़ील्ड अपडेट करें।वेबहुक webhook_failed_request_count मेट्रिक्स उत्सर्जित करता है जब भी यह सेवा निर्माण या अद्यतन ऑपरेशन को अस्वीकार करता है।
webhook.yaml में --metrics-addr और containers.Port में संबंधित अनुभाग को अनकमेंट करें।
वेबहुक मेट्रिक्स निर्यात करने के लिए यहाँ उल्लिखित चरणों का पालन करें।
कुबरनेट्स समुदाय से कैसे जुड़ें, यह समुदाय पृष्ठ पर जानें।
आप इस परियोजना के अनुरक्षकों तक पहुँच सकते हैं:
कुबरनेट्स समुदाय में भागीदारी कुबरनेट्स आचार संहिता द्वारा शासित है।