InfraFenceInfraFence

Live Security Operations

Commencer

Détection d'intrusion sur les nœuds Kubernetes

Dernière mise à jour:

Chaque nœud Kubernetes reste un serveur Linux : il a SSH, un pare-feu noyau, des fichiers système et, souvent, un contrôleur ingress qui reçoit le trafic d'internet. Le chart Helm d'InfraFence installe l'agent sur chaque nœud, si bien que chaque nœud est surveillé et défendu comme n'importe quel autre serveur de votre tableau de bord.

Cette page indique ce que l'agent couvre sur un nœud, et ce qu'il ne couvre pas. Il ne remplace pas les contrôles de sécurité propres à Kubernetes.

Comment il fonctionne

  • Le chart lance l'agent en DaemonSet : un pod sur chaque nœud, control plane compris, déployé un nœud à la fois.
  • Une seule clé de cluster enregistre tous les nœuds. Créez-la dans le tableau de bord sous Paramètres › Kubernetes ; elle commence par IFK- et n'est affichée qu'une fois. La révoquer empêche de nouveaux nœuds de rejoindre le cluster ; les nœuds déjà enregistrés continuent de fonctionner.
  • Chaque nœud apparaît comme un serveur à part entière dans le tableau de bord, regroupé par nom de cluster. Starter couvre un serveur, donc un seul nœud peut s'enregistrer ; à partir de Basic, il n'y a pas de limite et chaque nœud est facturé comme un serveur.
helm install infrafence-agent oci://ghcr.io/infrafence/charts/infrafence-agent \
  --namespace infrafence --create-namespace \
  --set apiKey="IFK-..." \
  --set clusterName="production"

Prérequis : Kubernetes 1.22 ou ultérieur et Helm 3. Le tableau de bord affiche la même commande avec votre clé déjà renseignée. Les valeurs, les mises à jour et la désinstallation sont décrites dans Kubernetes.

Ce qu'il couvre sur un nœud

DomaineCe que fait l'agent
SSH et le nœud lui-mêmeLit les journaux du nœud dans /var/log, arrête la force brute SSH et évalue le risque des sessions SSH. Les bannissements vont dans l'iptables du nœud, dans les chaînes propres à l'agent.
Trafic ingressTrouve les pods ingress-nginx et Traefik du nœud et lit leurs journaux d'accès sous /var/log/pods, avec les mêmes règles d'attaques web que sur tout serveur. Traefik n'écrit aucun journal d'accès tant que vous ne l'activez pas.
Pods du nœudIndique, via l'API Kubernetes en lecture seule, les pods de son nœud et les hôtes ingress du cluster. Les crash loops, OOM kills, échecs de récupération d'image et évictions des pods de son nœud sont envoyés au tableau de bord comme événements.
Sortant, DNS, fichiersSurveille les connexions qui quittent le nœud, les réponses DNS, les malwares et l'intégrité des fichiers système, comme sur tout serveur Linux.
Mises à jourAvec autoUpdate.enabled, un agent autorisé à se mettre à jour vérifie la signature cosign de la nouvelle image et fait passer son propre DaemonSet sur celle-ci, par digest.

Ce qu'il ne couvre pas

  • Le trafic des pods peut ne pas traverser les règles du pare-feu du nœud. Les bannissements s'appliquent là où le trafic atteint le nœud lui-même (SSH, services de l'hôte, pods sur le réseau de l'hôte comme un contrôleur ingress en hostNetwork). Le trafic que le plugin CNI ou kube-proxy transfère vers les pods peut ne pas passer par INPUT ni par DOCKER-USER, où se trouvent les règles de l'agent. Le tableau de bord le signale sur la page du nœud.
  • Aucune règle à l'intérieur du cluster. L'agent n'écrit ni NetworkPolicies, ni listes de refus d'ingress, ni règles CNI : les bannissements restent dans l'iptables du nœud.
  • Ni admission controller, ni surveillance des appels système à l'exécution. Il ne vérifie pas les manifestes avant leur exécution et ne trace pas les appels système dans les conteneurs. Les contrôles propres à Kubernetes, comme RBAC et les NetworkPolicies, restent de votre ressort.
  • Il a besoin de pods privilégiés avec le réseau de l'hôte. Un cluster managé qui les interdit ne peut pas faire tourner le chart.
  • Les bannissements, la liste blanche et les blocages par pays s'appliquent à l'IPv4.

Ce que déploie le chart

  • Un DaemonSet avec le réseau de l'hôte, l'espace de noms PID de l'hôte et des pods privilégiés, dont l'agent a besoin pour gérer le pare-feu du nœud et voir ses processus.
  • Un ServiceAccount qui peut lire les pods, nœuds, événements, namespaces, ConfigMaps, ingresses et NetworkPolicies, plus get et patch sur les DaemonSets, que l'agent n'utilise que pour mettre à jour le sien.
  • Un Secret contenant la clé de cluster.
  • Montages de l'hôte : /var/log et les sockets Docker et containerd en lecture seule, et /etc/infrafence en lecture-écriture pour l'enregistrement du nœud.

Le code source du chart se trouve dans le dépôt de l'agent : charts/infrafence-agent. Si ArgoCD ou Flux gère le cluster, désactivez les mises à jour automatiques et faites évoluer le tag de l'image dans votre dépôt :

autoUpdate:
  enabled: false

Chaque version publie aussi infrafence-agent-linux-amd64-k8s et infrafence-agent-linux-arm64-k8s : l'agent compilé avec le client Kubernetes, comme dans l'image du chart, signé comme toutes les versions (Vérifier une version). Ses fonctions Kubernetes ne s'activent que lorsqu'il tourne dans un pod. Pour un seul hôte Docker, voir Sécurité d'un hôte Docker.

Questions

Chaque nœud compte-t-il comme un serveur ?
Oui. Chaque nœud s'enregistre comme un serveur à part entière et est facturé comme tel à partir de Basic. Avec Starter, un seul nœud peut s'enregistrer.
Que se passe-t-il quand un nœud est reconstruit ?
Un nœud qui s'enregistre à nouveau, après une reconstruction ou un /etc/infrafence effacé, garde son serveur dans le tableau de bord et reçoit un nouveau jeton.
Puis-je l'utiliser avec ArgoCD ou Flux ?
Oui. Mettez autoUpdate.enabled à false pour que l'agent ne modifie pas son propre DaemonSet, et mettez à jour le tag de l'image dans votre dépôt.

Essayez gratuitement sur 1 serveur

Starter protège entièrement un serveur, gratuitement et sans carte bancaire.

  1. 01

    Créez un compte gratuit, puis ouvrez Serveurs › Ajouter un serveur pour obtenir le jeton d'installation. Il est valable une heure.

    Créer le jeton
  2. 02

    Puis exécutez ceci en root sur le serveur :

    curl -fsSL https://github.com/infrafence/infrafence-agent/releases/latest/download/install.sh | sudo bash -s -- --token <TOKEN>