À propos du projet

TurkeyBite est un pipeline open-source d'analyse du contexte des domaines et des hôtes conçu pour analyser le trafic réseau des clients et catégoriser les domaines demandés, couvrant des catégories telles que le contenu pour adultes, les jeux d'argent, le shopping, etc. Il est explicitement conçu comme un outil d'analyse non intrusif qui ne bloque pas les requêtes des clients, de sorte qu'il peut fonctionner aux côtés d'outils de blocage comme Pi-hole si nécessaire, sans impact sur l'expérience réseau de l'utilisateur final. Le pipeline s'appuie sur une pile technologique basée sur Docker comprenant Python 3, Valkey (magasin de données en mémoire compatible Redis), le serveur DNS Bind9, Packetbeat et/ou Browserbeat pour la collecte du trafic, OpenSearch pour l'indexation et le stockage des données, et OpenSearch Dashboards pour la visualisation. Il agrège des listes de classification de domaines et d'hôtes provenant de multiples sources publiques pour enrichir les résultats de l'analyse. En fonctionnement, Packetbeat capture le trafic DNS des serveurs DNS pris en charge (testé en production avec Bind9 et les serveurs DNS Microsoft, et compatible avec tout serveur DNS pouvant exécuter Packetbeat) et envoie les données à Valkey. Browserbeat peut être utilisé pour collecter les données d'historique de navigation des navigateurs pris en charge. Le noyau et les processus de travail de TurkeyBite traitent les données ingérées, les enrichissent avec le contexte de la catégorie de domaine et indexent les résultats dans OpenSearch pour les requêtes et la visualisation via OpenSearch Dashboards. Le déploiement est géré via Docker Compose, avec un script d'installation qui guide les utilisateurs à travers la configuration pour différentes échelles de déploiement (développement, petite échelle, pleine échelle), y compris les paramètres de recherche DNS pour les IP des clients, les options de sortie (OpenSearch et/ou Syslog), et les informations d'identification des services. Le script d'installation génère automatiquement les fichiers de configuration requis (.env, config.yaml, docker-compose.yml) et les fichiers secrets pour l'authentification des services. Pour les déploiements distribués sur plusieurs nœuds, le script d'installation peut être exécuté sur chaque nœud avec la configuration appropriée, et les secrets d'authentification Valkey doivent être copiés sur les nœuds du noyau et des travailleurs si Valkey s'exécute sur un serveur dédié séparé. Pour la configuration de la collecte de données, Packetbeat doit être configuré pour capturer le trafic DNS sur le port 53 et le sortir vers Valkey, en faisant correspondre soigneusement le type de données et les paramètres de clé au mode de pipeline TurkeyBite sélectionné : le mode « consume » utilise des listes Valkey pour une livraison au moins unique avec un suivi persistant des arriérés, tandis que le mode « rq » utilise la publication/abonnement Valkey qui est avec perte par conception. Browserbeat est configuré séparément en suivant ses propres instructions d'installation pour collecter les données d'historique du navigateur. La maintenance de routine comprend la vérification des journaux stockés dans le répertoire vols/logs, et les listes de domaines stockées dans vols/lists sont mises à jour automatiquement selon les intervalles de rafraîchissement configurés par l'utilisateur. Les étapes de dépannage courantes comprennent la vérification des journaux des conteneurs via les journaux docker compose, le redémarrage des services individuels et la vérification de la connectivité entre les conteneurs du réseau Docker.