ANSIBLE_AWX
In diesem Dokument wird beschrieben, wie Sie Ansible AWX-Logs mit Bindplane in Google Security Operations aufnehmen. Der Parser extrahiert Felder aus JSON-formatierten Ansible AWX-Logs. Dazu wird die JSON-Analyse verwendet, um Logfelder zu extrahieren und diese Werte dann dem Unified Data Model (UDM) zuzuordnen. Außerdem werden Standardwerte für Metadaten für die Ereignisquelle und den Ereignistyp festgelegt.
Hinweis
Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:
- Eine Google SecOps-Instanz.
- Ein Windows 2016-Host oder höher oder ein Linux-Host mit
systemd. - Wenn Sie einen Proxy verwenden, müssen die Firewallports gemäß den Anforderungen des Bindplane-Agents geöffnet sein.
- Privilegierter Zugriff auf die Ansible AWX-Verwaltungskonsole oder -Appliance mit Administratorberechtigungen.
Authentifizierungsdatei für die Aufnahme in Google SecOps abrufen
- Melden Sie sich in der Google SecOps-Konsole an.
- Rufen Sie SIEM-Einstellungen > Collection Agents auf.
- Laden Sie die Authentifizierungsdatei für die Aufnahme herunter. Speichern Sie die Datei sicher auf dem System, auf dem Bindplane installiert wird.
Google SecOps-Kundennummer abrufen
- Melden Sie sich in der Google SecOps-Konsole an.
- Rufen Sie SIEM-Einstellungen > Profil auf.
- Kopieren und speichern Sie die Kundennummer aus dem Bereich Organisationsdetails.
Bindplane-Agent installieren
Installieren Sie den Bindplane-Agent auf Ihrem Windows- oder Linux-Betriebssystem gemäß der folgenden Anleitung.
Windows-Installation
- Öffnen Sie die Eingabeaufforderung oder PowerShell als Administrator.
Führen Sie dazu diesen Befehl aus:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Linux-Installation
- Öffnen Sie ein Terminal mit Root- oder sudo-Berechtigungen.
Führen Sie dazu diesen Befehl aus:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Weitere Installationsressourcen
Weitere Installationsoptionen finden Sie in der Installationsanleitung.
Bindplane-Agent so konfigurieren, dass Syslog aufgenommen und an Google SecOps gesendet wird
- Greifen Sie auf die Konfigurationsdatei zu:
- Suchen Sie die Datei
config.yaml. Normalerweise befindet sie sich unter Linux im Verzeichnis/opt/observiq-otel-collector/und unter Windows im VerzeichnisC:Program FilesobservIQ OpenTelemetry Collector. - Öffnen Sie die Datei mit einem Texteditor, z. B.
nano,vioder Notepad.
- Suchen Sie die Datei
Bearbeiten Sie die Datei
config.yamlso:receivers: udplog: # Using high port to avoid requiring root privileges listen_address: "0.0.0.0:514" exporters: chronicle/awx: endpoint: malachiteingestion-pa.googleapis.com creds_file_path: '/path/to/ingestion-authentication-file.json' customer_id: YOUR_CUSTOMER_ID log_type: 'ANSIBLE_AWX' raw_log_field: body service: pipelines: logs/awx: receivers: - udplog exporters: - chronicle/awx- Ersetzen Sie den Port und die IP-Adresse nach Bedarf in Ihrer Infrastruktur.
- Ersetzen Sie
YOUR_CUSTOMER_IDdurch die tatsächliche Kundennummer. - Aktualisieren Sie
/path/to/ingestion-authentication-file.jsonauf den Pfad, in dem die Authentifizierungsdatei in Schritt 1 gespeichert wurde.
Bindplane-Agent neu starten, um die Änderungen zu übernehmen
Führen Sie den folgenden Befehl aus, um den Bindplane-Agent unter Linux neu zu starten:
sudo systemctl restart observiq-otel-collectorUm den Bindplane-Agent unter Windows neu zu starten, können Sie entweder die Konsole Dienste verwenden oder den folgenden Befehl eingeben:
sc stop observiq-otel-collector && sc start observiq-otel-collector
Externe Protokollierung in Ansible AWX konfigurieren
- Melden Sie sich in der Ansible AWX-Verwaltungskonsole an.
- Klicken Sie in der Navigationsleiste auf Einstellungen.
- Wählen Sie unter den Optionen für System die Option Logging-Einstellungen aus.
- Geben Sie die folgenden Konfigurationsdetails an:
- Logging-Aggregator: Geben Sie die IP-Adresse des Bindplane-Agents ein.
- Port des Logging-Aggregators: Geben Sie die Portnummer des Bindplane-Agents ein, z. B.
514. - Typ des Logging-Aggregators: Wählen Sie in der Liste Sonstige aus.
- Nutzername des Logging-Aggregators: Lassen Sie das Feld leer (nicht für Syslog erforderlich).
- Passwort/Token des Logging-Aggregators: Lassen Sie das Feld leer (nicht für Syslog erforderlich).
- Protokoll des Logging-Aggregators: Wählen Sie UDP aus (empfohlen für Syslog).
- Schwellenwert für die Ebene des Logging-Aggregators: Wählen Sie Info oder die gewünschte Logebene aus.
- Externe Protokollierung aktivieren: Klicken Sie auf die Schaltfläche, um sie auf Ein zu stellen.
- Logger, die Daten an den Logging-Aggregator senden: Wählen Sie die entsprechenden Logtypen aus:
awx: Allgemeine Server-Logsactivity_stream: Aufzeichnung von Änderungen an AWX-Objektenjob_events: Daten des Ansible-Callback-Modulssystem_tracking: Systemdaten und Konfigurationsdaten
- Systemdaten einzeln protokollieren: Stellen Sie die Schaltfläche auf Aus (Standard).
- Klicken Sie auf Speichern , um die Einstellungen zu übernehmen.
- Optional: Klicken Sie auf Testen , um die Verbindung zum Bindplane-Agent zu prüfen.
UDM-Zuordnungstabelle
| Logfeld | UDM-Zuordnung | Logik |
|---|---|---|
agent.ephemeral_id |
observer.labels.value |
Der Wert von agent.ephemeral_id aus dem Rohlog. |
agent.hostname |
observer.hostname |
Der Wert von agent.hostname aus dem Rohlog. |
agent.id |
observer.asset_id |
Verkettung von „filebeat:“ und dem Wert von agent.id aus dem Rohlog. |
agent.name |
observer.user.userid |
Der Wert von agent.name aus dem Rohlog. |
agent.type |
observer.application |
Der Wert von agent.type aus dem Rohlog. |
agent.version |
observer.platform_version |
Der Wert von agent.version aus dem Rohlog. |
cloud.availability_zone |
principal.resource.attribute.labels.value |
Der Wert von cloud.availability_zone aus dem Rohlog. |
cloud.instance.id |
principal.resource.product_object_id |
Der Wert von cloud.instance.id aus dem Rohlog. |
cloud.instance.name |
principal.resource.name |
Der Wert von cloud.instance.name aus dem Rohlog. |
cloud.machine.type |
principal.resource.attribute.labels.value |
Der Wert von cloud.machine.type aus dem Rohlog. |
cloud.provider |
principal.resource.attribute.labels.value |
Der Wert von cloud.provider aus dem Rohlog. |
event1 |
metadata.description |
Der Wert von event1 aus dem Rohlog. Wenn event1 nicht vorhanden ist, wird der Wert von message verwendet. |
event1_data.host |
principal.hostname |
Der Wert von event1_data.host aus dem Rohlog. |
event1_data.remote_addr |
principal.ip |
Die IP-Adresse, die aus event1_data.remote_addr mit einem Grok-Muster extrahiert wurde. |
event1_data.task |
security_result.detection_fields.value |
Der Wert von event1_data.task aus dem Rohlog. |
event1_data.task_path |
principal.process.file.full_path |
Der Wert von event1_data.task_path aus dem Rohlog. |
event1_data.task_uuid |
security_result.detection_fields.value |
Der Wert von event1_data.task_uuid aus dem Rohlog. |
event1_data.uuid |
metadata.product_log_id |
Der Wert von event1_data.uuid aus dem Rohlog. |
event1_display |
security_result.description |
Der Wert von event1_display aus dem Rohlog. |
host |
principal.hostname |
Der Wert von host aus dem Rohlog, der verwendet wird, wenn event1_data.host und host_name nicht vorhanden sind. |
host.architecture |
target.asset.hardware.cpu_platform |
Der Wert von host.architecture aus dem Rohlog. |
host.fqdn |
target.administrative_domain |
Der Wert von host.fqdn aus dem Rohlog. |
host.hostname |
target.hostname |
Der Wert von host.hostname aus dem Rohlog. |
host.id |
target.asset.asset_id |
Verkettung von „Host-ID: “ und dem Wert von host.id aus dem Rohlog. |
host.ip |
target.asset.ip |
Die Werte von host.ip aus dem Rohlog. |
host.mac |
target.mac |
Die Werte von host.mac aus dem Rohlog. |
host.os.codename |
target.asset.attribute.labels.value |
Der Wert von host.os.codename aus dem Rohlog. |
host.os.kernel |
target.platform_patch_level |
Der Wert von host.os.kernel aus dem Rohlog. |
host.os.name |
target.asset.attribute.labels.value |
Der Wert von host.os.name aus dem Rohlog. |
host.os.platform |
target.platform |
Auf „LINUX“ festgelegt, wenn host.os.platform „debian“ ist. |
host.os.version |
target.platform_version |
Der Wert von host.os.version aus dem Rohlog. |
host_name |
principal.hostname |
Der Wert von host_name aus dem Rohlog, der verwendet wird, wenn event1_data.host nicht vorhanden ist. |
input.type |
network.ip_protocol |
Auf „TCP“ festgelegt, wenn input.type „tcp“ ist. |
level |
security_result.severity |
Zuordnung basierend auf dem Wert von level: „DEBUG“, „INFO“ und „AUDIT“ werden „INFORMATIONAL“ zugeordnet; „ERROR“ wird „ERROR“ zugeordnet; „WARNING“ wird „MEDIUM“ zugeordnet. |
level |
security_result.severity_details |
Der Wert von level aus dem Rohlog. |
log.source.address |
principal.ip |
Die IP-Adresse, die aus log.source.address mit einem Grok-Muster extrahiert wurde. |
log.source.address |
principal.port |
Der Port, der aus log.source.address mit einem Grok-Muster extrahiert wurde. |
logger_name |
intermediary.application |
Der Wert von logger_name aus dem Rohlog. |
message |
metadata.description |
Der Wert von message aus dem Rohlog, der als Fallback verwendet wird, wenn event1 nicht vorhanden ist. |
parent_uuid |
security_result.detection_fields.value |
Der Wert von parent_uuid aus dem Rohlog. |
timestamp |
metadata.event_timestamp |
Der Wert von timestamp aus dem Rohlog, der mit dem Datumsfilter geparst wurde. Wird durch die Logik bestimmt: „NETWORK_CONNECTION“, wenn log.source.address und host.ip im JSON vorhanden sind; „STATUS_UPDATE“, wenn principal_hostname oder event1_data.remote_addr vorhanden ist; andernfalls „GENERIC_EVENT“. Fest codiert auf „ANSIBLE_AWX“. Fest codiert auf „ANSIBLE_AWX“. Fest codiert auf „ANSIBLE_AWX“. Fest codiert auf „ephemeral_id“. Je nach zugeordnetem Feld fest codiert auf „machine_type“, „provider“ oder „availability_zone“. Fest codiert auf „VIRTUAL_MACHINE“. Je nach zugeordnetem Feld fest codiert auf „parent_uuid“, „task“ oder „task_uuid“. Je nach zugeordnetem Feld fest codiert auf „codename“ oder „os_name“. |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten