Detección de intrusiones en nodos Kubernetes
Última actualización:
Cada nodo de Kubernetes sigue siendo un servidor Linux: tiene SSH, un firewall en el kernel, archivos del sistema y, a menudo, un controlador de ingress que recibe tráfico de internet. El chart de Helm de InfraFence pone el agente en cada nodo, así que cada nodo se vigila y se defiende como cualquier otro servidor de tu panel.
Esta página explica qué cubre el agente en un nodo y qué no cubre. No sustituye a los controles de seguridad propios de Kubernetes.
Cómo funciona
- El chart ejecuta el agente como un DaemonSet: un pod en cada nodo, control plane incluido, desplegado nodo a nodo.
- Una clave de clúster registra todos los nodos. Créala en el panel de InfraFence en Ajustes › Kubernetes; empieza por
IFK-y solo se muestra una vez. Revocarla impide que se unan nodos nuevos; los ya registrados siguen funcionando. - Cada nodo aparece como un servidor propio en el panel, agrupado por nombre de clúster. Starter cubre un servidor, así que solo puede registrarse un nodo; Basic y superiores no tienen límite y facturan un servidor por nodo.
helm install infrafence-agent oci://ghcr.io/infrafence/charts/infrafence-agent \
--namespace infrafence --create-namespace \
--set apiKey="IFK-..." \
--set clusterName="production"Requisitos: Kubernetes 1.22 o posterior y Helm 3. El panel muestra el mismo comando con tu clave ya puesta. Los valores, las actualizaciones y la desinstalación están en Kubernetes.
Lo que cubre en un nodo
| Área | Qué hace el agente |
|---|---|
| SSH y el propio nodo | Lee los logs del nodo en /var/log, detiene la fuerza bruta por SSH y puntúa el riesgo de las sesiones SSH. Los bloqueos van al iptables del nodo, en las cadenas propias del agente. |
| Tráfico de ingress | Encuentra los pods de ingress-nginx y Traefik del nodo y lee sus logs de acceso en /var/log/pods, con las mismas reglas contra ataques web que en cualquier servidor. Traefik no escribe log de acceso hasta que lo activas. |
| Pods del nodo | Informa, a través de la API de Kubernetes con acceso de solo lectura, de los pods de su nodo y de los hosts de ingress del clúster. Los bucles de reinicio, los OOM kills, los fallos al descargar imágenes y los desalojos de pods de su nodo llegan al panel como eventos. |
| Saliente, DNS, archivos | Vigila las conexiones que salen del nodo, las respuestas DNS, el malware y la integridad de los archivos del sistema, como en cualquier servidor Linux. |
| Actualizaciones | Con autoUpdate.enabled, un agente autorizado a actualizarse verifica la firma cosign de la nueva imagen y mueve su propio DaemonSet a ella por digest. |
Lo que no cubre
- El tráfico de los pods puede no pasar por las reglas del firewall del nodo. Los bloqueos se aplican donde el tráfico llega al propio nodo (SSH, servicios del host, pods en la red del host como un controlador de ingress con
hostNetwork). El tráfico que el plugin CNI o kube-proxy reenvía a los pods puede no pasar por INPUT ni por DOCKER-USER, donde están las reglas del agente. El panel lo indica en la página del nodo. - Ninguna regla dentro del clúster. El agente no escribe NetworkPolicies, listas de denegación del ingress ni reglas del CNI: los bloqueos se quedan en el iptables del nodo.
- No es un admission controller ni un monitor de llamadas al sistema. No revisa los manifiestos antes de que se ejecuten ni traza las llamadas al sistema dentro de los contenedores. Los controles propios de Kubernetes, como RBAC y las NetworkPolicies, siguen siendo cosa tuya.
- Necesita pods privilegiados con red del host. Un clúster gestionado que no los permita no puede ejecutar el chart.
- Los bloqueos, la lista blanca y los bloqueos por país se aplican a IPv4.
Lo que despliega el chart
- Un DaemonSet con red del host, el espacio de nombres PID del host y pods privilegiados, que el agente necesita para gestionar el firewall del nodo y ver sus procesos.
- Un ServiceAccount que puede leer pods, nodos, eventos, namespaces, ConfigMaps, ingresses y NetworkPolicies, más get y patch sobre DaemonSets, que el agente usa solo para actualizar el suyo.
- Un Secret con la clave de clúster.
- Montajes del host:
/var/logy los sockets de Docker y containerd en solo lectura, y/etc/infrafenceen lectura y escritura para el registro del nodo.
El código del chart está en el repositorio del agente: charts/infrafence-agent. Si ArgoCD o Flux gestionan el clúster, desactiva las actualizaciones automáticas y sube la etiqueta de la imagen en tu repositorio:
autoUpdate:
enabled: falseCada versión publica además infrafence-agent-linux-amd64-k8s e infrafence-agent-linux-arm64-k8s: el agente compilado con el cliente de Kubernetes, como en la imagen del chart, firmado como todas las versiones (Verificar una versión). Sus funciones de Kubernetes solo se activan cuando se ejecuta en un pod. Para un único host Docker, consulta Seguridad de hosts Docker.
Preguntas
- ¿Cada nodo cuenta como un servidor?
- Sí. Cada nodo se registra como un servidor propio y se factura como uno en Basic y superiores. En Starter solo puede registrarse un nodo.
- ¿Qué pasa cuando se reconstruye un nodo?
- Un nodo que vuelve a registrarse, tras reconstruirlo o borrar
/etc/infrafence, conserva su servidor en el panel y recibe un token nuevo. - ¿Puedo usarlo con ArgoCD o Flux?
- Sí. Pon
autoUpdate.enabledafalsepara que el agente no cambie su propio DaemonSet, y actualiza la etiqueta de la imagen en tu repositorio.
Pruébalo gratis en 1 servidor
Starter protege por completo un servidor, gratis y sin tarjeta de crédito.
- 01
Crea una cuenta gratuita y abre Servidores › Añadir servidor para obtener el token de instalación. Es válido durante una hora.
Crear el token - 02
Después ejecuta esto como root en el servidor:
curl -fsSL https://github.com/infrafence/infrafence-agent/releases/latest/download/install.sh | sudo bash -s -- --token <TOKEN>
