
Kit d'outils de capture et de surveillance DNS passif
Nous explorons une solution SaaS gérée pour dnsmonster ! Aidez à façonner l'avenir de la surveillance DNS passive en partageant vos retours et besoins : Répondez à notre rapide sondage
Table des matières
Framework de surveillance DNS passive construit en Golang.
dnsmonster implémente un renifleur de paquets pour le trafic DNS. Il peut accepter le trafic à partir d'un fichier pcap, d'une interface en direct ou d'un socket dnstap,
et peut être utilisé pour indexer et stocker des centaines de milliers de requêtes DNS par seconde, car il s'est avéré capable d'indexer plus de 200 000 requêtes DNS par seconde sur un ordinateur standard. Il vise à être évolutif, simple et facile à utiliser, et à aider
les équipes de sécurité à comprendre les détails du trafic DNS d'une entreprise. dnsmonster ne cherche pas à suivre les conversations DNS, mais plutôt à indexer les paquets DNS dès leur arrivée. Il ne vise pas non plus à violer
la vie privée des utilisateurs finaux, grâce à la capacité de masquer les adresses IP de couche 3 (IPv4 et IPv6), permettant aux équipes d'effectuer des analyses de tendances sur des données agrégées sans pouvoir retracer les requêtes jusqu'à un individu. Article de blog
Le code antérieur à la version 1.x est considéré comme de qualité bêta et peut subir des changements disruptifs. Veuillez consulter les notes de version pour chaque tag afin de voir la liste des scénarios de rupture entre chaque version, et comment atténuer une éventuelle perte de données.```mermaid graph TD subgraph Input B1["network input"] B2["pcap file"] B3["dnstap socket"] end
subgraph "Process"
C1["Sampling based of ratio"]
C2["Packet Process"]
C3["Dispatcher"]
O11["Output1"]
O12["Domain Skip (optional)"]
O13["Domain Allow (optional)"]
O21["Output2"]
O22["Domain Skip (optional)"]
O23["Domain Allow (optional)"]
O31["Output3"]
O32["Domain Skip (optional)"]
O33["Domain Allow (optional)"]
end
B1 --> Process
B2 --> Process
B3 --> Process
C1 --> C2
C2 --> C3
C3 --> O11
C3 --> O21
C3 --> O31
O11 --> O12 --> O13
O21 --> O22 --> O23
O31 --> O32 --> O33
subgraph Output
Splunk
Syslog
H["ClickHouse"]
Postgres
Kafka
I["JSON File"]
Influx
Elastic
J["stdout"]
Parquet
Sentinel
end
O13 --> H
O23 --> I
O33 --> J
# Fonctionnalités principales
- Capacité à utiliser `afpacket` de Linux et la capture de paquets sans copie.
- Prend en charge BPF
- Capacité à masquer l'adresse IP pour renforcer la confidentialité
- Capacité à définir un ratio d'échantillonnage de prétraitement
- Capacité à avoir une liste de `fqdn` à ignorer pour éviter d'écrire certains domaines/suffixes/préfixes dans le stockage
- Capacité à avoir une liste de domaines autorisés, utilisée pour journaliser l'accès à certains domaines
- Rechargement à chaud des fichiers/URLs de domaines à ignorer et autorisés
- Sortie modulaire avec logique configurable par flux de sortie.
- Politique de conservation automatique des données utilisant l'attribut TTL de ClickHouse
- Tableau de bord Grafana intégré pour la sortie ClickHouse.
- Capacité à être distribué sous forme d'un binaire unique lié statiquement
- Capacité à être configuré à l'aide de variables d'environnement, d'options de ligne de commande ou d'un fichier de configuration
- Capacité à échantillonner les sorties en utilisant la fonctionnalité SAMPLE de ClickHouse
- Capacité à envoyer des métriques en utilisant `prometheus` et `statstd`
- Taux de compression élevé grâce au stockage LZ4 intégré de ClickHouse
- Prend en charge DNS sur TCP, DNS fragmenté (udp/tcp) et IPv6
- Prend en charge [dnstap](https://github.com/dnstap/golang-dnstap) sur socket Unix ou TCP
- intégration SIEM intégrée avec Splunk et Microsoft Sentinel
# Installation
## Linux
La meilleure façon de démarrer avec `dnsmonster` est de télécharger le binaire depuis la section des versions. Le binaire est compilé statiquement contre `musl`, donc il devrait fonctionner prêt à l'emploi pour de nombreuses distributions. Pour le support `afpacket`, vous devez utiliser un noyau 3.x+. Toute distribution Linux moderne (CentOS/RHEL 7+, Ubuntu 14.0.4.2+, Debian 7+) est livrée avec une version 3.x+ donc elle devrait fonctionner sans problème. Si votre distribution ne fonctionne pas avec la version précompilée, veuillez soumettre un problème avec les détails et construire `dnsmonster` manuellement en utilisant cette section [Build Manually](#build-manually).
### Conteneur
Puisque `dnsmonster` utilise la fonctionnalité de capture brute de paquets, le démon Docker/Podman doit accorder la capacité au conteneur```
sudo docker run --rm -it --net=host --cap-add NET_RAW --cap-add NET_ADMIN --name dnsmonster ghcr.io/mosajjal/dnsmonster:latest --devName lo --stdoutOutputType=1