F5 BIG-IP ASM-Logs erfassen
In diesem Dokument wird beschrieben, wie Sie F5 BIG-IP Application Security Manager-Logs (ASM) mithilfe von Bindplane in Google Security Operations aufnehmen. Der Parser verarbeitet verschiedene Logformate (Syslog, CSV, CEF usw.) und normalisiert sie in das UDM. Sie verwendet Grok-Muster und Schlüssel/Wert-Extraktionen zum Parsen von Feldern, XML-Filterung für Details zu Verstößen, bedingte Logik für die Ereigniskategorisierung und die Zuordnung von Schweregraden und führt extrahierte Felder in das UDM-Schema ein.
Hinweise
- Prüfen Sie, ob Sie eine Google Security Operations-Instanz haben.
- Achten Sie darauf, dass Sie Windows 2016 oder höher oder einen Linux-Host mit
systemd
verwenden. - Wenn Sie einen Proxy verwenden, müssen die Firewallports geöffnet sein.
- Prüfen Sie, ob Sie privilegierten Zugriff auf F5 BIG-IP ASM haben.
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 die SIEM-Einstellungen > „Profil“ auf.
- Kopieren und speichern Sie die Kunden-ID aus dem Bereich Organisationsdetails.
BindPlane-Agent installieren
Fenstereinbau
- Ö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
Zusätzliche Installationsressourcen
- Weitere Installationsoptionen finden Sie in diesem Installationsleitfaden.
BindPlane-Agent zum Erfassen von Syslog-Daten und Senden an Google SecOps konfigurieren
Greifen Sie auf die Konfigurationsdatei zu:
- Suchen Sie die Datei
config.yaml
. Normalerweise befindet es sich unter Linux im Verzeichnis/etc/bindplane-agent/
oder unter Windows im Installationsverzeichnis. - Öffnen Sie die Datei mit einem Texteditor (z. B.
nano
,vi
oder Notepad).
- Suchen Sie die Datei
Bearbeiten Sie die Datei
config.yaml
so: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: '/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: F5_ASM raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
Ersetzen Sie den Port und die IP-Adresse nach Bedarf in Ihrer Infrastruktur.
Ersetzen Sie
<customer_id>
durch die tatsächliche Kunden-ID.Aktualisieren Sie
/path/to/ingestion-authentication-file.json
auf den Pfad, in dem die Authentifizierungsdatei im Abschnitt Google SecOps-Aufnahmeauthentifizierungsdatei abrufen 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 bindplane-agent
Wenn Sie den Bindplane-Agent unter Windows neu starten möchten, können Sie entweder die Konsole Dienste verwenden oder den folgenden Befehl eingeben:
net stop BindPlaneAgent && net start BindPlaneAgent
Remote-Logging auf F5 BIG-IP ASM konfigurieren
- Melden Sie sich in der ASM Console-Web-UI an.
- Rufen Sie Sicherheit > Ereignisprotokolle > Protokollierungsprofile auf.
- Klicken Sie auf Erstellen.
Geben Sie die folgenden Konfigurationsdetails an:
- Profilname: Geben Sie einen eindeutigen Namen für das Profil ein.
- Wählen Sie Anwendungssicherheit aus.
- Wählen Sie auf dem Tab „Anwendungssicherheit“ die Option Erweitert aus, falls zusätzliche Konfigurationen erforderlich sind.
- Speicherziel: Wählen Sie Remotespeicher aus.
- Logging Format (Protokollierungsformat): Wählen Sie Common Event Format (CEF) aus.
- Löschen Sie den lokalen Speicher.
- Protocol (Protokoll): Wählen Sie UDP oder TCP aus (je nach Konfiguration des Bindplane-Agents).
- Server Addresses (Serveradressen): Geben Sie die IP-Adresse des Bindplane-Agents ein.
- Port: Standardmäßig ausgewählt
514
. Aktualisieren Sie die Porteinstellung entsprechend Ihrer Bindplane-Agent-Konfiguration. - Klicken Sie auf Hinzufügen.
- Wählen Sie Garantieprotokollierung aus.
- Wählen Sie Erkannte Anomalien melden aus.
- Einrichtung: Wählen Sie
LOG_LOCAL6
aus. Optional können Sie die Kategorie der Einrichtung für den erfassten Traffic auswählen. Die möglichen Werte sindLOG_LOCAL0
bisLOG_LOCAL7
.
Klicken Sie auf Fertig.
Logging-Profil mit einer Sicherheitsrichtlinie verknüpfen
- Klicken Sie auf Lokaler Traffic > Virtuelle Server.
- Klicken Sie auf den Namen des virtuellen Servers, der von der Sicherheitsrichtlinie verwendet wird.
- Wählen Sie im Menü Sicherheit die Option Richtlinien aus.
- Achten Sie darauf, dass die Einstellung Application Security Policy (Anwendungssicherheitsrichtlinie) auf Enabled (Aktiviert) gesetzt ist und dass Policy (Richtlinie) auf die gewünschte Sicherheitsrichtlinie festgelegt ist.
- Prüfe, ob die Einstellung Log-Profil auf Aktiviert festgelegt ist.
- Wählen Sie in der Liste Verfügbar das Profil aus, das für die Sicherheitsrichtlinie verwendet werden soll, und verschieben Sie es in die Liste Ausgewählt.
- Klicken Sie auf Aktualisieren.
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
act |
security_result.action |
Wenn act den Wert blocked hat, entspricht das BLOCK. Wenn act passed oder legal ist, wird ALLOW zugeordnet. Wenn act alerted enthält, wird QUARANTINE zugeordnet. Andernfalls wird für das Splunk-Format standardmäßig ALLOW verwendet. |
app |
network.application_protocol |
Wird direkt HTTPS zugeordnet, wenn es im Rohlog vorhanden ist. |
attack_type |
security_result.category_details , metadata.description |
Wird in Verbindung mit anderen Feldern verwendet, um security_result.category zu bestimmen. Wenn keine andere Beschreibung verfügbar ist, wird sie zur Ereignisbeschreibung. Bei Protokollen im Splunk-Format wird damit die Kategorie und die Zusammenfassung bestimmt, wenn violations leer ist. |
client_ip |
principal.ip , principal.asset.ip |
Wird direkt der primären IP-Adresse zugeordnet. |
cn1 |
network.http.response_code |
Wird direkt dem HTTP-Antwortcode zugeordnet. |
cn2 |
security_result.severity_details |
Wird direkt den Schweregradinformationen des Sicherheitsergebnisses zugeordnet. Wird mit response_code verwendet, um festzustellen, ob ein Ereignis eine Benachrichtigung ist. |
column1 |
principal.ip , principal.asset.ip |
Wird der primären IP-Adresse für bestimmte CSV-formatierte Protokolle zugeordnet. |
column2 |
target.port |
Wird dem Zielport für bestimmte CSV-formatierte Protokolle zugeordnet. |
column3 |
target.ip , target.asset.ip |
Entspricht der Ziel-IP für bestimmte Protokolle im CSV-Format. |
column4 |
security_result.severity |
Ordnet die Schweregrade von Sicherheitsergebnissen bestimmten CSV-formatierten Protokollen zu. Die Werte Information , Informational , 0 und 4 entsprechen INFORMATIONAL. Warning , 1 und 3 werden MEDIUM zugeordnet. Error und 2 werden ERROR zugeordnet. Critical , CRITICAL und critical werden CRITICAL zugeordnet. |
column7 |
security_result.detection_fields , network.http.response_code |
Enthält XML-Daten. viol_name in request-violations wird extrahiert und als Erkennungsfelder mit dem Schlüssel Request Violation Name_index hinzugefügt. viol_name in response_violations wird extrahiert und als Erkennungsfelder mit dem Schlüssel Response Violation Name_index hinzugefügt. response_code in response_violations entspricht network.http.response_code . |
column8 |
security_result.rule_name |
Wird bestimmten Protokollen im CSV-Format dem Namen der Regel für das Sicherheitsergebnis zugeordnet. |
cs1 |
security_result.rule_name |
Wird direkt dem Namen der Sicherheitsergebnisregel zugeordnet. |
cs2 |
security_result.summary |
Wird direkt der Zusammenfassung der Sicherheitsergebnisse zugeordnet. |
cs5 |
principal.ip , principal.asset.ip , additional.fields |
Wenn cs5 eine JNDI-LDAP-URL enthält, wird sie als zusätzliches Feld mit dem Schlüssel JNDI_LDAP_URL hinzugefügt. Andernfalls wird jede IP-Adresse, die sich von principal_ip unterscheidet, als zusätzliche primäre IP-Adresse hinzugefügt, wenn sie durch Kommas getrennt ist. |
cs6 |
principal.location.country_or_region |
Wird direkt dem Land oder der Region des Hauptstandorts zugeordnet. |
data |
network.session_id , network.sent_bytes , network.tls.version |
Falls vorhanden, wird der Wert als JSON geparst, um sessionid , bits (zugeordnet zu sent_bytes ) und version zu extrahieren. |
date_time |
metadata.event_timestamp |
Wird nach dem Parsen und Konvertieren in das richtige Format direkt dem Zeitstempel des Ereignisses zugeordnet. |
dest_ip |
target.ip , target.asset.ip |
Wird direkt der Ziel-IP zugeordnet. |
dest_port |
target.port |
Wird direkt dem Zielport zugeordnet. |
dhost |
target.hostname |
Wird direkt dem Ziel-Hostname zugeordnet. |
dpt |
target.port |
Wird direkt dem Zielport zugeordnet. |
dst |
target.ip |
Wird direkt der Ziel-IP zugeordnet. |
dvc |
intermediary.ip |
Wird direkt der Zwischen-IP zugeordnet. |
dvchost |
target.hostname , intermediary.hostname |
Wird direkt dem Ziel-Hostname und dem Zwischen-Hostname zugeordnet. |
errdefs_msgno |
additional.fields |
Als zusätzliches Feld mit dem Schlüssel errdefs_msgno hinzugefügt. |
externalId |
additional.fields |
Als zusätzliches Feld mit dem Schlüssel Support_Id hinzugefügt. |
f5_host |
target.hostname , intermediary.hostname |
Wird direkt dem Ziel-Hostname und dem Zwischen-Hostname zugeordnet. |
geo_info |
principal.location.country_or_region , security_result.detection_fields |
Entspricht dem Land oder der Region des Hauptstandorts. Wird auch als Erkennungsfeld mit dem Schlüssel geo_info hinzugefügt. |
host |
target.hostname |
Wird direkt dem Ziel-Hostname zugeordnet. |
ids |
additional.fields |
Wird als durch Kommas getrennte Liste von Support-IDs geparst. Jede ID wird einem zusätzlichen Feld mit dem Schlüssel supportid hinzugefügt, das eine Liste als Wert hat. |
ip_addr_intelli |
security_result.detection_fields |
Als Erkennungsfeld mit dem Schlüssel ip_addr_intelli hinzugefügt. |
ip_client |
principal.ip |
Wird direkt der primären IP-Adresse zugeordnet. |
ip_route_domain |
principal.ip , principal.asset.ip |
Der IP-Anteil wird extrahiert und der Haupt-IP zugeordnet. |
irule |
security_result.rule_name |
Wird direkt dem Namen der Sicherheitsergebnisregel zugeordnet. |
irule-version |
security_result.rule_version |
Wird direkt der Version der Regel für das Sicherheitsergebnis zugeordnet. |
level |
security_result.severity , security_result.severity_details |
Wird verwendet, um den Schweregrad des Sicherheitsergebnisses zu bestimmen. error oder warning entsprechen HIGH. notice entspricht MITTEL. information oder info entsprechen NIEDRIG. Der Rohwert wird auch severity_details zugeordnet. |
logtime |
metadata.event_timestamp |
Wird nach dem Parsen direkt dem Ereigniszeitstempel zugeordnet. |
management_ip_address , management_ip_address_2 |
intermediary.ip |
Wird direkt der Zwischen-IP zugeordnet. |
method |
network.http.method |
Wird direkt der HTTP-Methode zugeordnet. |
msg |
security_result.summary , metadata.description |
Wird für einige Logformate direkt der Zusammenfassung der Sicherheitsergebnisse zugeordnet. Wenn keine andere Beschreibung verfügbar ist, wird sie zur Ereignisbeschreibung. |
policy_name |
security_result.about.resource.name , security_result.rule_name |
Wird direkt dem Ressourcennamen oder dem Namen der Sicherheitsergebnisse zugeordnet. |
process |
target.application |
Wird direkt der Zielanwendung zugeordnet. |
process_id |
principal.process.pid |
Wird direkt der Hauptprozess-ID zugeordnet. |
protocol |
network.application_protocol , network.ip_protocol , app_protocol |
Wird je nach Logformat direkt dem Anwendungsprotokoll oder dem IP-Protokoll zugeordnet. |
proxy_id |
security_result.rule_id |
Wird direkt der Regel-ID des Sicherheitsergebnisses zugeordnet. |
query_string |
additional.fields |
Als zusätzliches Feld mit dem Schlüssel query_string hinzugefügt. |
referrer |
network.http.referral_url |
Entspricht direkt der HTTP-Referrer-URL. |
req_method |
network.http.method |
Wird direkt der HTTP-Methode zugeordnet. |
req_status |
security_result.action , security_result.action_details , security_result.detection_fields |
Wenn blocked , wird security_result.action BLOCK zugeordnet. Wenn passed oder legal auf ALLOW festgelegt ist. Wenn alerted enthalten ist, wird QUARANTINE zugeordnet. Der Rohwert wird auch action_details zugeordnet und als Erkennungsfeld mit dem Schlüssel req_status hinzugefügt. |
request |
target.url |
Wird direkt der Ziel-URL zugeordnet. |
requestMethod |
network.http.method |
Wird direkt der HTTP-Methode zugeordnet. |
resp |
security_result.detection_fields |
Als Erkennungsfeld mit dem Schlüssel resp hinzugefügt. |
resp_code |
network.http.response_code |
Wird direkt dem HTTP-Antwortcode zugeordnet. |
response |
security_result.summary |
Wird direkt der Zusammenfassung der Sicherheitsergebnisse zugeordnet. |
response_code |
network.http.response_code |
Wird direkt dem HTTP-Antwortcode zugeordnet. |
route_domain |
additional.fields |
Als zusätzliches Feld mit dem Schlüssel route_domain hinzugefügt. |
rt |
metadata.event_timestamp |
Wird nach dem Parsen direkt dem Ereigniszeitstempel zugeordnet. |
sev |
security_result.severity , security_result.severity_details |
Wird verwendet, um den Schweregrad des Sicherheitsergebnisses zu bestimmen. ERROR wird ERROR zugeordnet. Der Rohwert wird auch severity_details zugeordnet. |
severity |
security_result.severity , security_result.severity_details |
Wird verwendet, um den Schweregrad des Sicherheitsergebnisses zu bestimmen. Informational entspricht LOW, Error oder warning entsprechen HIGH, critical entspricht CRITICAL, notice entspricht MEDIUM, information oder info entsprechen LOW. Der Rohwert wird auch severity_details zugeordnet. |
sig_ids |
security_result.rule_id |
Wird direkt der Regel-ID des Sicherheitsergebnisses zugeordnet. |
sig_names |
security_result.rule_name |
Wird direkt dem Namen der Sicherheitsergebnisregel zugeordnet. |
snat_ip |
principal.nat_ip |
Wird direkt der primären NAT-IP-Adresse zugeordnet. |
snat_port |
principal.nat_port |
Wird direkt dem NAT-Port des Hauptkontos zugeordnet. |
src |
principal.ip , principal.asset.ip |
Wird direkt der primären IP-Adresse zugeordnet. |
spt |
principal.port |
Wird direkt dem Hauptport zugeordnet. |
sub_violates |
security_result.about.resource.attribute.labels |
Als Label mit dem Schlüssel Sub Violations zu den Attributen der Sicherheitsergebnisressource hinzugefügt. |
sub_violations |
security_result.about.resource.attribute.labels |
Als Label mit dem Schlüssel Sub Violations zu den Attributen der Sicherheitsergebnisressource hinzugefügt. |
summary |
security_result.summary |
Wird direkt der Zusammenfassung der Sicherheitsergebnisse zugeordnet. |
support_id |
metadata.product_log_id |
Mit support_id - als Präfix und der Produktprotokoll-ID zugeordnet. |
suid |
network.session_id |
Entspricht direkt der Netzwerk-Sitzungs-ID. |
suser |
principal.user.userid |
Wird direkt der Hauptnutzer-ID zugeordnet. |
timestamp |
metadata.event_timestamp |
Wird nach dem Parsen und Konvertieren in das richtige Format direkt dem Zeitstempel des Ereignisses zugeordnet. |
unit_host |
principal.hostname , principal.asset.hostname |
Wird direkt dem primären Hostnamen zugeordnet. |
uri |
principal.url |
Wird direkt der Haupt-URL zugeordnet. |
user_id |
principal.user.userid |
Wird direkt der Hauptnutzer-ID zugeordnet. |
user_name |
principal.user.user_display_name |
Entspricht direkt dem Anzeigenamen des Hauptnutzers. |
username |
principal.user.userid |
Wird direkt der Hauptnutzer-ID zugeordnet. |
useragent |
network.http.user_agent , network.http.parsed_user_agent |
Entspricht direkt dem HTTP-User-Agent. Wird ebenfalls analysiert und dem analysierten User-Agent zugeordnet. |
virtualserver |
network.tls.client.server_name |
Entspricht direkt dem TLS-Client-Servernamen. |
violate_details |
security_result.detection_fields , network.http.response_code |
Enthält XML-Daten. viol_name in request-violations wird extrahiert und als Erkennungsfelder mit dem Schlüssel Request Violation Name_index hinzugefügt. viol_name in response_violations wird extrahiert und als Erkennungsfelder mit dem Schlüssel Response Violation Name_index hinzugefügt. response_code in response_violations entspricht network.http.response_code . |
violate_rate |
security_result.detection_fields |
Als Erkennungsfeld mit dem Schlüssel violate_rate hinzugefügt. |
violation_rating |
security_result.about.resource.attribute.labels |
Als Label mit dem Schlüssel Violations Rating zu den Attributen der Sicherheitsergebnisressource hinzugefügt. |
violations |
security_result.description |
Wird direkt der Beschreibung des Sicherheitsergebnisses zugeordnet. Bei Protokollen im Splunk-Format wird damit die Zusammenfassung ermittelt, sofern vorhanden. |
virus_name |
security_result.threat_name |
Wird direkt dem Namen der Sicherheitsbedrohung zugeordnet. |
vs_name |
network.tls.client.server_name |
Entspricht direkt dem TLS-Client-Servernamen. |
websocket_direction |
network.direction |
Wenn clientToServer , wird INBOUND zugeordnet. Wenn ServerToclient , entspricht das OUTBOUND. |
websocket_message_type |
security_result.detection_fields |
Als Erkennungsfeld mit dem Schlüssel WebsocketMessageType hinzugefügt. |
x_fwd_hdr_val |
principal.ip , principal.asset.ip |
Wird direkt der primären IP-Adresse zugeordnet. |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten