Detecção de intrusão em nós Kubernetes
Última atualização:
Todo nó do Kubernetes continua sendo um servidor Linux: tem SSH, um firewall no kernel, arquivos do sistema e, muitas vezes, um ingress controller recebendo tráfego da internet. O chart Helm do InfraFence coloca o agente em cada nó, para cada nó ser monitorado e defendido como qualquer outro servidor no seu painel.
Esta página diz o que o agente cobre num nó, e o que não cobre. Ele não substitui os controles de segurança do próprio Kubernetes.
Como ele roda
- O chart roda o agente como um DaemonSet: um pod em cada nó, control plane incluído, implantado um nó de cada vez.
- Uma chave de cluster registra todos os nós. Crie-a no painel em Configurações › Kubernetes; ela começa com
IFK-e só é mostrada uma vez. Revogá-la impede que novos nós entrem; os nós já registrados continuam funcionando. - Cada nó aparece como um servidor próprio no painel, agrupado pelo nome do cluster. O Starter cobre um servidor, então só um nó pode se registrar; o Basic e os planos acima não têm limite e cobram um servidor por nó.
helm install infrafence-agent oci://ghcr.io/infrafence/charts/infrafence-agent \
--namespace infrafence --create-namespace \
--set apiKey="IFK-..." \
--set clusterName="production"Pré-requisitos: Kubernetes 1.22 ou mais recente e Helm 3. O painel mostra o mesmo comando já com a sua chave. Valores, atualizações e desinstalação estão em Kubernetes.
O que ele cobre num nó
| Área | O que o agente faz |
|---|---|
| SSH e o próprio nó | Lê os logs do nó em /var/log, para a força bruta no SSH e dá uma pontuação de risco às sessões SSH. Os bloqueios vão para o iptables do nó, nas cadeias próprias do agente. |
| Tráfego do ingress | Encontra os pods do ingress-nginx e do Traefik no nó e lê os logs de acesso deles em /var/log/pods, com as mesmas regras de ataques web de qualquer servidor. O Traefik não grava log de acesso até você ativá-lo. |
| Pods no nó | Informa, pela API do Kubernetes com acesso somente leitura, os pods do seu nó e os hosts de ingress do cluster. Crash loops, OOM kills, falhas ao baixar imagens e despejos de pods do seu nó vão para o painel como eventos. |
| Saída, DNS, arquivos | Monitora as conexões que saem do nó, as respostas de DNS, malware e a integridade dos arquivos do sistema, como em qualquer servidor Linux. |
| Atualizações | Com autoUpdate.enabled, um agente autorizado a se atualizar verifica a assinatura cosign da nova imagem e move o próprio DaemonSet para ela por digest. |
O que ele não cobre
- O tráfego dos pods pode não passar pelas regras de firewall do nó. Os bloqueios valem onde o tráfego chega ao próprio nó (SSH, serviços do host, pods na rede do host, como um ingress controller com
hostNetwork). O tráfego que o plugin CNI ou o kube-proxy encaminha para os pods pode não passar por INPUT nem por DOCKER-USER, onde estão as regras do agente. O painel avisa isso na página do nó. - Nenhuma regra dentro do cluster. O agente não escreve NetworkPolicies, listas de bloqueio do ingress nem regras do CNI: os bloqueios ficam no iptables do nó.
- Não é um admission controller nem um monitor de syscalls em tempo de execução. Ele não verifica os manifests antes de rodarem e não rastreia chamadas de sistema dentro dos containers. Os controles do próprio Kubernetes, como o RBAC e as NetworkPolicies, continuam com você.
- Ele precisa de pods privilegiados com rede do host. Um cluster gerenciado que os proíbe não consegue rodar o chart.
- Os bloqueios, a whitelist e os bloqueios por país valem para IPv4.
O que o chart implanta
- Um DaemonSet com rede do host, o namespace de PID do host e pods privilegiados, de que o agente precisa para gerenciar o firewall do nó e ver os processos dele.
- Uma ServiceAccount que pode ler pods, nós, eventos, namespaces, ConfigMaps, ingresses e NetworkPolicies, além de get e patch em DaemonSets, que o agente usa só para atualizar o próprio.
- Um Secret com a chave de cluster.
- Montagens do host:
/var/loge os sockets do Docker e do containerd em somente leitura, e/etc/infrafenceem leitura e escrita para o registro do nó.
O código do chart está no repositório do agente: charts/infrafence-agent. Se o ArgoCD ou o Flux gerenciam o cluster, desligue as atualizações automáticas e suba a tag da imagem no seu repositório:
autoUpdate:
enabled: falseCada versão também publica infrafence-agent-linux-amd64-k8s e infrafence-agent-linux-arm64-k8s: o agente compilado com o cliente do Kubernetes, como na imagem do chart, assinado como toda versão (Verificar uma versão). Os recursos de Kubernetes dele só são ativados quando ele roda num pod. Para um único host Docker, veja Segurança de hosts Docker.
Perguntas
- Cada nó conta como um servidor?
- Sim. Cada nó se registra como um servidor próprio e é cobrado como um no Basic e nos planos acima. No Starter só um nó pode se registrar.
- O que acontece quando um nó é recriado?
- Um nó que se registra de novo, depois de ser recriado ou de ter o
/etc/infrafenceapagado, mantém o seu servidor no painel e recebe um novo token. - Dá para usar com ArgoCD ou Flux?
- Sim. Defina
autoUpdate.enabledcomofalsepara o agente não alterar o próprio DaemonSet, e atualize a tag da imagem no seu repositório.
Teste grátis em 1 servidor
O Starter protege um servidor por completo, grátis e sem cartão de crédito.
- 01
Crie uma conta gratuita e abra Servidores › Adicionar servidor para obter o token de instalação. Ele vale por uma hora.
Criar o token - 02
Depois execute isto como root no servidor:
curl -fsSL https://github.com/infrafence/infrafence-agent/releases/latest/download/install.sh | sudo bash -s -- --token <TOKEN>
