
CVE-2020-8554: Hombre en el medio usando LoadBalancer o ExternalIPs
creado para abordar CVE-2020-8554
Nota: Este chart está obsoleto para la versión 1.21 de Kubernetes y no es compatible a partir de 1.22. Para mitigar CVE-2020-8554, habilita el controlador de admisión DenyServiceExternalIPs en el clúster.
externalip-webhook es un webhook de validación que evita que los servicios usen IPs externas aleatorias. Los administradores del clúster pueden especificar una lista de CIDR permitidos para ser usados como IP externa mediante el parámetro allowed-external-ip-cidrs. El webhook solo permitirá la creación de servicios que no requieran IP externa o cuyas IPs externas estén dentro del rango especificado por el administrador.
Este repositorio está construido con kubebuilder.
Para restringir la IP externa a ciertos CIDR, descomenta y actualiza allowed-external-ip-cidrs en webhook.yaml.
NOTA: Si auth-proxy está habilitado, actualiza allowed-external-ip-cidrs en metrics_server_auth_proxy.yaml.
Para desplegar el webhook usando los manifiestos de este repositorio, debes tener kustomize en tu PATH. Puedes descargar kustomize aquí: https://kubernetes-sigs.github.io/kustomize/installation/
make deploy
make docker-build IMG=DOCKER_IMAGE_TAG
make deploy IMG=DOCKER_IMAGE_TAG
Se ha creado un chart de Helm rancher-externalip-webhook para facilitar el despliegue.
Para restringir la IP externa a ciertos CIDR, establece el valor allowedExternalIPCidrs en el comando de Helm.
Para construir la imagen Docker del webhook y generar una nueva versión del chart
make rancher-ci
Para solo generar una nueva versión del chart
make rancher-chart-ci
La revisión del chart de Helm se generará en la carpeta build/chart. El archivo del chart de Helm build/chart/latest/rancher-externalip-webhook-<VERSION>.tgz y la carpeta del chart de Helm build/chart/rancher-externalip-webhook
Desplegando el 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 defecto, el webhook se ejecuta en el namespace externalip-validation-system. Esto se puede cambiar actualizando namespace y namePrefix en el archivo kustomization.yaml.
Los certificados del webhook se pueden generar mediante cert-manager o cargando certificados. La siguiente sección explica cómo se puede lograr esto.
Descomenta todas las secciones con 'CERTMANAGER' en el archivo kustomization.yaml.
webhook-server-cert en el namespace especificado en kustomization.yaml.caBundle en manifests.yaml.El webhook emite métricas webhook_failed_request_count cada vez que rechaza una operación de creación o actualización de servicio.
Descomenta --metrics-addr y la sección correspondiente en containers.Port en webhook.yaml.
Sigue los pasos mencionados aquí para exportar las métricas del webhook.
Aprende cómo participar en la comunidad de Kubernetes en la página de la comunidad.
Puedes contactar a los mantenedores de este proyecto en:
La participación en la comunidad de Kubernetes se rige por el Código de Conducta de Kubernetes.