
CVE-2020-8554: Homem no meio usando LoadBalancer ou ExternalIPs
criado para tratar CVE-2020-8554
Nota: Este chart está obsoleto para a versão 1.21 do Kubernetes e não é suportado a partir da 1.22. Para mitigar o CVE-2020-8554, habilite o DenyServiceExternalIPs admission controller no cluster.
externalip-webhook é um webhook validador que impede que serviços usem IPs externos aleatórios. Os administradores do cluster podem especificar uma lista de CIDRs permitidos para serem usados como IP externo, especificando o parâmetro allowed-external-ip-cidrs. O webhook só permitirá a criação de serviços que não exijam IP externo ou cujos IPs externos estejam dentro do intervalo especificado pelo administrador.
Este repositório foi construído usando kubebuilder.
Para restringir o IP externo a certos CIDRs, descomente e atualize allowed-external-ip-cidrs em webhook.yaml.
NOTA: Se o auth-proxy estiver habilitado, atualize allowed-external-ip-cidrs em metrics_server_auth_proxy.yaml.
Para implantar o webhook usando os manifests deste repositório, você deve ter o kustomize no seu PATH. Você pode baixar o kustomize aqui: https://kubernetes-sigs.github.io/kustomize/installation/
make deploy
make docker-build IMG=DOCKER_IMAGE_TAG
make deploy IMG=DOCKER_IMAGE_TAG
Um chart Helm rancher-externalip-webhook foi criado para facilitar a implantação.
Para restringir o IP externo a certos CIDRs, defina o valor allowedExternalIPCidrs no comando helm
Para construir a imagem Docker do webhook e gerar uma nova versão do chart
make rancher-ci
Para apenas gerar uma nova versão do chart
make rancher-chart-ci
A revisão do chart Helm será gerada na pasta build/chart. O arquivo do chart Helm build/chart/latest/rancher-externalip-webhook-<VERSION>.tgz e a pasta do chart Helm build/chart/rancher-externalip-webhook
Implantando o chart
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
Por padrão, o webhook é executado no namespace externalip-validation-system. Isso pode ser alterado atualizando o namespace e o namePrefix no arquivo kustomization.yaml.
Os certificados do webhook podem ser gerados via cert-manager ou através do upload de certificados. A seção a seguir explica como isso pode ser feito.
Descomente todas as seções com 'CERTMANAGER' no arquivo kustomization.yaml.
webhook-server-cert no mesmo namespace do kustomization.yaml.caBundle em manifests.yaml.O webhook emite a métrica webhook_failed_request_count sempre que rejeita uma operação de criação ou atualização de serviço.
Descomente --metrics-addr e a seção correspondente em containers.Port em webhook.yaml.
Siga os passos mencionados aqui para exportar as métricas do webhook.
Saiba como se envolver com a comunidade Kubernetes na página da comunidade.
Você pode contatar os mantenedores deste projeto em:
A participação na comunidade Kubernetes é regida pelo Código de Conduta do Kubernetes.