
CVE-2020-8554: Man-in-the-Middle mithilfe von LoadBalancer oder ExternalIPs
erstellt zur Behandlung von CVE-2020-8554
Hinweis: Dieses Chart ist für Kubernetes-Version 1.21 veraltet und ab 1.22 nicht mehr unterstützt. Um CVE-2020-8554 zu entschärfen, aktivieren Sie den DenyServiceExternalIPs-Admission-Controller im Cluster.
externalip-webhook ist ein validierender Webhook, der verhindert, dass Services beliebige externe IPs verwenden. Cluster-Administratoren können eine Liste von CIDRs angeben, die als externe IPs verwendet werden dürfen, indem sie den Parameter allowed-external-ip-cidrs setzen. Der Webhook erlaubt nur die Erstellung von Services, die keine externe IP benötigen oder deren externe IPs innerhalb des vom Administrator angegebenen Bereichs liegen.
Dieses Repository wurde mit kubebuilder erstellt.
Um die externe IP auf bestimmte CIDRs zu beschränken, kommentieren Sie allowed-external-ip-cidrs in webhook.yaml aus und aktualisieren Sie es.
HINWEIS: Wenn Auth-Proxy aktiviert ist, aktualisieren Sie allowed-external-ip-cidrs in metrics_server_auth_proxy.yaml.
Um den Webhook mit den Manifests in diesem Repository bereitzustellen, benötigen Sie kustomize in Ihrem Pfad.
Sie können kustomize hier herunterladen: https://kubernetes-sigs.github.io/kustomize/installation/
make deploy
make docker-build IMG=DOCKER_IMAGE_TAG
make deploy IMG=DOCKER_IMAGE_TAG
Ein rancher-externalip-webhook Helm-Chart wurde erstellt, um die Bereitstellung zu erleichtern.
Um die externe IP auf bestimmte CIDRs zu beschränken, setzen Sie den Wert allowedExternalIPCidrs im Helm-Befehl.
Um ein Webhook-Docker-Image zu erstellen und eine neue Chart-Version zu generieren:
make rancher-ci
Um nur eine neue Chart-Version zu generieren:
make rancher-chart-ci
Die Helm-Chart-Revision wird im Ordner build/chart erstellt. Helm-Chart-Archiv build/chart/latest/rancher-externalip-webhook-<VERSION>.tgz und Helm-Chart-Ordner build/chart/rancher-externalip-webhook.
Chart bereitstellen:
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
Der Webhook läuft standardmäßig im Namespace externalip-validation-system. Dies kann durch Aktualisierung von Namespace und namePrefix in der Datei kustomization.yaml geändert werden.
Webhook-Zertifikate können entweder durch cert-manager generiert oder durch Hochladen von Zertifikaten erstellt werden. Im folgenden Abschnitt wird erläutert, wie dies erreicht werden kann.
Kommentieren Sie alle Abschnitte mit 'CERTMANAGER' in der Datei kustomization.yaml aus.
webhook-server-cert im selben Namespace wie kustomization.yaml hoch.caBundle in manifests.yaml.Der Webhook gibt die Metrik webhook_failed_request_count aus, wenn er die Erstellung oder Aktualisierung eines Services ablehnt.
Kommentieren Sie --metrics-addr und den entsprechenden Abschnitt in containers.Port in webhook.yaml aus.
Befolgen Sie die hier beschriebenen Schritte, um die Webhook-Metriken zu exportieren.
Erfahren Sie, wie Sie sich mit der Kubernetes-Community engagieren können, auf der Community-Seite.
Sie erreichen die Betreuer dieses Projekts unter:
Die Teilnahme an der Kubernetes-Community unterliegt dem Kubernetes-Verhaltenskodex.