Collecter les journaux du résolveur DNS BlueCat Edge
Ce document explique comment ingérer BlueCat Edge DNS Resolver dans Google Security Operations à l'aide de Bindplane. L'analyseur tente d'abord d'analyser le message d'entrée au format JSON. Si l'opération réussit, elle extrait et structure différents champs dans le schéma UDM (Unified Data Model), en se concentrant particulièrement sur les informations liées au DNS. Si l'analyse JSON échoue, il essaie d'autres méthodes d'analyse, comme grok et les paires clé/valeur, pour extraire les données pertinentes et les mapper au schéma UDM.
Avant de commencer
Assurez-vous de remplir les conditions suivantes :
- Instance Google SecOps
- Windows 2016 ou version ultérieure, ou un hôte Linux avec
systemd
- Si vous exécutez le programme derrière un proxy, les ports du pare-feu sont ouverts.
- Accès privilégié à BlueCat DNS/DHCP
Obtenir le fichier d'authentification d'ingestion Google SecOps
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres du SIEM > Agents de collecte.
- Téléchargez le fichier d'authentification d'ingestion. Enregistrez le fichier de manière sécurisée sur le système sur lequel Bindplane sera installé.
Obtenir l'ID client Google SecOps
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres SIEM> Profil.
- Copiez et enregistrez le numéro client de la section Informations sur l'organisation.
Installer l'agent Bindplane
Installez l'agent Bindplane sur votre système d'exploitation Windows ou Linux en suivant les instructions ci-dessous.
Installation de fenêtres
- Ouvrez l'invite de commandes ou PowerShell en tant qu'administrateur.
Exécutez la commande suivante :
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Installation de Linux
- Ouvrez un terminal avec les droits root ou sudo.
Exécutez la commande suivante :
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Ressources d'installation supplémentaires
Pour plus d'options d'installation, consultez le guide d'installation.
Configurer l'agent BindPlane pour ingérer Syslog et l'envoyer à Google SecOps
- Accédez au fichier de configuration :
- Recherchez le fichier
config.yaml
. En règle générale, il se trouve dans le répertoire/etc/bindplane-agent/
sous Linux ou dans le répertoire d'installation sous Windows. - Ouvrez le fichier à l'aide d'un éditeur de texte (par exemple,
nano
,vi
ou le Bloc-notes).
- Recherchez le fichier
Modifiez le fichier
config.yaml
comme suit :receivers: udplog: # Replace the port and IP address as required listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds_file_path: '/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID from Step 2 customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # Add optional ingestion labels for better organization ingestion_labels: log_type: 'BLUECAT_EDGE' raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
- Remplacez le port et l'adresse IP selon les besoins de votre infrastructure.
- Remplacez
<customer_id>
par le numéro client réel. - Mettez à jour
/path/to/ingestion-authentication-file.json
en indiquant le chemin d'accès où le fichier d'authentification a été enregistré dans la section Obtenir le fichier d'authentification pour l'ingestion Google SecOps.
Redémarrez l'agent Bindplane pour appliquer les modifications.
Pour redémarrer l'agent Bindplane sous Linux, exécutez la commande suivante :
sudo systemctl restart bindplane-agent
Pour redémarrer l'agent Bindplane sous Windows, vous pouvez utiliser la console Services ou saisir la commande suivante :
net stop BindPlaneAgent && net start BindPlaneAgent
Configurer Syslog sur le résolveur BlueCat Edge DNS
- Connectez-vous à l'interface utilisateur Web BDDS.
- Accédez à Configuration > onglet "Serveurs".
- Sélectionnez le nom d'un BDDS pour ouvrir l'onglet Détails du serveur.
- Cliquez sur le menu du nom du serveur> Configuration du service.
- Cliquez sur Type de service> Syslog.
- Fournissez les informations de configuration suivantes :
- Cochez la case Code temporel ISO 8601 pour utiliser le format de code temporel ISO 8601 pour les messages enregistrés localement.
- Serveur : saisissez l'adresse IP de l'agent Bindplane.
- Port : saisissez le numéro de port de l'agent Bindplane.
- Niveau : sélectionnez Informationnel.
- Cochez la case Utiliser le protocole Syslog RFC5 424 pour utiliser le protocole Syslog RFC5 424 pour les messages Syslog.
- Cochez la case Code temporel ISO 8601 pour utiliser le format de code temporel ISO 8601 pour les messages syslog redirigés vers un serveur syslog distant.
- Sous Type de service, sélectionnez DNS, DHCP et Tous les autres services.
- Transport : sélectionnez UDP.
- Cliquez sur Ajouter.
- Cliquez sur Mettre à jour.
Table de mappage UDM
Champ de journal | Mappage UDM | Logique |
---|---|---|
answer.domainName | network.dns.answers.name | Nom de domaine de la section answer de la réponse DNS. La valeur . finale est supprimée. |
answer.recordTypeId | network.dns.answers.type | ID du type d'enregistrement de la section answer de la réponse DNS, converti en entier non signé. |
answer.ttl | network.dns.answers.ttl | Valeur TTL (Time to Live) de la section answer de la réponse DNS, convertie en entier non signé. |
customerId | target.user.userid | Numéro client du journal, représentant l'utilisateur qui a lancé la requête DNS. |
domain.domainName | network.dns.authority.data | Nom de domaine des sections authority ou additional de la réponse DNS. La valeur . finale est supprimée. |
nom d'hôte | principal.hostname | Nom d'hôte extrait de l'en-tête Host dans le journal brut, uniquement si le journal n'est pas au format JSON. |
méthode | network.http.method | Méthode HTTP extraite du journal brut, uniquement si le journal n'est pas au format JSON. |
parentDomain | principal.administrative_domain | Domaine parent du nom DNS interrogé. La valeur . finale est supprimée. |
port | principal.port | Numéro de port extrait de l'en-tête Host dans le journal brut, uniquement si le journal n'est pas au format JSON, converti en entier. |
question.domainName | network.dns.questions.name | Nom de domaine de la section question de la requête DNS. La valeur . finale est supprimée. |
question.questionTypeId | network.dns.questions.type | ID du type de question de la section question de la requête DNS, converti en entier non signé. |
responseData.header.aa | network.dns.authoritative | Indique si la réponse DNS fait autorité. Cette information est extraite de la section responseData . |
responseData.header.id | network.dns.id | ID du message DNS, extrait de la section responseData et converti en entier non signé. |
responseData.header.opcode | network.dns.opcode | Opcode du message DNS, extrait de la section responseData et converti en entier non signé. |
responseData.header.ra | network.dns.recursion_available | Indique si la récursivité est disponible. Cette information est extraite de la section responseData . |
responseData.header.rcode | network.dns.response_code | Code de réponse DNS, extrait de la section responseData et converti en entier non signé. |
responseData.header.rd | network.dns.recursion_desired | Indique si la récursivité est sélectionnée, extraite de la section responseData . |
responseData.header.tc | network.dns.truncated | Indique si le message DNS est tronqué, extrait de la section responseData . |
servicePointId | additional.fields.value.string_value | ID du point de service à partir du journal. |
siteId | additional.fields.value.string_value | ID du site provenant du journal. |
socketProtocol | network.ip_protocol | Protocole réseau utilisé pour la requête DNS (TCP ou UDP). |
sourceAddress | principal.ip | Adresse IP du client DNS. |
sourcePort | principal.port | Numéro de port du client DNS, converti en entier. |
threat.indicators | security_result.category_details | Indicateurs associés à une menace détectée. |
threat.type | security_result.threat_name | Type de menace détectée. |
temps | metadata.event_timestamp.seconds | Horodatage de l'événement DNS, extrait du champ time et converti de millisecondes en secondes. |
User-agent | network.http.user_agent | Chaîne de l'agent utilisateur extraite du journal brut, uniquement si le journal n'est pas au format JSON. |
additional.fields.key | servicePointId , siteId , Content-Type ou Content-Length , selon le contenu du journal brut. |
|
metadata.event_type | Type d'événement. Il est défini sur NETWORK_DNS si une question DNS est présente, sinon sur GENERIC_EVENT . |
|
metadata.log_type | Type de journal, toujours défini sur BLUECAT_EDGE . |
|
network.application_protocol | Protocole d'application, défini sur DNS si une question DNS est présente, sinon défini sur HTTP si une méthode HTTP est extraite, ou laissé vide. |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.