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.
É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.