Raccogli i log del firewall OPNsense

Supportato in:

Questo documento spiega come importare i log del firewall OPNsense in Google Security Operations utilizzando l'agente Bindplane.

OPNsense è una piattaforma di routing e firewall open source che genera messaggi syslog per le corrispondenze delle regole firewall, le connessioni di rete e gli eventi di sistema. Il parser estrae i campi dai messaggi filterlog in formato CSV utilizzando l'analisi grok e CSV e li mappa al modello Unified Data Model (UDM).

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Un'istanza Google SecOps
  • Windows Server 2016 o versioni successive o host Linux con systemd
  • Connettività di rete tra l'agente Bindplane e il firewall OPNsense
  • Se l'agente viene eseguito dietro un proxy, assicurati che le porte del firewall siano aperte in base ai requisiti dell'agente Bindplane
  • Accesso amministrativo all'interfaccia web di OPNsense

Recuperare il file di autenticazione dell'importazione di Google SecOps

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Agenti di raccolta.
  3. Scarica il file di autenticazione dell'acquisizione. Salva il file in modo sicuro sul sistema in cui verrà installato Bindplane.

Recuperare l'ID cliente Google SecOps

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Profilo.
  3. Copia e salva l'ID cliente dalla sezione Dettagli dell'organizzazione.

Installa l'agente Bindplane

Installa l'agente Bindplane sul sistema operativo Windows o Linux seguendo le istruzioni riportate di seguito.

Installazione di Windows

  1. Apri Prompt dei comandi o PowerShell come amministratore.
  2. Esegui questo comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. Attendi il completamento dell'installazione.

  4. Verifica l'installazione eseguendo:

    sc query observiq-otel-collector
    

    Il servizio dovrebbe essere visualizzato come IN ESECUZIONE.

Installazione di Linux

  1. Apri un terminale con privilegi root o sudo.
  2. Esegui questo comando:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. Attendi il completamento dell'installazione.

  4. Verifica l'installazione eseguendo:

    sudo systemctl status observiq-otel-collector
    

    Il servizio dovrebbe essere visualizzato come attivo (in esecuzione).

Risorse aggiuntive per l'installazione

Per ulteriori opzioni di installazione e risoluzione dei problemi, consulta la guida all'installazione dell'agente Bindplane.

Configura l'agente Bindplane per importare syslog e inviarli a Google SecOps

Individua il file di configurazione

  • Linux:

    sudo nano /opt/observiq-otel-collector/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

Modifica il file di configurazione

  • Sostituisci l'intero contenuto di config.yaml con la seguente configurazione:

    receivers:
        udplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/opnsense:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: '<customer_id>'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: OPNSENSE
            raw_log_field: body
    
    service:
        pipelines:
            logs/opnsense_to_chronicle:
                receivers:
                    - udplog
                exporters:
                    - chronicle/opnsense
    

Parametri di configurazione

Sostituisci i seguenti segnaposto:

  • Configurazione del destinatario:

    • listen_address: Indirizzo IP e porta da ascoltare:
      • 0.0.0.0 per ascoltare su tutte le interfacce (consigliato)
      • La porta 514 è la porta syslog standard (richiede l'accesso root su Linux; utilizza 1514 per l'accesso non root)
  • Configurazione dell'esportatore:

    • creds_file_path: Percorso completo del file di autenticazione dell'acquisizione:
      • Linux: /etc/bindplane-agent/ingestion-auth.json
      • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • customer_id: ID cliente copiato dalla console Google SecOps
    • endpoint: URL dell'endpoint regionale:
      • Stati Uniti: malachiteingestion-pa.googleapis.com
      • Europa: europe-malachiteingestion-pa.googleapis.com
      • Asia: asia-southeast1-malachiteingestion-pa.googleapis.com
      • Per l'elenco completo, consulta Endpoint regionali.

Salva il file di configurazione

  • Dopo la modifica, salva il file:
    • Linux: premi Ctrl+O, poi Enter e infine Ctrl+X.
    • Windows: fai clic su File > Salva.

Riavvia l'agente Bindplane per applicare le modifiche

  • Per riavviare l'agente Bindplane in Linux, esegui questo comando:

    sudo systemctl restart observiq-otel-collector
    
    1. Verifica che il servizio sia in esecuzione:

      sudo systemctl status observiq-otel-collector
      
    2. Controlla i log per individuare eventuali errori:

      sudo journalctl -u observiq-otel-collector -f
      
  • Per riavviare l'agente Bindplane in Windows, scegli una delle seguenti opzioni:

    • Prompt dei comandi o PowerShell come amministratore:

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • Console dei servizi:

      1. Premi Win+R, digita services.msc e premi Invio.
      2. Individua observIQ OpenTelemetry Collector.
      3. Fai clic con il tasto destro del mouse e seleziona Riavvia.
      4. Verifica che il servizio sia in esecuzione:

        sc query observiq-otel-collector
        
      5. Controlla i log per individuare eventuali errori:

        type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
        

Aggiungere la configurazione del server syslog a OPNsense

  1. Accedi all'interfaccia web di OPNsense.
  2. Vai a Sistema > Impostazioni > Registrazione.
  3. Nella sezione Logging remoto, abilita Invia log al server syslog remoto selezionando la casella.
  4. Nel campo Server Syslog remoti, inserisci l'indirizzo IP del server syslog, inclusa la porta (ad esempio, 10.10.10.10:514).
  5. Seleziona Local0 come struttura syslog.
  6. Imposta il livello syslog su Avviso.
  7. Fai clic su Salva per applicare le modifiche.

Tabella di mappatura UDM

Campo log Mappatura UDM Logica
column1 security_result.rule_id Mappato direttamente da column1.
column10 additional.fields[].key: "tos"
additional.fields[].value.string_value: Valore di column10
Mappato direttamente da column10, nidificato in additional.fields con la chiave "tos".
column12 additional.fields[].key: "ttl"
additional.fields[].value.string_value: Valore di column12
Mappato direttamente da column12, nidificato in additional.fields con la chiave "ttl".
column13 additional.fields[].key: "Id"
additional.fields[].value.string_value: Valore di column13
Mappato direttamente da column13, nidificato in additional.fields con la chiave "Id".
column14 additional.fields[].key: "offset"
additional.fields[].value.string_value: Valore di column14
Mappato direttamente da column14, nidificato in additional.fields con la chiave "offset".
column15 additional.fields[].key: "flags"
additional.fields[].value.string_value: Valore di column15
Mappato direttamente da column15, nidificato in additional.fields con la chiave "flags".
column17 network.ip_protocol Mappato direttamente da column17 dopo la conversione in maiuscolo.
column18 network.received_bytes Mappato direttamente da column18 dopo la conversione in numero intero senza segno.
column19 principal.ip Mappato direttamente da column19.
column20 target.ip Mappato direttamente da column20.
column21 principal.port (se column17 è TCP o UDP)
additional.fields[].key: "data_length"
additional.fields[].value.string_value: valore estratto (se column17 è ICMP, GRE, ESP o IGMP)
Se column17 è TCP/UDP, viene mappato direttamente da column21 e convertito in numero intero. In caso contrario, il valore "datalength" viene estratto utilizzando grok e inserito in additional.fields con la chiave "data_length".
column22 target.port Mappato direttamente da column22 se column17 è TCP o UDP e convertito in numero intero.
column24 additional.fields[].key: "tcp_flags"
additional.fields[].value.string_value: Valore di column24
Mappato direttamente da column24 se column17 è TCP, nidificato in additional.fields con la chiave "tcp_flags".
column29 additional.fields[].key: "tcp_options"
additional.fields[].value.string_value: Valore di column29
Mappato direttamente da column29 se column17 è TCP, nidificato in additional.fields con la chiave "tcp_options".
column4 additional.fields[].key: "tracker"
additional.fields[].value.string_value: Valore di column4
Mappato direttamente da column4, nidificato in additional.fields con la chiave "tracker".
column5 additional.fields[].key: "interface"
additional.fields[].value.string_value: Valore di column5
Mappato direttamente da column5, nidificato in additional.fields con la chiave "interface".
column6 security_result.rule_type Mappato direttamente da column6.
column7 security_result.action Mappato da column7. Se "block", convertito in "BLOCK" in maiuscolo. Se "pass", imposta "ALLOW".
column8 network.direction Mappato da column8. Se "in", imposta "INBOUND". Se "out", imposta "OUTBOUND".
domain principal.administrative_domain Mappato direttamente da domain estratto da Grok. Impostato su "NETWORK_CONNECTION" se sono presenti sia l'indirizzo IP principale sia quello di destinazione, altrimenti "GENERIC_EVENT". Codificato in modo permanente su "OPNSENSE". Codificato in modo permanente su "OPNSENSE".
message Vari campi Analizzati utilizzando i filtri grok e CSV per estrarre vari campi. Consulta le altre righe per mappature specifiche.
ts metadata.event_timestamp.seconds, timestamp.seconds Analizzato dal campo del messaggio utilizzando grok e poi convertito in un timestamp. Il valore in secondi viene utilizzato per compilare sia metadata.event_timestamp.seconds che timestamp.seconds.
application principal.application Mappato direttamente da application estratto da Grok.
column27 event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
column2 event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
column3 event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
column11 event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
column26 event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
column28 event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
column25 event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
column16 event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
column9 event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche

Log delle modifiche

Visualizza il log delle modifiche per questo parser

Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.