Juniper Junos-Protokolle erfassen
In diesem Dokument wird beschrieben, wie Sie Juniper Junos-Logs mit einem Google Security Operations-Weiterleiter erfassen können.
Weitere Informationen finden Sie unter Datenaufnahme in Google Security Operations.
Mit einem Datenaufnahmelabel wird der Parser identifiziert, der Roh-Logdaten in das strukturierte UDM-Format normalisiert. Die Informationen in diesem Dokument beziehen sich auf den Parser mit dem Datenaufnahmelabel JUNIPER_JUNOS
.
Strukturiertes Logging für ein Juniper Networks SRX-Gerät konfigurieren
Beim strukturierten Protokollformat werden Informationen aus Protokollmeldungen extrahiert. Das Protokollformat entspricht dem Syslog-Protokoll.
- Melden Sie sich über SSH mit der Management-IP-Adresse in der Juniper SRX CLI an.
- Geben Sie
CLI
in die Shell ein und drücken Sie die Eingabetaste. - Geben Sie
configure
ein und drücken Sie die Eingabetaste, um den Konfigurationsmodus des Geräts aufzurufen. - Geben Sie die Kontaktdaten oder den Kundenreferenzpunkt ein.
Führen Sie die folgenden Befehle aus, um die Felder dem Nutzerkonto zuzuordnen:
set system syslog host FORWARDER_IP_ADDRESS any info set system syslog host FORWARDER_IP_ADDRESS structured-data
Ersetzen Sie
FORWARDER_IP_ADDRESS
durch die IP-Adresse des Google Security Operations-Weiterleiters.Verwenden Sie die folgenden Befehle, um das strukturierte Logging für Sicherheitsprotokolle zu aktivieren:
set security log mode stream set security log source-address SRC_IP_ADDRESS set security log stream SYSLOG_STREAM_NAME host FORWARDER_IP_ADDRESS set security log stream SYSLOG_STREAM_NAME format sd-syslog
Ersetzen Sie Folgendes:
SRC_IP_ADDRESS
: die IP-Adresse des Juniper SRX-Geräts.SYSLOG_STREAM_NAME
: Der Name, der dem syslog-Server zugewiesen ist.FORWARDER_IP_ADDRESS
: die IP-Adresse des Google Security Operations-Weiterleiters.
Achten Sie darauf, dass das Logging für alle Sicherheitsrichtlinien aktiviert ist. Führen Sie die folgenden Befehle aus, um das Logging zu aktivieren:
set security policies from-zone <zone-name1> to-zone <zone-name2> policy <policy-name> then log session-close set security policies from-zone <zone-name1> to-zone <zone-name2> policy <policy-name> then log session-init
Konfigurieren Sie den Hostnamen auf dem Gerät mit dem folgenden Befehl:
set system host-name HOSTNAME
Ersetzen Sie
HOSTNAME
durch das zugewiesene Juniper Networks SRX-Gerät.Geben Sie
commit
ein, um die ausgeführten Befehle in der Konfiguration zu speichern.
Google Security Operations-Weiterleiter und syslog für die Aufnahme von Juniper Junos-Logs konfigurieren
- Wählen Sie SIEM-Einstellungen > Weiterleitungen aus.
- Klicken Sie auf Neuen Weiterleiter hinzufügen.
- Geben Sie im Feld Name des Weiterleiters einen eindeutigen Namen ein.
- Klicken Sie auf Senden und dann auf Bestätigen. Der Weiterleiter wird hinzugefügt und das Fenster Aufnehmerkonfiguration hinzufügen wird angezeigt.
- Geben Sie im Feld Name des Collectors einen eindeutigen Namen für den Collector ein.
- Wählen Sie Juniper Junos als Logtyp aus.
- Wählen Sie Syslog als Typ des Collectors aus.
- Konfigurieren Sie die folgenden Eingabeparameter:
- Protocol (Protokoll): Geben Sie das Protokoll als UDP an.
- Address (Adresse): Geben Sie die Ziel-IP-Adresse oder den Hostnamen an, unter der bzw. dem sich der Collector befindet und auf syslog-Daten wartet.
- Port: Gibt den Zielport an, an dem sich der Collector befindet und auf Syslog-Daten wartet.
- Klicken Sie auf Senden.
Weitere Informationen zu Google Security Operations-Weiterleitungen finden Sie in der Dokumentation zu Google Security Operations-Weiterleitungen. Informationen zu den Anforderungen für die einzelnen Weiterleitungstypen finden Sie unter Weiterleitungskonfiguration nach Typ. Wenn beim Erstellen von Weiterleitungen Probleme auftreten, wenden Sie sich an den Google Security Operations-Support.
Referenz für die Feldzuordnung
Dieser Parser extrahiert Felder aus Juniper JUNOS-Syslog-Nachrichten und unterstützt sowohl Schlüssel/Wert- als auch andere Formate. Es verwendet Grok-Muster, um verschiedene Nachrichtenstrukturen abzugleichen, einschließlich Firewall-Logs, SSH-Aktivitäten und Befehlsausführungen, und ordnet die extrahierten Felder dann dem UDM zu. Der Parser verarbeitet auch CEF-formatierte Protokolle mithilfe einer Include-Datei und führt je nach Inhalt der Nachricht bestimmte Aktionen aus, z. B. das Zusammenführen von IP-Adressen und Nutzernamen in die entsprechenden UDM-Felder.
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
DPT |
target.port |
Der Zielport der Netzwerkverbindung, in eine Ganzzahl umgewandelt. |
DST |
target.ip |
Die Ziel-IP-Adresse der Netzwerkverbindung. |
FLAG |
additional.fields{}.key : „FLAG“, additional.fields{}.value.string_value : Wert von FLAG |
Das TCP-Flag, das mit der Netzwerkverbindung verknüpft ist. |
ID |
additional.fields{}.key : „ID“, additional.fields{}.value.string_value : Wert von ID |
Das IP-Identifikationsfeld. |
IN |
additional.fields{}.key : „IN“, additional.fields{}.value.string_value : Wert von IN |
Die eingehende Netzwerkschnittstelle. |
LEN |
additional.fields{}.key : „LEN“, additional.fields{}.value.string_value : Wert von LEN |
Die Länge des IP-Pakets. |
MAC |
principal.mac |
Die MAC-Adresse, die aus dem Feld MAC extrahiert wurde. |
OUT |
additional.fields{}.key : „OUT“, additional.fields{}.value.string_value : Wert von OUT |
Die ausgehende Netzwerkschnittstelle. |
PREC |
additional.fields{}.key : „PREC“, additional.fields{}.value.string_value : Wert von PREC |
Das Feld „Precedence“ (Priorität) im IP-Header. |
PROTO |
network.ip_protocol |
Das IP-Protokoll, das in der Netzwerkverbindung verwendet wird. |
RES |
additional.fields{}.key : „RES“, additional.fields{}.value.string_value : Wert von RES |
Reserviertes Feld im TCP-Header. |
SPT |
principal.port |
Der Quellport der Netzwerkverbindung, in eine Ganzzahl umgewandelt. |
SRC |
principal.ip |
Die Quell-IP-Adresse der Netzwerkverbindung. |
TOS |
additional.fields{}.key : „TOS“, additional.fields{}.value.string_value : Wert von TOS |
Das Feld „Type of Service“ (Diensttyp) im IP-Header. |
TTL |
network.dns.additional.ttl |
Gültigkeitsdauer in einer vorzeichenlosen Ganzzahl. |
URGP |
additional.fields{}.key : „URGP“, additional.fields{}.value.string_value : Wert von URGP |
Urgent-Pointer-Feld im TCP-Header. |
WINDOW |
additional.fields{}.key : „WINDOW_SIZE“, additional.fields{}.value.string_value : Wert von WINDOW |
Die TCP-Fenstergröße. |
action |
security_result.action |
Die von der Firewall ausgeführte Aktion, aus der CEF-Nachricht extrahiert. |
agt |
observer.ip |
Die IP-Adresse des Kundenservicemitarbeiters. |
amac |
target.mac |
Die MAC-Adresse des Ziels, in Kleinbuchstaben umgewandelt und mit Bindestriche durch Doppelpunkte ersetzt. |
app |
target.application |
Die Anwendung, die am Ereignis beteiligt ist. |
artz |
observer.zone |
Die Zeitzone des Betrachters. |
atz |
target.location.country_or_region |
Die Zielzeitzone. |
categoryBehavior |
additional.fields{}.key : „Kategorieverhalten“, additional.fields{}.value.string_value : Wert von categoryBehavior ohne Schrägstriche |
Das Verhalten der Kategorie. |
categoryDeviceGroup |
additional.fields{}.key : „Category Device Group“, additional.fields{}.value.string_value : Wert von categoryDeviceGroup ohne Schrägstriche |
Die Gerätegruppe der Kategorie. |
categoryObject |
additional.fields{}.key : „Category Object“, additional.fields{}.value.string_value : Wert von categoryObject ohne Schrägstriche |
Das Kategorieobjekt. |
categoryOutcome |
additional.fields{}.key : „Kategorieergebnis“, additional.fields{}.value.string_value : Wert von categoryOutcome ohne Schrägstriche |
Das Ergebnis der Kategorie. |
categorySignificance |
additional.fields{}.key : „category Significance“, additional.fields{}.value.string_value : Wert von categorySignificance |
Die Bedeutung der Kategorie. |
command |
target.process.command_line |
Der Befehl wurde ausgeführt. |
cs1Label |
additional.fields{}.key : cs1Label , additional.fields{}.value.string_value : Wert des entsprechenden CEF-Felds |
Label und Wert des benutzerdefinierten Stringfelds 1 aus der CEF-Nachricht. |
cs2Label |
additional.fields{}.key : cs2Label , additional.fields{}.value.string_value : Wert des entsprechenden CEF-Felds |
Label und Wert des benutzerdefinierten Stringfelds 2 aus der CEF-Nachricht. |
cs3Label |
additional.fields{}.key : cs3Label , additional.fields{}.value.string_value : Wert des entsprechenden CEF-Felds |
Label und Wert des benutzerdefinierten Stringfelds 3 aus der CEF-Nachricht. |
cs4Label |
additional.fields{}.key : cs4Label , additional.fields{}.value.string_value : Wert des entsprechenden CEF-Felds |
Label und Wert des benutzerdefinierten Stringfelds 4 aus der CEF-Nachricht. |
cs5Label |
additional.fields{}.key : cs5Label , additional.fields{}.value.string_value : Wert des entsprechenden CEF-Felds |
Label und Wert des benutzerdefinierten Stringfelds 5 aus der CEF-Nachricht. |
cs6Label |
additional.fields{}.key : cs6Label , additional.fields{}.value.string_value : Wert des entsprechenden CEF-Felds |
Label und Wert des benutzerdefinierten Stringfelds 6 aus der CEF-Nachricht. |
dhost |
target.hostname |
Hostname des Ziels. |
deviceCustomString1 |
additional.fields{}.key : cs1Label , additional.fields{}.value.string_value : Wert von deviceCustomString1 |
Benutzerdefinierter Gerätestring 1. |
deviceCustomString2 |
additional.fields{}.key : cs2Label , additional.fields{}.value.string_value : Wert von deviceCustomString2 |
Benutzerdefinierter Gerätestring 2. |
deviceCustomString3 |
additional.fields{}.key : cs3Label , additional.fields{}.value.string_value : Wert von deviceCustomString3 |
Benutzerdefinierter Gerätestring 3. |
deviceCustomString4 |
additional.fields{}.key : cs4Label , additional.fields{}.value.string_value : Wert von deviceCustomString4 |
Benutzerdefinierter Gerätestring 4. |
deviceCustomString5 |
additional.fields{}.key : cs5Label , additional.fields{}.value.string_value : Wert von deviceCustomString5 |
Benutzerdefinierter Gerätestring 5. |
deviceCustomString6 |
additional.fields{}.key : cs6Label , additional.fields{}.value.string_value : Wert von deviceCustomString6 |
Benutzerdefinierter String für das Gerät 6. |
deviceDirection |
network.direction |
Die Richtung des Netzwerkverkehrs. |
deviceEventClassId |
additional.fields{}.key : „eventId“, additional.fields{}.value.string_value : Wert von deviceEventClassId |
Die ID der Geräteereignisklasse. |
deviceFacility |
observer.product.subproduct |
Die Geräteeinrichtung. |
deviceProcessName |
about.process.command_line |
Der Name des Geräteprozesses. |
deviceSeverity |
security_result.severity |
Die Geräteschwere. |
deviceTimeZone |
observer.zone |
Die Zeitzone des Geräts. |
deviceVendor |
metadata.vendor_name |
Der Geräteanbieter. |
deviceVersion |
metadata.product_version |
Die Geräteversion. |
dpt |
target.port |
Der Zielport. |
dst |
target.ip |
Die Ziel-IP-Adresse. |
duser |
target.user.user_display_name |
Der Zielnutzer. |
eventId |
additional.fields{}.key : „eventId“, additional.fields{}.value.string_value : Wert von eventId |
Ereignis-ID. |
event_time |
metadata.event_timestamp |
Der Zeitpunkt, zu dem das Ereignis aufgetreten ist, aus der Nachricht geparst. |
firewall_action |
security_result.action_details |
Die ausgeführte Firewallaktion. |
host |
principal.hostname , intermediary.hostname |
Der Hostname des Geräts, das das Protokoll generiert. Wird in verschiedenen Fällen sowohl für den Auftraggeber als auch für den Vermittler verwendet. |
msg |
security_result.summary |
Die mit dem Ereignis verknüpfte Nachricht, die als Zusammenfassung für das Sicherheitsergebnis verwendet wird. |
name |
metadata.product_event_type |
Der Name des Ereignisses. |
process_name |
additional.fields{}.key : „process_name“, additional.fields{}.value.string_value : Wert von process_name |
Der Name des Prozesses. |
p_id |
target.process.pid |
Die Prozess-ID, in einen String umgewandelt. |
sha256 |
principal.process.file.sha256 |
Der SHA256-Hash einer Datei, der aus den SSH2-Schlüsselinformationen extrahiert wurde. |
shost |
principal.hostname |
Hostname der Quelle. |
source_address |
principal.ip |
Die Quell-IP-Adresse. |
source_port |
principal.port |
Der Quellport, in eine Ganzzahl umgewandelt. |
src |
principal.ip |
Die Quell-IP-Adresse. |
src_ip |
principal.ip |
Die Quell-IP-Adresse. |
src_port |
principal.port |
Der Quellport, in eine Ganzzahl umgewandelt. |
ssh2 |
security_result.detection_fields{}.key : „ssh2“, security_result.detection_fields{}.value : Wert von ssh2 |
Informationen zum SSH2-Schlüssel |
subtype |
metadata.product_event_type |
Der Untertyp des Ereignisses. |
task_summary |
security_result.description |
Die Aufgabenübersicht, die als Beschreibung für das Sicherheitsergebnis verwendet wird. |
timestamp |
metadata.event_timestamp |
Der Zeitstempel des Ereignisses. |
user |
target.user.userid |
Der Nutzer, der mit dem Ereignis verknüpft ist. |
username |
principal.user.userid |
Der mit dem Ereignis verknüpfte Nutzername. |
user_name |
principal.user.userid |
Der Nutzername. |
metadata.vendor_name |
„Juniper-Firewall“ ist hartcodiert. „Juniper-Firewall“ ist hartcodiert. Hartcodiert auf „JUNIPER_JUNOS“. Wird anhand der Parserlogik basierend auf dem Loginhalt bestimmt. Der Standardwert ist „STATUS_UPDATE“, wenn es sich nicht um eine CEF-Nachricht handelt und kein anderer Ereignistyp angegeben ist. Für CEF-Nachrichten auf „NETWORK_HTTP“ festlegen. Wenn kein desc -Feld vorhanden ist, wird dieses Feld mit dem message_description aus der Roh-Lognachricht ausgefüllt. |
Änderungen
2024-05-02
- Verbesserungen:
- Grok-Muster wurden hinzugefügt, um neue SYSLOG + KV-Format-Protokolle zu unterstützen.
2023-10-25
- Verbesserungen:
- Grok-Muster zum Parsen nicht geparster Protokolle hinzugefügt
- „source_port“ wurde auf „principal.port“ zugeordnet.
- „source_address“ wurde zu „principal.ip“ zugeordnet.
- „user_name“ wurde „target.user.userid“ zugeordnet.
- „application_name“ wurde „target.application“ zugeordnet.
- „p_id“ wurde auf „target.process.pid“ zugeordnet.
- Vor der KV-Zuordnung wurde die Prüfung „invalid_pattern“ hinzugefügt.
- Es wurde ein Grok-Muster hinzugefügt, um „security_result.description“ zuzuordnen, wenn „description_present“ auf „falsch“ gesetzt ist.
2023-08-17
- Verbesserungen:
- Grok-Muster zu geparsten und nicht geparsten Protokollen hinzugefügt.
- „msg“ wurde „security_result.summary“ zugeordnet.
- „src_ip“ wurde zu „principal.ip“ zugeordnet.
- „user“ wurde „target.user.userid“ zugeordnet.
- „username“ wurde „principal.user.userid“ zugeordnet.
- „command“ wurde auf „target.process.command_line“ zugeordnet.
- „src_port“ wurde „principal.port“ zugeordnet.
- „ssh2“ wurde „security_result.detection_fields“ zugeordnet.
- „sha256“ wurde auf „principal.process.file.sha256“ zugeordnet.
- „desc“ wurde „sec_result.summary“ zugeordnet.
- „mac-address“ wurde „principal.mac“ zugeordnet.
- „host“ wird „principal.hostname“ zugeordnet, wenn „event_type“ „STATUS_UPDATE“ ist.
2023-01-15
- Verbesserungen:
- Das Grok-Muster wurde geändert, um nicht geparste Protokolle vom Typ „UI_CMDLINE_READ_LINE“, „UI_COMMIT_PROGRESS“ und „UI_CHILD_START“ zu unterstützen.
- „UI_CFG_AUDIT_OTHER“, „UI_LOGIN_EVENT“, „UI_CHILD_STATUS“, „UI_LOGOUT_EVENT“, „UI_LOAD_EVENT“,
- „JTASK_IO_CONNECT_FAILED“, „UI_AUTH_EVENT“, „UI_NETCONF_CMD“, „UI_COMMIT_NO_MASTER_PASSWORD“, „UI_CFG_AUDIT_SET“, „UI_JUNOSCRIPT_CMD“,
- „SNMPD_AUTH_FAILURE“, „UI_CFG_AUDIT_NEW“, „UI_COMMIT“, „LIBJNX_LOGIN_ACCOUNT_LOCKED“, „UI_COMMIT_COMPLETED“,
- "PAM_USER_LOCK_LOGIN_REQUESTS_DENIED", "RTPERF_CPU_USAGE_OK", "RTPERF_CPU_THRESHOLD_EXCEEDED", "LIBJNX_LOGIN_ACCOUNT_UNLOCKED",
- „JSRPD_SET_OTHER_INTF_MON_FAIL“, „JSRPD_SET_SCHED_MON_FAILURE“, „UI_CHILD_WAITPID“, „UI_DBASE_LOGIN_EVENT“.
2022-05-02
- Neuer Standardparser
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten