Skip to content

Référence des ports

Port 2181 (TCP) – Apache ZooKeeper

Port client par défaut d'Apache ZooKeeper, service distribué de coordination et de configuration.

tcpRegisteredSouvent attaqué

État par défaut

Historiquement, ZooKeeper se lie à toutes les interfaces sans authentification et avec les commandes d'administration « four-letter words » activées ; tout client atteignant 2181 peut donc lire ou modifier l'arbre de znodes.

Attaques courantes

  • « Four-letter words » non authentifiés (mntr, stat, conf, envi) divulguant la configuration et la topologie
  • Lecture et altération des znodes pour perturber ou détourner les clusters dépendants
  • Divulgation d'informations sur les brokers, le cluster et les métadonnées de service
  • Déni de service par suppression ou corruption des données de coordination

Durcissement

  • Lier à une interface privée et limiter 2181 par pare-feu aux hôtes de confiance
  • Activer l'authentification (SASL/Kerberos) et des ACL sur les znodes
  • Restreindre ou désactiver les commandes « four-letter words » via 4lw.commands.whitelist
  • Exiger TLS pour le trafic client et quorum
  • Exécuter sous un utilisateur non privilégié et appliquer les correctifs régulièrement

Commande nmap

nmap -p2181 --script zookeeper-info <target>

Remplacez <target> par l’hôte ou la plage que vous êtes autorisé à scanner.

Que tourne sur le port 2181 ?

Le port 2181 est le port client par défaut d'Apache ZooKeeper, un service de coordination distribué qui stocke des données de configuration, de nommage et de synchronisation dans un arbre hiérarchique de znodes. Des systèmes comme Kafka, HBase et Hadoop s'appuient sur ZooKeeper pour élire des leaders et suivre l'état du cluster, en se connectant à 2181 pour lire et écrire ces métadonnées partagées.

Pourquoi c'est important pour la sécurité

ZooKeeper est la source de vérité des clusters qui en dépendent. Par défaut, il est livré sans authentification ; quiconque atteint 2181 peut donc lire tout l'arbre de znodes, et les commandes d'administration « four-letter words » exposent la configuration et la topologie. L'altération des znodes peut perturber, détourner ou faire tomber chaque service dépendant, ce qui fait d'un ZooKeeper exposé une cible de grande valeur.

Comment c'est attaqué

Les attaquants scannent les ports 2181 ouverts et envoient des « four-letter words » comme mntr, stat, conf et envi pour récolter les détails du cluster sans identifiants. Ils lisent et modifient ensuite les znodes pour perturber la coordination, rediriger les clients dépendants ou supprimer des données afin de provoquer un déni de service. Les métadonnées de brokers et de services divulguées facilitent souvent le pivotement vers Kafka et d'autres backends.

Liste de durcissement

Liez ZooKeeper à une interface privée et limitez 2181 par pare-feu aux hôtes de confiance uniquement. Activez l'authentification (SASL/Kerberos) et définissez des ACL sur les znodes, restreignez ou désactivez les commandes « four-letter words » via 4lw.commands.whitelist, et exigez TLS pour le trafic client et quorum. Exécutez sous un utilisateur non privilégié et appliquez les correctifs régulièrement. Utilisez l'extrait nmap ci-dessus pour vérifier l'exposition sur les hôtes que vous êtes autorisé à tester.

Ports liés

Questions fréquentes

Les commandes « four-letter words » de ZooKeeper sont-elles un risque de sécurité ?
Oui. Des commandes comme mntr, stat, conf et envi renvoient la configuration et la topologie du cluster à tout client non authentifié. Restreignez-les avec 4lw.commands.whitelist et limitez le port 2181 par pare-feu.
ZooKeeper exige-t-il une authentification par défaut ?
Non. Par défaut, tout client atteignant 2181 peut lire et modifier les znodes. Activez l'authentification SASL/Kerberos et définissez des ACL sur les znodes pour protéger l'arbre de données.