Installer et configurer le redirecteur
Ce document explique comment installer et configurer le redirecteur Google Security Operations sur des systèmes Linux et Windows à l'aide de Docker.
Le redirecteur est un composant logiciel que vous pouvez installer sur une machine ou un appareil, comme un serveur, au sein de votre réseau. Il collecte les données de journaux et les transfère à votre instance Google SecOps.
Vous pouvez utiliser le redirecteur pour envoyer des journaux directement depuis votre environnement vers Google SecOps, sans avoir besoin de buckets cloud ni d'API tierces pour les types de journaux non compatibles. Le transmetteur sert de solution prête à déployer, ce qui élimine le besoin d'intégration manuelle à l'API d'ingestion.
Google SecOps fournit un conteneur Docker pour le déploiement sécurisé du redirecteur. Vous pouvez exécuter et gérer le conteneur Docker sur des machines physiques ou virtuelles.
Configuration requise
Voici quelques recommandations générales. Pour obtenir des recommandations spécifiques à votre système, contactez l'assistance Google SecOps.
Système Linux
Le redirecteur est compatible avec différentes distributions Linux telles que Debian, Ubuntu, Red Hat et Suse. Pour des performances optimales, vous devez utiliser Docker 20.10.21
ou une version ultérieure.
RAM : 1 Go de RAM est requis pour chaque type de données collectées que Google SecOps accepte pour l'ingestion. Par exemple, si vous spécifiez quatre collecteurs différents, vous avez besoin de 4 Go de RAM pour collecter les données pour les quatre.
Processeur : deux processeurs suffisent pour gérer jusqu'à 10 000 événements par seconde (EPS) pour tous les types de données. Si vous prévoyez que votre transitaire gérera plus de 10 000 EPS, allouez quatre à six processeurs.
Disque : 20 Go d'espace disque sont recommandés, quelle que soit la quantité de données traitées par le transmetteur.
Système Windows
Le redirecteur est compatible avec Microsoft Windows Server 2022. Pour des performances optimales, vous devez utiliser la version 20.10.21
ou ultérieure de Docker.
RAM : 1,5 Go de RAM est requis pour chaque type de données collectées que Google SecOps accepte pour l'ingestion. Par exemple, si vous spécifiez quatre collecteurs différents, vous aurez besoin de 6 Go de RAM pour collecter les données pour les quatre.
Processeur : deux processeurs suffisent pour gérer jusqu'à 10 000 événements par seconde (EPS) pour tous les types de données. Si vous prévoyez que votre transitaire gère plus de 10 000 EPS, allouez quatre à six processeurs.
Disque : 20 Go d'espace disque sont recommandés, quelle que soit la quantité de données traitées par le transmetteur.
Avant de commencer
Avant de commencer à implémenter votre transitaire, tenez compte des points suivants.
Plages d'adresses IP utilisées par Google
Lorsque vous configurez le redirecteur, vous devrez peut-être ajuster les paramètres du pare-feu qui impliquent de spécifier des plages d'adresses IP. Les plages d'adresses IP de domaine par défaut utilisées par les API et services Google sont allouées de manière dynamique et changent souvent. Pour en savoir plus, consultez Obtenir les plages d'adresses IP de Google.
Vérifier la configuration du pare-feu
Si votre conteneur de transfert est protégé par des pare-feu ou des proxys authentifiés, vous devrez ouvrir l'accès aux hôtes suivants :
Type de connexion | Destination | Port |
TCP | malachiteingestion-pa.googleapis.com | 443 |
TCP | asia-northeast1-malachiteingestion-pa.googleapis.com | 443 |
TCP | asia-south1-malachiteingestion-pa.googleapis.com | 443 |
TCP | asia-southeast1-malachiteingestion-pa.googleapis.com | 443 |
TCP | australia-southeast1-malachiteingestion-pa.googleapis.com | 443 |
TCP | europe-malachiteingestion-pa.googleapis.com | 443 |
TCP | europe-west2-malachiteingestion-pa.googleapis.com | 443 |
TCP | europe-west3-malachiteingestion-pa.googleapis.com | 443 |
TCP | europe-west6-malachiteingestion-pa.googleapis.com | 443 |
TCP | europe-west9-malachiteingestion-pa.googleapis.com | 443 |
TCP | europe-west12-malachiteingestion-pa.googleapis.com | 443 |
TCP | me-central1-malachiteingestion-pa.googleapis.com | 443 |
TCP | me-central2-malachiteingestion-pa.googleapis.com | 443 |
TCP | me-west1-malachiteingestion-pa.googleapis.com | 443 |
TCP | northamerica-northeast2-malachiteingestion-pa.googleapis.com | 443 |
TCP | southamerica-east1-malachiteingestion-pa.googleapis.com | 443 |
TCP | accounts.google.com | 443 |
TCP | gcr.io | 443 |
TCP | cloud.google.com/artifact-registry | 443 |
TCP | oauth2.googleapis.com | 443 |
TCP | storage.googleapis.com | 443 |
Planifier votre implémentation
Avant de commencer à configurer le transmetteur, planifiez votre implémentation. Cela vous aidera à aligner vos sources de données et vos attributs de configuration sur vos objectifs de sécurité, les capacités de votre infrastructure et vos exigences d'évolutivité.
Déterminer les données à ingérer
Identifiez les sources de données les plus pertinentes pour votre transitaire parmi les options suivantes :
Splunk : idéal si vous utilisez déjà Splunk pour la gestion des journaux.
Syslog : polyvalent pour les journaux système et d'application provenant de différents appareils.
Fichier : flexible pour ingérer n'importe quel fichier journal.
Paquets : offre une visibilité approfondie sur le réseau en capturant le trafic brut.
Kafka : idéal pour l'agrégation de journaux en temps réel et à volume élevé à partir de systèmes distribués.
WebProxy : idéal pour obtenir des insights sur le trafic Web et le comportement des utilisateurs.
Limite
La taille maximale d'une ligne de journal dans les flux de données est de 4 Mo.
Déterminer la configuration
Avant d'installer le transmetteur, déterminez les attributs clés suivants pour assurer une implémentation réussie.
Compression des données
La compression des données ou des journaux réduit la consommation de bande passante du réseau lors du transfert des journaux vers Google SecOps. Toutefois, cela peut entraîner une augmentation de l'utilisation du processeur. L'équilibre optimal entre les économies de bande passante et l'utilisation du processeur dépend de plusieurs facteurs, tels que le type de journal, la compressibilité des données, les ressources de processeur disponibles et les contraintes de bande passante de votre réseau.
Par exemple, les journaux au format texte se compressent généralement bien et peuvent permettre de réaliser des économies de bande passante importantes avec une faible utilisation du processeur. En revanche, les données chiffrées ou binaires peuvent ne pas se compresser efficacement et entraîner une utilisation plus élevée du processeur.
Par défaut, la compression des journaux est désactivée. Évaluez le compromis en fonction de votre environnement spécifique et de la nature de vos données de journaux.
Mise en mémoire tampon sur disque
Il est recommandé d'activer la mise en mémoire tampon sur disque. La mise en mémoire tampon sur disque vous permet de mettre en mémoire tampon les messages en attente sur le disque plutôt que dans la mémoire, ce qui protège contre la perte de données en cas de plantage du redirecteur ou de l'hôte. Toutefois, l'activation de la mise en mémoire tampon sur disque peut avoir un impact sur les performances.
Si la mise en mémoire tampon sur disque est désactivée, le transmetteur alloue 1 Go de mémoire vive pour chaque type de journal (par exemple, par connecteur). La mémoire maximale autorisée pour la mise en mémoire tampon sur disque est de 4 Go.
Filtres d'expressions régulières
Les filtres d'expressions régulières vous permettent de filtrer les journaux en faisant correspondre des modèles aux données brutes des journaux. Les filtres utilisent la syntaxe RE2. Les filtres doivent inclure une expression régulière et, éventuellement, définir un comportement en cas de correspondance.
Libellés arbitraires
Les libellés permettent d'associer des métadonnées personnalisées aux journaux à l'aide de paires clé/valeur. Vous pouvez configurer des libellés pour un transmetteur entier ou dans un collecteur spécifique du transmetteur. Si les deux sont présents, les libellés au niveau du collecteur remplacent ceux au niveau du transmetteur si les clés se chevauchent.
Espaces de noms
Vous pouvez utiliser des libellés d'espace de noms pour identifier les journaux provenant de segments de réseau distincts et résoudre les conflits d'adresses IP qui se chevauchent. Vous pouvez configurer un libellé d'espace de noms pour un transmetteur entier ou dans un collecteur spécifique du transmetteur. Si les deux sont présents, l'espace de noms au niveau du collecteur remplace celui au niveau du transmetteur.
Type de journal
Google SecOps est compatible avec différents types de journaux. Pour obtenir la liste complète, consultez Ensembles de données compatibles.
Options d'équilibrage de charge et de haute disponibilité
L'équilibrage de charge n'est compatible qu'avec le type de collecte syslog.
Le transmetteur peut être déployé dans des environnements où un équilibreur de charge de couche 4 est installé entre la source de données et les instances de transmetteur. Cela vous permet de répartir la collecte de journaux sur plusieurs répartiteurs, ce qui améliore la fiabilité en redirigeant les journaux vers un autre répartiteur en cas d'échec.
Le redirecteur dispose d'un serveur HTTP intégré qui répond aux vérifications de l'état des équilibreurs de charge et empêche la perte de journaux lors du démarrage et de l'arrêt. Vous pouvez configurer le serveur HTTP, l'équilibrage de charge et les options de haute disponibilité pour spécifier les délais avant expiration et les codes d'état des vérifications de l'état. Cette configuration est compatible avec les déploiements basés sur des conteneurs et les équilibreurs de charge.
Paramètre | Description |
---|---|
Délai avant expiration progressif | Durée pendant laquelle les nouvelles connexions sont acceptées après que le redirecteur a renvoyé un état unready en réponse à une vérification de l'état#39;état.
Il s'agit également du temps d'attente entre la réception d'un signal d'arrêt et le début de l'arrêt du serveur lui-même. Cela donne le temps à l'équilibreur de charge de supprimer le redirecteur du pool.Les valeurs valides sont exprimées en secondes. Par exemple, pour spécifier 10 secondes, saisissez 10. . Les valeurs décimales ne sont pas autorisées.Par défaut : 15 secondes |
Délai avant expiration du drainage | Durée pendant laquelle le redirecteur attend que les connexions actives se ferment d'elles-mêmes avant d'être fermées par le serveur. Par exemple, pour spécifier 5 secondes, saisissez 5. . Les valeurs décimales ne sont pas autorisées.Par défaut : 10 secondes |
Port | Numéro de port sur lequel le serveur HTTP écoute les vérifications de l'état de l'équilibreur de charge. La valeur doit être comprise entre 1 024 et 65 535. Par défaut : 8080 |
Adresse IP ou nom d'hôte | Adresse IP ou nom d'hôte pouvant être résolu en adresse IP, que le serveur doit écouter. Par défaut : 0.0.0.0 (système local) |
Délai avant expiration de la lecture | Permet de régler le serveur HTTP. En général, il n'est pas nécessaire de modifier le paramètre par défaut. Durée maximale autorisée pour lire l'intégralité de la requête, à la fois l'en-tête et le corps. Vous pouvez définir à la fois le champ Délai avant expiration de la lecture et le champ Délai avant expiration de la lecture de l'en-tête. Par défaut : 3 secondes |
Délai avant expiration de la lecture de l'en-tête | Permet de régler le serveur HTTP. En général, il n'est pas nécessaire de modifier le paramètre par défaut. Durée maximale autorisée pour lire les en-têtes de requête. Le délai de lecture de la connexion est réinitialisé après la lecture de l'en-tête. Par défaut : 3 secondes |
Délai avant expiration de l'écriture | Permet de régler le serveur HTTP. En général, il n'est pas nécessaire de modifier le paramètre par défaut. Durée maximale autorisée pour envoyer une réponse. Il est réinitialisé lorsqu'un nouvel en-tête de requête est lu. Par défaut : 3 secondes |
Délai d'inactivité | Permet de régler le serveur HTTP. En général, il n'est pas nécessaire de modifier le paramètre par défaut. Durée maximale d'attente de la prochaine requête lorsque les connexions inactives sont activées. Si le champ Délai d'inactivité est défini sur zéro, la valeur du champ Délai de lecture est utilisée. Si les deux sont à zéro, le champ Délai d'attente de l'en-tête de lecture est utilisé. Par défaut : 3 secondes |
Code d'état "Disponible" | Code d'état renvoyé par le transitaire lorsqu'une vérification d'activité est reçue et que le transitaire est disponible. Les planificateurs et orchestrateurs de conteneurs envoient souvent des vérifications d'activité. Par défaut : 204 |
Code d'état "Prêt" | Code d'état renvoyé par le redirecteur lorsqu'il est prêt à accepter le trafic dans l'une des situations suivantes :
|
Code d'état "Non prêt" | Code d'état renvoyé par le transitaire lorsqu'il n'est pas prêt à accepter le trafic. Par défaut : 503 |
Étape 1 : Définissez la configuration du redirecteur
Chaque redirecteur déployé nécessite un fichier de configuration. Un fichier de configuration du transmetteur spécifie les paramètres permettant de transférer les données vers votre instance Google SecOps. Nous vous recommandons de générer un fichier de configuration pour chaque hôte afin de distinguer clairement les collecteurs associés à chacun d'eux.
Google Cloud personnalise ces fichiers de configuration avec des métadonnées spécifiques à chaque instance de transfert. Vous pouvez modifier ces fichiers pour les adapter à vos besoins spécifiques et inclure des informations sur les types de journaux que vous souhaitez ingérer.
Vous pouvez générer un fichier de configuration de redirecteur dans l'interface utilisateur, à l'aide de l'API ou manuellement.
L'UI fournit une interface graphique pour configurer les redirecteurs. Il s'agit de la méthode recommandée pour créer une configuration de redirecteur. Il s'agit du moyen le plus simple de commencer, et il ne nécessite aucune programmation. Pour télécharger le fichier de configuration à l'aide de l'interface utilisateur Google SecOps, consultez Gérer les configurations de transfert via l'UI Google SecOps.
L'API permet de configurer les redirecteurs de manière programmatique. Pour télécharger la configuration du transitaire de manière programmatique, consultez l'API Forwarder Management.
Vous pouvez créer manuellement le fichier de configuration et y ajouter les options de configuration. Nous vous recommandons d'utiliser la méthode de l'interface utilisateur pour générer le fichier de configuration, afin d'assurer l'exactitude et de minimiser les erreurs potentielles. Pour générer le fichier manuellement, consultez Gérer manuellement le fichier de configuration du redirecteur.
Étape 2 : Installez Docker
Cette section explique comment installer Docker sur votre système.
Authentification Docker avec Artifact Registry
Dans le cadre de l'installation de Docker, vous devez authentifier Docker. Vous pouvez authentifier Docker à l'aide de Google Cloud CLI (interface de ligne de commande) ou, si vous ne parvenez pas à installer Google Cloud CLI (interface de ligne de commande), en créant un fichier JSON de compte de service dans la VM.
Méthode 1 : Utiliser l'interface de ligne de commande (CLI) Google Cloud CLI
Exécutez la commande suivante pour authentifier Docker :
gcloud auth configure-docker gcr.io
Méthode 2 : Créez et téléchargez un fichier JSON de compte de service dans la machine virtuelle.
Utilisez cette méthode si vous ne parvenez pas à installer Google Cloud CLI (interface de ligne de commande).
Exécutez la commande suivante pour authentifier Docker :
cat key.json | docker login -u _json_key --password-stdin https://gcr.io
Pour en savoir plus sur les autres méthodes d'authentification Docker, consultez Configurer l'authentification sur Artifact Registry pour Docker.
Système Linux
Docker est Open Source et toute la documentation nécessaire est disponible auprès de la communauté Docker Open Source. Pour obtenir des instructions sur l'installation de Docker, consultez Installer Docker Engine.
Pour vérifier si Docker est correctement installé sur votre système, exécutez la commande suivante (privilèges élevés requis) :
docker ps
La réponse suivante indique que Docker a été correctement installé :
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Système Windows
Démarrez Windows PowerShell avec des droits d'administrateur et vérifiez la connectivité réseau à Google Cloud en suivant ces étapes :
Cliquez sur Démarrer.
Saisissez
PowerShell
, puis effectuez un clic droit sur Windows PowerShell.Cliquez sur Exécuter en tant qu'administrateur.
Exécutez la commande suivante :
C:\> test-netconnection <host> -port <port>
Le résultat de la commande indique que l'état de
TcpTestSucceeded
esttrue
.Exemple :
C:\> test-netconnection malachiteingestion-pa.googleapis.com -port 443 ComputerName : malachiteingestion-pa.googleapis.com RemoteAddress : 198.51.100.1 RemotePort : 443 InterfaceAlias : Ethernet SourceAddress : 203.0.113.1 TcpTestSucceeded : True
Pour installer Docker, procédez comme suit sur votre serveur Windows.
Activez la fonctionnalité de conteneur Microsoft Windows :
Install-WindowsFeature containers -Restart
Exécutez la commande suivante en mode Administrateur PowerShell pour installer Docker CE :
Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/microsoft/Windows-Containers/Main/helpful_tools/Install-DockerCE/install-docker-ce.ps1" -o install-docker-ce.ps1 .\install-docker-ce.ps1
Testez l'interface de ligne de commande Docker en exécutant la commande
docker ps
, qui renvoie la liste des conteneurs en cours d'exécution. Si Docker n'est pas installé correctement, une erreur s'affiche.Pour en savoir plus, consultez Premiers pas : préparer Windows pour les conteneurs.
Pour les déploiements d'entreprise, installez Mirantis Container Runtime, également appelé Docker EE.
Étape 3 : Installez le transfert
Cette section explique comment installer le transmetteur à l'aide d'un conteneur Docker.
Étape 3a : Déplacez les fichiers de configuration vers le répertoire du transmetteur
La première étape du processus d'installation du transfert consiste à placer les fichiers de configuration nécessaires dans le répertoire de transfert désigné.
Système Linux
Placez les fichiers de configuration dans le répertoire du transmetteur en procédant comme suit :
Connectez-vous à l'hôte de transfert Linux à l'aide du terminal.
Remplacez le répertoire par le répertoire d'accueil qui exécute le conteneur Docker.
Créez un répertoire pour stocker les fichiers de configuration du transmetteur.
mkdir /opt/chronicle/'CONFIG'
Vous pouvez remplacer le nom du répertoire,
CONFIG
, par le nom de votre choix. Assurez-vous d'utiliser le même nom de répertoire lorsque vous exécutez la commandedocker run
.Modifiez le répertoire.
cd /opt/chronicle/config
Une fois les fichiers transférés, assurez-vous que les fichiers de configuration se trouvent dans le répertoire
/opt/chronicle/config
.ls -l
Système Windows
Créez un dossier C:\config
et placez-y les fichiers de configuration. Vous pouvez remplacer le nom du dossier, config
, par le nom de votre choix. Assurez-vous d'utiliser le même nom de dossier lorsque vous exécutez la commande docker run
.
Étape 3b : Exécutez le transfert
Une fois les fichiers de configuration placés dans le répertoire du transmetteur désigné, vous pouvez démarrer le transmetteur ou passer à la dernière version du conteneur Google SecOps.
Si vous mettez à niveau le conteneur, nettoyez les exécutions Docker précédentes en exécutant les commandes suivantes.
docker stop 'cfps'
docker rm 'cfps'
Dans l'exemple, le nom du conteneur Docker est cfps
.
Pour démarrer le redirecteur pour la première fois ou pour passer à la dernière version du conteneur Google SecOps, procédez comme suit :
Obtenez la dernière image Docker à partir de Google Cloud :
Système Linux :
docker pull gcr.io/chronicle-container/cf_production_stable
Système Windows :
docker pull gcr.io/chronicle-container/cf_production_stable_windows
Démarrez le transmetteur à partir du conteneur Docker :
Système Linux :
docker run \ --detach \ --name cfps \ --restart=always \ --log-opt max-size=100m \ --log-opt max-file=10 \ --net=host \ -v /opt/chronicle/config:/opt/chronicle/external \ gcr.io/chronicle-container/cf_production_stable -v /var/log/<parser-name>:/opt/chronicle/edr \
Système Windows :
docker run ` --detach ` --name cfps ` --restart=always ` --log-opt max-size=100m ` --log-opt max-file=10 ` -p 0.0.0.0:10515-10520:10515-10520/udp ` -v C:\config\:C:/opt/chronicle/external ` gcr.io/chronicle-container/cf_production_stable_windows
Les options --log-opt
sont disponibles depuis Docker 1.13. Ces options limitent la taille des fichiers journaux du conteneur et doivent être utilisées tant que la version Docker que vous utilisez les prend en charge.
Gérer le transitaire
Les sections suivantes fournissent des conseils sur la gestion de votre redirecteur.
Afficher les journaux du transitaire
Pour afficher les journaux du transitaire, exécutez la commande suivante :
docker logs cfps
Pour afficher le chemin d'accès au fichier dans lequel les journaux sont stockés, exécutez la commande suivante :
docker inspect --format='{{.LogPath}}' CONTAINER_NAME
Pour afficher les journaux en cours d'exécution, exécutez la commande suivante :
docker logs cfps -f
Pour stocker les journaux dans un fichier, exécutez la commande suivante :
docker logs cfps &> logs.txt
Désinstaller le redirecteur
Les commandes Docker suivantes vous aident à arrêter, désinstaller ou supprimer le transmetteur.
Pour arrêter ou désinstaller le conteneur de transfert, exécutez la commande suivante :
docker stop cfps
Pour supprimer le conteneur de transfert, exécutez la commande suivante :
docker rm cfps
Mettre à jour le transitaire
Le transitaire se compose de deux composants, chacun avec un processus de mise à jour comme suit :
Bundle Forwarder : ce composant est mis à jour automatiquement, ce qui élimine la nécessité de redémarrer.
Image Docker du transmetteur : les mises à jour de ce composant sont effectuées manuellement. Vous devrez arrêter l'instance de transfert actuelle et en démarrer une autre, comme décrit à l'étape 3b.
Guides d'ingestion de l'agent de transfert pour des ensembles de données spécifiques
Pour savoir comment un ensemble de données spécifique est ingéré à l'aide de répartiteurs, consultez les ressources suivantes :
- Installer Carbon Black Event Forwarder
- Collecter les journaux de pare-feu Cisco ASA
- Collecter les journaux Corelight Sensor
- Collecter les journaux Fluentd
- Collecter les journaux d'audit Linux et les journaux système Unix
- Collecter les données Microsoft Windows AD
- Collecter les données DHCP Microsoft Windows
- Collecter des données DNS Microsoft Windows
- Collecter les données d'événements Microsoft Windows
- Collecter les données Sysmon de Microsoft Windows
- Collecter les journaux osquery
- Collecter les journaux OSSEC
- Collecter les journaux de pare-feu Palo Alto Networks
- Collecter les journaux Splunk CIM
- Collecter les journaux Zeek
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.