Collecter les journaux Nix Systems Ubuntu Server (système Unix)
Ce document explique comment ingérer des journaux Ubuntu Server (système Unix) dans Google Security Operations à l'aide de Bindplane. L'analyseur ingère les journaux au format syslog et JSON, initialise un large éventail de champs UDM (Unified Data Model) sur des chaînes vides, effectue plusieurs substitutions de chaînes sur le champ message
, puis tente d'analyser le message au format JSON. Si l'analyse JSON échoue, il utilise des modèles grok pour extraire les champs en fonction du contenu message
et event_details.original
, en mappant les champs extraits à l'UDM en fonction du type d'événement et de diverses vérifications conditionnelles, en gérant différents formats et structures de journaux provenant de divers processus et services du système Unix.
Avant de commencer
Assurez-vous de remplir les conditions préalables suivantes :
- Instance Google SecOps
- Si vous exécutez le programme derrière un proxy, les ports du pare-feu sont ouverts.
- Accès privilégié à un serveur RHEL
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
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
. Il se trouve généralement dans le répertoire/etc/bindplane-agent/
sous Linux. - Ouvrez le fichier à l'aide d'un éditeur de texte (par exemple,
nano
ouvi
).
- Recherchez le fichier
Modifiez le fichier
config.yaml
comme suit :receivers: filelog/unix: include: - /var/log/auth.log - /var/log/lastlog - /var/log/btmp - /var/log/wtmp - /var/log/faillog - /var/log/dpkg.log - /var/log/boot.log - /var/log/kern.log - /var/log/syslog start_at: end poll_interval: 5s exporters: chronicle/linux: # Adjust the path to the credentials file you downloaded in Step 1 creds: '/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 log_type: 'NIX_SYSTEM' override_log_type: false raw_log_field: body service: pipelines: logs/linux: receivers: - filelog/linux exporters: [chronicle/linux]
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.
Démarrer l'agent Bindplane et appliquer les modifications
Démarrez l'agent Bindplane :
sudo systemctl start bindplane-agent
Activez le service de collecte observIQ otel :
systemctl enable --now bindplane-agent
Si nécessaire, redémarrez l'agent Bindplane :
sudo systemctl restart bindplane-agent
Table de mappage UDM
Champ de journal | Mappage UDM | Logique |
---|---|---|
AccessControlRuleAction |
security_result.action |
Si AccessControlRuleAction est défini sur Allow , définissez-le sur ALLOW . Si AccessControlRuleAction est défini sur Block , définissez-le sur BLOCK . |
ACPolicy |
security_result.rule_labels |
Clé : ACPolicy , Valeur : ACPolicy |
AccessControlRuleName |
security_result.rule_name |
Mappage direct. |
acct |
event.idm.read_only_udm.target.user.userid |
Mappage direct après suppression des guillemets et des barres obliques inverses. |
addr |
event.idm.read_only_udm.target.ip , event.idm.read_only_udm.target.asset.ip |
Mappage direct si la valeur n'est pas vide, ? ou UNKNOWN . |
ApplicationProtocol |
event.idm.read_only_udm.network.application_protocol |
Mappage direct. |
auid |
event.idm.read_only_udm.additional.fields |
Clé : auid , Valeur : auid |
comm |
event.idm.read_only_udm.target.process.command_line |
Mappage direct. |
command |
event.idm.read_only_udm.target.process.command_line |
Mappage direct après suppression des espaces blancs de début et de fin. |
Computer |
event.idm.read_only_udm.principal.hostname , event.idm.read_only_udm.principal.asset.hostname |
Mappage direct. Si ce champ est vide, utilisez HostName . |
ConnectionID |
security_result.detection_fields |
Clé : Connection ID , Valeur : ConnectionID |
cwd |
event.idm.read_only_udm.target.process.file.full_path |
Mappage direct après suppression des guillemets. |
data |
message |
Utilisé dans les modèles Grok. |
desc |
security_result.description |
Mappage direct. |
description |
event.idm.read_only_udm.metadata.description , security_result.description |
Mappage direct. |
descript |
security_result.description |
Mappage direct après suppression des hachages. |
DeviceUUID |
event.idm.read_only_udm.metadata.product_log_id |
Mappage direct. |
DNSQuery |
event.idm.read_only_udm.additional.fields |
Clé : DNSQuery , Valeur : DNSQuery |
DNSRecordType |
event.idm.read_only_udm.additional.fields |
Clé : DNSRecordType , Valeur : DNSRecordType |
DNSResponseType |
event.idm.read_only_udm.additional.fields |
Clé : DNSResponseType , Valeur : DNSResponseType |
DNS_TTL |
event.idm.read_only_udm.additional.fields |
Clé : DNS_TTL , Valeur : DNS_TTL |
DstIP |
event.idm.read_only_udm.target.ip , event.idm.read_only_udm.target.asset.ip |
Mappage direct. |
DstPort |
event.idm.read_only_udm.target.port |
Mappage direct, converti en entier. |
dvc |
event.idm.read_only_udm.principal.ip , event.idm.read_only_udm.principal.asset.ip , event.idm.read_only_udm.principal.hostname , event.idm.read_only_udm.principal.asset.hostname , event.idm.read_only_udm.intermediary.ip , event.idm.read_only_udm.target.ip , event.idm.read_only_udm.target.asset.ip , event.idm.read_only_udm.target.hostname , event.idm.read_only_udm.target.asset.hostname |
Si l'adresse IP est valide, elle est mappée à l'adresse IP principale/cible. Nom d'hôte, mappé au nom d'hôte principal/cible. Également utilisé pour l'adresse IP intermédiaire si elle est valide. |
EgressInterface |
event.idm.read_only_udm.principal.asset.attribute.labels |
Clé : EgressInterface , Valeur : EgressInterface |
EgressVRF |
event.idm.read_only_udm.principal.asset.attribute.labels |
Clé : EgressVRF , Valeur : EgressVRF |
EgressZone |
event.idm.read_only_udm.target.location.name |
Mappage direct. |
eventType |
event.idm.read_only_udm.metadata.product_event_type , event.idm.read_only_udm.target.application |
Mappage direct. Pour SERVICE_START et SERVICE_STOP , mappé sur target.application , puis effacé. |
EventTime |
@timestamp |
Analysé comme un code temporel. |
exe |
event.idm.read_only_udm.target.process.command_line |
Mappage direct après suppression des guillemets et des barres obliques inverses. |
extended_description |
event.idm.read_only_udm.metadata.description |
Mappage direct après suppression des tirets et des guillemets. |
Facility |
event.idm.read_only_udm.principal.resource.attribute.labels |
Clé : Facility , Valeur : Facility |
filepath |
event.idm.read_only_udm.principal.process.file.full_path |
Mappage direct. |
file_path |
event.idm.read_only_udm.target.file.full_path |
Mappage direct. |
file_path_value |
event.idm.read_only_udm.target.file.full_path |
Mappage direct. |
FirstPacketSecond |
security_result.detection_fields |
Clé : FirstPacketSecond , Valeur : FirstPacketSecond |
from |
event.idm.read_only_udm.network.email.from |
Mappage direct après suppression des chevrons. |
generic_ip |
event.idm.read_only_udm.principal.ip , event.idm.read_only_udm.principal.asset.ip |
Mappage direct si l'adresse IP est valide et n'est pas A256: . |
gid |
event.idm.read_only_udm.target.user.group_identifiers |
Mappage direct. |
grp |
event.idm.read_only_udm.target.group.group_display_name |
Mappage direct après suppression des guillemets et des barres obliques inverses. |
hashing_algo |
security_result.summary |
Mappage direct. |
home |
event.idm.read_only_udm.target.file.full_path |
Mappage direct. |
HostName |
Computer |
Utilisé si Computer est vide. |
HostIP |
event.idm.read_only_udm.principal.ip , event.idm.read_only_udm.principal.asset.ip |
La partie de HostIP avant % est extraite et mappée en tant que validated_ip . |
hostname |
event.idm.read_only_udm.target.hostname , event.idm.read_only_udm.target.asset.hostname , event.idm.read_only_udm.principal.hostname , event.idm.read_only_udm.principal.asset.hostname |
Mappage direct si la valeur n'est pas vide ou ? . |
host_name |
event.idm.read_only_udm.target.hostname , event.idm.read_only_udm.target.asset.hostname |
Mappage direct. |
InitiatorBytes |
event.idm.read_only_udm.network.sent_bytes |
Mappage direct, converti en entier non signé. |
InitiatorPackets |
event.idm.read_only_udm.network.sent_packets |
Mappage direct, converti en entier. |
insertId |
event.idm.read_only_udm.metadata.product_log_id |
Mappage direct. |
InstanceID |
security_result.detection_fields |
Clé : Instance ID , Valeur : InstanceID |
int_dvc |
event.idm.read_only_udm.intermediary.hostname |
Mappage direct. |
ip |
event.idm.read_only_udm.target.ip , event.idm.read_only_udm.target.asset.ip , event.idm.read_only_udm.principal.ip , event.idm.read_only_udm.principal.asset.ip |
Mappage direct. |
ip_protocol |
event.idm.read_only_udm.network.ip_protocol |
Mappage direct. |
laddr |
event.idm.read_only_udm.principal.ip , event.idm.read_only_udm.principal.asset.ip |
Mappage direct si la valeur n'est pas vide ou ? . |
level |
security_result.severity |
Si la valeur est info , la valeur est définie sur INFORMATIONAL . |
log.syslog.facility.name |
event.idm.read_only_udm.target.application |
Mappage direct. |
log.syslog.severity.name |
security_result.severity |
Si la valeur est Emergency , la valeur est définie sur HIGH . |
logName |
logname |
Mappage direct. |
log_description |
security_result.description |
Mappage direct. |
log_level |
security_result.severity |
Si la valeur est error , la valeur est définie sur ERROR . |
log_summary |
security_result.summary |
Mappage direct. |
logger_name |
event.idm.read_only_udm.principal.resource.attribute.labels |
Clé : logger_name , Valeur : logger_name |
log_type |
event.idm.read_only_udm.metadata.log_type |
Codé en dur sur NIX_SYSTEM . |
lport |
event.idm.read_only_udm.principal.port |
Mappage direct, converti en entier. |
MG |
event.idm.read_only_udm.principal.resource.attribute.labels |
Clé : MG , Valeur : MG |
method |
event.idm.read_only_udm.network.http.method |
Mappage direct, converti en majuscules. |
msg1 |
event.idm.read_only_udm.metadata.description , event.idm.read_only_udm.additional.fields , security_result.description |
Analysé à l'aide de modèles Grok. Si event_type est GENERIC_EVENT , il est mappé sur description . |
msg2 |
event.idm.read_only_udm.network.received_bytes , security_result.summary |
Si elle contient des chiffres, elle est convertie en entier non signé et mappée sur received_bytes . Sinon, elle est mappée sur summary . |
NAPPolicy |
security_result.rule_labels |
Clé : NAPPolicy , Valeur : NAPPolicy |
name |
event.idm.read_only_udm.target.process.file.full_path |
Mappage direct après suppression des guillemets. |
outcome |
security_result.action |
Si Succeeded ou contient success , définissez la valeur sur ALLOW . |
p_id |
event.idm.read_only_udm.target.process.pid |
Mappage direct. |
pid |
event.idm.read_only_udm.target.process.pid , event.idm.read_only_udm.principal.process.pid |
Mappage direct. |
principal_hostname |
event.idm.read_only_udm.principal.hostname , event.idm.read_only_udm.principal.asset.hostname |
Mappage direct. |
principal_ip |
event.idm.read_only_udm.principal.ip , event.idm.read_only_udm.principal.asset.ip |
Mappage direct. |
principal_present |
event.idm.read_only_udm.metadata.event_type |
Si true et has_target sont définis sur true , définissez event_type sur NETWORK_UNCATEGORIZED . Si true ou user_present est défini sur true , définissez event_type sur USER_UNCATEGORIZED . |
process |
event.idm.read_only_udm.target.application , event.idm.read_only_udm.metadata.product_event_type |
Mappage direct. Si eventType est vide, il est utilisé comme target.application . |
ProcessID |
event.idm.read_only_udm.principal.process.pid |
Mappage direct, converti en chaîne. |
ProcessName |
event.idm.read_only_udm.principal.resource.attribute.labels |
Clé : ProcessName , Valeur : ProcessName |
prod_eve_type |
event.idm.read_only_udm.metadata.product_event_type |
Mappage direct. |
product_event_type |
event.idm.read_only_udm.metadata.product_event_type |
Mappage direct. |
Protocol |
event.idm.read_only_udm.network.ip_protocol |
Si la valeur correspond à icmp , udp ou tcp (non sensible à la casse), elle est mappée à la valeur majuscule correspondante. |
proto |
event.idm.read_only_udm.network.application_protocol |
Si la valeur est ssh ou ssh2 , elle est définie sur SSH . |
pwd |
event.idm.read_only_udm.target.file.full_path |
Mappage direct. |
reason |
security_result.summary , security_result.description |
Utilisé en combinaison avec action et desc pour créer security_result.description . Également mappé sur security_result.summary . |
relayHostname |
event.idm.read_only_udm.intermediary.hostname |
Mappage direct. |
relayIp |
event.idm.read_only_udm.intermediary.ip |
Mappage direct. |
res |
security_result.summary |
Mappage direct. |
resource.labels.instance_id |
event.idm.read_only_udm.target.resource.product_object_id |
Mappage direct. |
resource.labels.project_id |
event.idm.read_only_udm.target.asset.attribute.cloud.project.id |
Mappage direct. |
resource.labels.zone |
event.idm.read_only_udm.target.asset.attribute.cloud.availability_zone |
Mappage direct. |
resource.type |
event.idm.read_only_udm.target.resource.resource_subtype |
Mappage direct. |
response_code |
event.idm.read_only_udm.network.http.response_code |
Mappage direct, converti en entier. |
ResponderBytes |
event.idm.read_only_udm.network.received_bytes |
Mappage direct, converti en entier non signé. |
ResponderPackets |
event.idm.read_only_udm.network.received_packets |
Mappage direct, converti en entier. |
rhost |
event.idm.read_only_udm.additional.fields |
Clé : rhost , Valeur : rhost |
ruser |
srcUser |
Mappage direct. |
sec_action |
security_result.action |
Mappé en fonction de action ou eventType . |
sec_summary |
security_result.summary |
Mappage direct. |
security_action |
security_result.action |
Mappage direct. |
sent_bytes |
event.idm.read_only_udm.network.sent_bytes |
Mappage direct, converti en entier non signé. |
ses |
event.idm.read_only_udm.network.session_id , event.idm.read_only_udm.network.session_duration |
Si la valeur est numérique, elle est analysée en tant que code temporel UNIX et mappée sur session_duration . Sinon, elle est mappée sur session_id . |
SeverityLevel |
security_result.severity |
Mappé à différents niveaux de gravité en fonction de la valeur (notice/info → INFORMATIONAL, warn → HIGH, error → ERROR, other → UNKNOWN_SEVERITY). |
sessionId |
event.idm.read_only_udm.network.session_id |
Mappage direct. |
size |
event.idm.read_only_udm.network.received_bytes |
Mappage direct, converti en entier non signé. |
source |
event.idm.read_only_udm.principal.hostname , event.idm.read_only_udm.principal.asset.hostname |
Mappage direct après suppression des espaces blancs de début. |
SourceSystem |
event.idm.read_only_udm.principal.resource.attribute.labels , event.idm.read_only_udm.principal.platform |
Clé : SourceSystem , Valeur : SourceSystem . Également mappé sur platform (Linux -> LINUX, Windows -> WINDOWS, Mac/iOS -> MAC). |
SrcIP |
event.idm.read_only_udm.principal.ip , event.idm.read_only_udm.principal.asset.ip |
Mappage direct. |
SrcPort |
event.idm.read_only_udm.principal.port |
Mappage direct, converti en entier. |
srcIp |
event.idm.read_only_udm.principal.ip , event.idm.read_only_udm.principal.asset.ip |
Mappage direct. |
srcPort |
event.idm.read_only_udm.principal.port |
Mappage direct, converti en entier. |
srcUser |
event.idm.read_only_udm.principal.user.userid |
Mappage direct. |
src_user |
event.idm.read_only_udm.principal.user.userid |
Mappage direct. |
src_user_display_name |
event.idm.read_only_udm.principal.user.user_display_name |
Mappage direct. |
status |
security_result.action |
Si la valeur est Deferred , la valeur est définie sur BLOCK . Si la valeur est Sent , la valeur est définie sur ALLOW . |
summary |
security_result.summary |
Mappage direct. |
SyslogMessage |
security_result.description |
Mappage direct. |
targetEmail |
event.idm.read_only_udm.network.email.to |
Mappage direct. |
targetEmailfrom |
event.idm.read_only_udm.network.email.from |
Mappage direct. |
targetHostname |
event.idm.read_only_udm.target.hostname , event.idm.read_only_udm.target.asset.hostname |
Mappage direct. |
target_hostname |
event.idm.read_only_udm.target.hostname , event.idm.read_only_udm.target.asset.hostname |
Mappage direct. |
target_ip |
event.idm.read_only_udm.target.ip , event.idm.read_only_udm.target.asset.ip |
Mappage direct. |
target_mac |
event.idm.read_only_udm.target.mac |
Mappage direct. |
target_uri |
event.idm.read_only_udm.target.url |
Mappage direct. |
TenantId |
event.idm.read_only_udm.principal.user.product_object_id |
Mappage direct. |
terminal |
event.idm.read_only_udm.additional.fields |
Clé : terminal , Valeur : terminal si la valeur n'est pas vide ou ? . |
TimeGenerated |
event.idm.read_only_udm.metadata.collected_timestamp |
Analysé comme un code temporel. |
timestamp |
@timestamp |
Analysé comme un code temporel. |
tls_cipher |
event.idm.read_only_udm.network.tls.cipher |
Mappage direct. |
Type |
event.idm.read_only_udm.principal.resource.attribute.labels |
Clé : Type , Valeur : Type |
uid |
event.idm.read_only_udm.principal.user.userid |
Si la valeur est 0 , la valeur est définie sur root . Sinon, mappage direct. |
uid_2 |
event.idm.read_only_udm.target.user.userid |
Mappage direct si uid est vide. |
unit |
event.idm.read_only_udm.target.application |
Mappage direct. |
url |
event.idm.read_only_udm.target.url |
Mappage direct. |
user |
username |
Mappage direct. |
username |
event.idm.read_only_udm.target.user.userid , event.idm.read_only_udm.principal.user.userid |
Mappage direct. |
user_display_name |
event.idm.read_only_udm.target.user.user_display_name |
Mappage direct. |
user_present |
event.idm.read_only_udm.metadata.event_type |
Si true ou principal_present est défini sur true , définissez event_type sur USER_UNCATEGORIZED . |
_Internal_WorkspaceResourceId |
event.idm.read_only_udm.target.resource.attribute.labels , event.idm.read_only_udm.target.resource.product_object_id |
Clé : _Internal_WorkspaceResourceId , Valeur : _Internal_WorkspaceResourceId . L'ID de l'abonnement est extrait et associé à product_object_id . |
_ItemId |
event.idm.read_only_udm.principal.resource.attribute.labels |
Clé : _ItemId , Valeur : _ItemId |
_ResourceId |
event.idm.read_only_udm.principal.resource.attribute.labels , event.idm.read_only_udm.principal.resource.product_object_id |
Clé : _ResourceId , Valeur : _ResourceId . L'ID de l'abonnement est extrait et associé à product_object_id . |
_timestamp |
@timestamp |
Analysé comme un code temporel. |
_timestamp_tz |
@timestamp |
Analysé comme un code temporel. |
event.idm.read_only_udm.metadata.event_type
: défini sur GENERIC_EVENT
au départ, puis remplacé en fonction de la logique de l'analyseur.
event.idm.read_only_udm.metadata.product_name
: codé en dur sur Unix System
.
event.idm.read_only_udm.extensions.auth.type
: défini sur MACHINE
pour certains types d'événements.
event.idm.read_only_udm.target.asset.attribute.cloud.environment
: défini sur GOOGLE_CLOUD_PLATFORM
pour les journaux d'audit Google Cloud .
event.idm.read_only_udm.target.resource.resource_type
: défini sur VIRTUAL_MACHINE
pour les journaux d'audit Google Cloud .
event.idm.read_only_udm.extensions.auth.mechanism
: définissez la valeur sur USERNAME_PASSWORD
pour les événements de connexion.
has_target_resource
: définie sur true
si resource.labels.instance_id
ou _Internal_WorkspaceResourceId
est présent.
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.