
CVE-2020-8554: Человек посередине с использованием LoadBalancer или ExternalIPs
создан для устранения CVE-2020-8554
Примечание: Этот чарт устарел для версии Kubernetes 1.21 и не поддерживается начиная с 1.22. Чтобы смягчить CVE-2020-8554, включите DenyServiceExternalIPs admission controller в кластере.
externalip-webhook — это проверяющий вебхук, который предотвращает использование сервисами случайных внешних IP-адресов. Администраторы кластера могут указать список CIDR, разрешённых для использования в качестве внешних IP, задав параметр allowed-external-ip-cidrs. Вебхук разрешит создание только тех сервисов, которые не требуют внешнего IP или чьи внешние IP находятся в диапазоне, указанном администратором.
Этот репозиторий построен с помощью kubebuilder.
Чтобы ограничить внешние IP определёнными CIDR, раскомментируйте и обновите allowed-external-ip-cidrs в webhook.yaml.
ПРИМЕЧАНИЕ: Если включён auth-proxy, обновите allowed-external-ip-cidrs в metrics_server_auth_proxy.yaml.
Чтобы развернуть вебхук с помощью манифестов в этом репозитории, необходимо иметь kustomize в вашем PATH. Вы можете скачать kustomize здесь: https://kubernetes-sigs.github.io/kustomize/installation/
make deploy
make docker-build IMG=DOCKER_IMAGE_TAG
make deploy IMG=DOCKER_IMAGE_TAG
Для упрощения развёртывания создан Helm-чарт rancher-externalip-webhook.
Чтобы ограничить внешние IP определёнными CIDR, установите значение allowedExternalIPCidrs в команде helm.
Чтобы собрать Docker-образ вебхука и создать новую версию чарта:
make rancher-ci
Чтобы просто создать новую версию чарта:
make rancher-chart-ci
Ревизия Helm-чарта будет создана в папке build/chart. Архив Helm-чарта 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. Это можно изменить, обновив namespace и namePrefix в файле kustomization.yaml.
Сертификаты вебхука могут быть сгенерированы с помощью cert-manager или загружены вручную. В следующем разделе объясняется, как это сделать.
Раскомментируйте все секции с 'CERTMANAGER' в файле kustomization.yaml.
webhook-server-cert в том же пространстве имён, что и в kustomization.yaml.caBundle в manifests.yaml.Вебхук выдаёт метрику webhook_failed_request_count при каждом отклонении операции создания или обновления сервиса.
Раскомментируйте --metrics-addr и соответствующий раздел containers.Port в webhook.yaml.
Следуйте шагам, описанным здесь, чтобы экспортировать метрики вебхука.
Узнайте, как взаимодействовать с сообществом Kubernetes на странице сообщества.
Вы можете связаться с мейнтейнерами этого проекта через:
Участие в сообществе Kubernetes регулируется Кодексом поведения Kubernetes.