Forwarder Google Security Operations per Linux

Questo documento descrive come installare e configurare il servizio di forwarding su Linux. Per installare il servizio di inoltro su Windows, vedi Forwarder di Windows.

Il forwarding viene utilizzato per inviare i log dall'ambiente del cliente a Google Security Operations in esecuzione in un'istanza Compute Engine. Viene utilizzato quando i clienti vogliono inviare i log direttamente Google Security Operations e non intendono utilizzare i bucket cloud per importare i dati, né utilizzare logtype non ha un'importazione nativa tramite API di terze parti. Il mittente può essere usata come soluzione pronta per il deployment, invece di incorporare manualmente di importazione delle immagini.

Puoi installare il forwarding su diverse distribuzioni Linux, tra cui Debian, Ubuntu, Red Hat e Suse. Google Cloud fornisce il software utilizzando container Docker. Puoi eseguire e gestire il container Docker in una una macchina fisica o virtuale che esegue Linux.

Requisiti di sistema

Di seguito sono riportati alcuni consigli di carattere generale. Per consigli specifici per i tuoi di sistema, contatta l'assistenza di Google Security Operations.

  • RAM: 1 GB per ogni tipo di dati raccolti (raccoglitore) accettato da Google Security Operations per l'importazione. Ad esempio, se hai specificato 4 diversi raccoglitori, Occorrono 4 GB di RAM per raccogliere i dati per tutti e quattro i raccoglitori.

  • CPU: due CPU sono sufficienti per gestire meno di 10.000 eventi al secondo (EPS) (totale per tutti i tipi di dati). Se si prevede di inoltrare più di 10.000 EPS, eseguire il provisioning di 4-6 CPU.

  • Disco: 100 MB di spazio su disco sono sufficienti, indipendentemente dalla quantità di dati Handle per l'inoltro di Google Security Operations. Se devi eseguire il buffering dei messaggi in backlog su disco anziché su memoria, vedi Buffering del disco. Google Security Operations buffer di inoltro nella memoria per impostazione predefinita.

Intervalli di indirizzi IP di Google

Potresti dover aprire l'intervallo di indirizzi IP quando imposti una configurazione del forwarding, ad esempio del firewall. Google non può fornire un elenco specifico di indirizzi IP. Tuttavia, puoi ottenere intervalli di indirizzi IP di Google.

Verifica la configurazione del firewall

Eventuali firewall o proxy autenticati tra il container di forwarding di Google Security Operations e internet richiedono regole per aprire l'accesso ai seguenti host:

Tipo di connessione Destinazione Port (Porta)
TCP malachiteingestion-pa.googleapis.com 443
TCP asia-northeast1-malachiteingestion-pa.googleapis.com 443
TCP asia-south1-malachiteingestion-pa.googleapis.com 443
TCP asia-southeast1-malachiteingestion-pa.googleapis.com 443
TCP australia-southeast1-malachiteingestion-pa.googleapis.com 443
TCP europe-malachiteingestion-pa.googleapis.com 443
TCP europe-west2-malachiteingestion-pa.googleapis.com 443
TCP europe-west3-malachiteingestion-pa.googleapis.com 443
TCP europe-west6-malachiteingestion-pa.googleapis.com 443
TCP europe-west12-malachiteingestion-pa.googleapis.com 443
TCP me-central1-malachiteingestion-pa.googleapis.com 443
TCP me-central2-malachiteingestion-pa.googleapis.com 443
TCP me-west1-malachiteingestion-pa.googleapis.com 443
TCP northamerica-northeast2-malachiteingestion-pa.googleapis.com 443
TCP accounts.google.com 443
TCP gcr.io 443
TCP oauth2.googleapis.com 443
TCP storage.googleapis.com 443

Personalizzare i file di configurazione

Google Cloud personalizza i file di configurazione per l'istanza di forwarding con come mostrato nella sezione di output. Puoi scaricare il file di configurazione in base ai tuoi requisiti e includi informazioni su i tipi di log da importare nei raccoglitori . Per ulteriori informazioni sulle impostazioni di configurazione, consulta l'articolo Informazioni di riferimento sulle impostazioni di configurazione.

Configura il forwarding Linux

Per configurare il forwarding Linux tramite l'interfaccia utente, vedi Gestire le configurazioni del forwarding tramite l'interfaccia utente di Google SecOps.

Per configurare manualmente il forwarding Linux, segui questi passaggi:

  1. Crea una copia del modello di file di configurazione fornito con il software.

  2. Scarica il file di configurazione attraverso l'interfaccia utente.

  3. Salva i due file nella stessa directory utilizzando la seguente convenzione di denominazione:

    FORWARDER_NAME.conf: utilizza questo file per definire le impostazioni di configurazione relative all'importazione dei log.

    FORWARDER_NAME_auth.conf: utilizza questo file per definire e credenziali di autorizzazione.

  4. Modifica i file in modo da includere la configurazione per l'istanza di inoltro. Utilizza gli esempi forniti in questo documento come riferimento.

  5. Assicurati che esista una voce per ogni input nel FORWARDER_NAME_auth.conf anche se l'input non contiene dettagli di autenticazione corrispondenti. Questa operazione è necessaria per mappare correttamente i dati.

Eventuali modifiche apportate al file di configurazione verranno applicate automaticamente dal mittente entro 5 minuti.

Esempio di configurazione

Il seguente esempio di codice mostra il formato dei file di configurazione per un spedizioniere. Per i dettagli sulle impostazioni per ogni tipo di importazione come Splunk o Syslog, consulta Raccolta di dati.

Il file FORWARDER_NAME.conf

output:
  url: malachiteingestion-pa.googleapis.com:443
  identity:
    identity:
    collector_id: COLLECTOR_ID \
    customer_id: CUSTOMER_ID \

collectors:
  - syslog:
      common:
        enabled: true
        data_type: "WINDOWS_DHCP"
        data_hint:
        batch_n_seconds: 10
        batch_n_bytes: 1048576
      tcp_address: 0.0.0.0:10514
      udp_address: 0.0.0.0:10514
      connection_timeout_sec: 60
      tcp_buffer_size: 524288
  - syslog:
      common:
        enabled: true
        data_type: "WINDOWS_DNS"
        data_hint:
        batch_n_seconds: 10
        batch_n_bytes: 1048576
      tcp_address: 0.0.0.0:10515
      connection_timeout_sec: 60
      tcp_buffer_size: 524288

Il file FORWARDER_NAME_auth.conf

output:
  identity:
    secret_key: |
      {
        "type": "service_account",
        "project_id": "PROJECT_ID" \,
        "private_key_id": "PRIVATE_KEY_ID" \,
        "private_key": "-----BEGIN PRIVATE KEY-----\\"PRIVATE_KEY" \n-----END PRIVATE KEY-----\n",
        "client_email": "CLIENT_EMAIL" \,
        "client_id": "CLIENT_ID" \,
        "auth_uri": "https://accounts.google.com/o/oauth2/auth",
        "token_uri": "https://oauth2.googleapis.com/token",
        "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
        "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/example-account-1%40example-account.iam.gserviceaccount.com"
      }

collectors:
  - syslog:
  - syslog:
      certificate: "../forwarder/inputs/testdata/localhost.pem"
      certificate_key: "../forwarder/inputs/testdata/localhost.key"

Questi due file system consentono di archiviare le credenziali di autenticazione in un per una maggiore sicurezza. Puoi archiviare il file FORWARDER_NAME.conf in un un repository di controllo della versione o qualsiasi sistema aperto di gestione delle configurazioni. Puoi memorizzare FORWARDER_NAME_auth.conf direttamente nella macchina fisica o virtuale che esegue il forwarding.

Configurazione di esempio (file singolo)

output:
  url: malachiteingestion-pa.googleapis.com:443
  identity:
    identity:
    collector_id: "COLLECTOR_ID" \
    customer_id: "CUSTOMER_ID" \
    secret_key: |
      {
        "type": "service_account",
        "project_id": "PROJECT_ID" \,
        "private_key_id": "PRIVATE_KEY_ID" \,
        "private_key": "-----BEGIN PRIVATE KEY-----\ "PRIVATE_KEY" \n-----END PRIVATE KEY-----\n",
        "client_email": "CLIENT_EMAIL" \,
        "client_id": "CLIENT_ID" \,
        "auth_uri": "https://accounts.google.com/o/oauth2/auth",
        "token_uri": "https://oauth2.googleapis.com/token",
        "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
        "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/malachite-test-1%40malachite-test.iam.gserviceaccount.com"
      }

collectors:
  - syslog:
      common:
        enabled: true
        data_type: "WINDOWS_DHCP"
        data_hint:
        batch_n_seconds: 10
        batch_n_bytes: 1048576
      tcp_address: 0.0.0.0:10514
      udp_address: 0.0.0.0:10514
      connection_timeout_sec: 60
      tcp_buffer_size: 524288
  - syslog:
      common:
        enabled: true
        data_type: "WINDOWS_DNS"
        data_hint:
        batch_n_seconds: 10
        batch_n_bytes: 1048576
      tcp_address: 0.0.0.0:10515
      connection_timeout_sec: 60
      certificate: "../forwarder/inputs/testdata/localhost.pem"
      certificate_key: "../forwarder/inputs/testdata/localhost.key"
      tcp_buffer_size: 524288

Se utilizzi l'unico file di configurazione e vuoi passare ai due file procedi nel seguente modo:

  1. Crea una copia della configurazione esistente.
  2. Salva un file come file FORWARDER_NAME.conf ed elimina le credenziali di autorizzazione dal file.
  3. Salva l'altro file come file FORWARDER_NAME_auth.conf ed elimina tutti i dati non di autorizzazione dal file. Utilizza i file di configurazione di esempio forniti in questa guida come riferimento.
  4. Assicurati di seguire la convenzione di denominazione e le altre linee guida menzionate nella sezione Personalizzare i file di configurazione.

Installa Docker

L'installazione di Docker dipende dall'ambiente host. Puoi installare Docker su diversi sistemi operativi host. Google Cloud fornisce una documentazione limitata per aiutarti a installare Docker su alcune delle distribuzioni Linux più popolari. Tuttavia, Docker è open source e tutta la documentazione necessaria è già disponibile. Per istruzioni sull'installazione di Docker, consulta la documentazione di Docker.

Una volta installato Docker sul sistema, il processo di installazione del forwarding di Google Security Operations è simile a qualsiasi tipo di distribuzione Linux.

Per verificare se Docker è installato correttamente sul tuo sistema, esegui questo comando (privilegi elevati):

   docker ps
  

La seguente risposta indica che Docker è stato installato correttamente:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

Comandi Docker utili

  • Puoi raccogliere ulteriori informazioni sull'installazione di Docker utilizzando il seguente comando:

    docker info
    
  • Il servizio Docker potrebbe essere disabilitato per impostazione predefinita. Per verificare se è disattivata: esegui questo comando:

    systemctl is-enabled docker
    
  • Per abilitare il servizio Docker e avviarlo immediatamente, esegui una delle seguenti operazioni :

    sudo systemctl enable --now docker
    
    sudo systemctl enable /usr/lib/systemd/system/docker.service
    

    Output:

    Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /lib/systemd/system/docker.service
    
  • Quando avvii un forwarding, esegui questo comando per impostare il servizio di inoltro per il riavvio automatico:

    sudo docker run --restart=always `IMAGE_NAME`
    

    IMAGE_NAME è il nome dell'immagine di inoltro.

  • Per controllare lo stato e i dettagli del servizio Docker, esegui questo comando:

    sudo systemctl status docker
    

    Output:

    ● docker.service - Docker Application Container Engine
        Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
        Active: active (running) since Sat 2020-07-18 11:14:05 UTC; 15s ago
    TriggeredBy: ● docker.socket
          Docs: https://docs.docker.com
      Main PID: 263 (dockerd)
          Tasks: 20
        Memory: 100.4M
        CGroup: /system.slice/docker.service
                └─263 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
    Jul 18 11:14:05 swarm-kraken dockerd[263]: time="2020-07-18T11:14:05.713787002Z" level=info msg="API listen on /run/docker.sock"
    Jul 18 11:14:05 swarm-kraken systemd[1]: Started Docker Application Container Engine
    

    In caso di problemi con Docker, il team di assistenza di Google Security Operations può richiedere di questo comando per facilitare il debug del problema.

Installa il forwarding su Linux

Questa sezione descrive come installare Google Security Operations Forwarder utilizzando un container Docker su un sistema Linux.

Passaggio 1: Scarica, trasferisci e installa i file di configurazione dell'inoltro

Google Security Operations fornisce file di configurazione del sistema di inoltro specifici per il tuo sistema operativo (Linux o Windows). Puoi scaricare il file di configurazione in base ai tuoi requisiti. Dopo aver completato i passaggi seguenti, trasferisci i file di configurazione dal laptop alla directory /opt/chronicle/config dell'inoltro all'interno della home directory dell'utente.

  1. Connettiti all'host del forwarding Linux tramite terminale.

  2. Crea un nuovo utente sull'host del forwarding Linux.

      adduser USERNAME
      passwd USERNAME
      usermod -aG wheel USERNAME
    

  3. Passa alla directory home del nuovo utente che esegue Docker containerizzato.

  4. Crea una directory in cui archiviare i file di configurazione dell'inoltro di Google Security Operations:

      mkdir /opt/chronicle/config
    

  5. Cambia directory.

      cd /opt/chronicle/config
    

  6. Una volta trasferiti i file, assicurati che si trovino nella directory /opt/chronicle/config:

      ls -l
    

Passaggio 2: Esegui il forwarding all'interno del container Docker

Puoi utilizzare le seguenti procedure per avviare lo strumento di inoltro di Google Security Operations per la prima volta ed eseguire l'upgrade all'ultima versione Container Google Security Operations:

Le opzioni --log-opt sono disponibili a partire da Docker 1,13. Queste opzioni limitano le dimensioni dei file di log dei container solo se sono supportati dalla tua versione di Docker.

  1. Se stai eseguendo l'upgrade, inizia eliminando le esecuzioni precedenti di Docker. Nella Nell'esempio seguente, il nome del container Docker è cfps. Ottieni l'immagine Docker più recente di Google Cloud con docker pull come mostrato di seguito.

    docker stop cfps
    
    docker rm cfps
    
  2. Recupera l'immagine Docker più recente da Google Cloud:

    docker pull gcr.io/chronicle-container/cf_production_stable
    
  3. Avvia il forwarding di Google Security Operations dal container Docker:

    docker run \
    --detach \
    --name cfps \
    --restart=always \
    --log-opt max-size=100m \
    --log-opt max-file=10 \
    --net=host \
    -v /opt/chronicle/config:/opt/chronicle/external \
    gcr.io/chronicle-container/cf_production_stable
    

Visualizza log di forwarding

Per visualizzare i log del forwarding di Google Security Operations, esegui questo comando:

  sudo docker logs cfps

Per visualizzare il percorso del file in cui sono archiviati i log, esegui questo comando:

docker inspect --format='{{.LogPath}}' CONTAINER_NAME
 

Per visualizzare i log in esecuzione, esegui questo comando:

  sudo docker logs cfps -f

Per archiviare i log in un file, esegui questo comando:

  sudo docker logs cfps &> logs.txt

Disinstalla lo strumento di inoltro

I seguenti comandi Docker ti consentono di arrestare, disinstallare o rimuovere il forwarding di Google Security Operations.

Per interrompere o disinstallare il container di inoltro:

    docker stop cfps
  

Per rimuovere il contenitore di inoltro:

    docker rm cfps
  

Aggiorna lo strumento di inoltro

Lo strumento per l'inoltro di Google Security Operations è composto da due parti e l'upgrade è il seguente:

  • Pacchetto forwarding: viene aggiornato automaticamente e non è necessario il riavvio.

  • Immagine Docker del forwarding: viene aggiornata manualmente dopo l'arresto del forwarding esistente e l'avvio di una nuova istanza come indicata nel Passaggio 2.

Raccogliere i dati

Le sezioni seguenti aiutano a configurare l'inoltro di Google Security Operations per l'importazione di diversi tipi di dati, ovvero inoltrato all'istanza Google Security Operations.

Raccogli dati Splunk

Puoi configurare lo strumento di inoltro di Google Security Operations in modo che inoltri i dati di Splunk a Google Security Operations. Google Cloud configura il forwarding di Google Security Operations con le seguenti informazioni per inoltrare i dati da Splunk:

  • URL dell'API REST Splunk (ad esempio, https://10.0.113.15:8089).

  • Query Splunk per generare dati per ciascuno dei tipi di dati richiesti (ad esempio, index=dns).

FORWARDER_NAME.conf
output:
collectors:
  - splunk:
      common:
        enabled: true
        data_type: WINDOWS_DNS
        data_hint: "#fields ts      uid     id.orig_h       id.orig_p       id.resp_h         id.resp_p       proto   trans_id        query   qclass  qclass_name"
        batch_n_seconds: 10
        batch_n_bytes: 819200
      url: https://127.0.0.1:8089
      is_ignore_cert: true
      minimum_window_size: 10s
      maximum_window_size: 30s
      query_string: search index=* sourcetype=dns
      query_mode: realtime
  • Rendi disponibili le credenziali del tuo account Splunk per Google Security Operations spedizioniere. Puoi farlo creando un file creds.txt.

Per usare un file creds.txt:

  1. Crea un file locale per le tue credenziali di Splunk e assegnagli il nome creds.txt.

  2. Inserisci il tuo nome utente nella prima riga e la password nella seconda riga:

    cat creds.txt
    
    myusername
    mypassword
    
  3. Per utilizzare il servizio di inoltro di Google Security Operations per accedere a uno Splunk copia il file creds.txt nella directory di configurazione (lo stesso in cui si trovano i file di configurazione). Ad esempio:

    cp creds.txt /opt/chronicle/config/creds.txt
    
  4. Verifica che il file creds.txt si trovi nella posizione corretta:

    ls /opt/chronicle/config
    

Raccogli i dati di syslog

Il forwarding di Google Security Operations può funzionare come server Syslog. Puoi configurare qualsiasi appliance o server che supporta l'invio di dati syslog tramite TCP o UDP connessione per inoltrare i propri dati al forwarding di Google Security Operations. Puoi controllare gli esatti dati inviati dall'appliance o dal server Forwarder di Google Security Operations. L'inoltro di Google Security Operations può quindi inoltrare i dati a Google Security Operations.

Il file di configurazione FORWARDER_NAME.conf (fornito da Google Cloud) specifica quali porte monitorare per ciascun tipo dati inoltrati (ad esempio, porta 10514). Per impostazione predefinita, Google Security Operations il server di forwarding accetta connessioni TCP e UDP.

Configura rsyslog

Per configurare rsyslog, devi specificare una destinazione per ogni porta (ad esempio, ciascun tipo di dati). Consulta la documentazione del sistema per la sintassi corretta. La i seguenti esempi illustrano la configurazione della destinazione rsyslog:

  • Traffico dei log TCP: dns.* @@192.168.0.12:10514

  • Traffico dei log UDP: dns.* @192.168.0.12:10514

Abilita TLS per le configurazioni syslog

Puoi abilitare TLS per la connessione Syslog a Google Security Operations spedizioniere. Nel file di configurazione dell'inoltro di Google Security Operations (FORWARDER_NAME.conf), specifica la tua località il certificato e la chiave del certificato generati, come mostrato nell'esempio seguente:

certificato "/opt/chronicle/external/certs/client_generated_cert.pem"
certificate_key "/opt/chronicle/external/certs/client_generated_cert.key"

In base all'esempio mostrato, modifica lo strumento di inoltro di Google Security Operations di configurazione (FORWARDER_NAME.conf) nel seguente modo:

  collectors:
- syslog:
    common:
      enabled: true
      data_type: WINDOWS_DNS
      data_hint:
      batch_n_seconds: 10
      batch_n_bytes: 1048576
    tcp_address: 0.0.0.0:10515
    tcp_buffer_size: 65536
    connection_timeout_sec: 60
    certificate: "/opt/chronicle/external/certs/client_generated_cert.pem"
    certificate_key: "/opt/chronicle/external/certs/client_generated_cert.key"
    minimum_tls_version: "TLSv1_3"

Alcuni punti importanti da ricordare:

  • Puoi configurare la dimensione del buffer TCP. Dimensione predefinita del buffer TCP è di 64 kB.

  • Il valore predefinito e consigliato per connection_timeout è 60 secondi. La connessione TCP viene terminata se rimane inattiva per un periodo di tempo specificato.

  • La versione TLS minima viene verificata rispetto alla versione TLS del richiesta di input. La versione TLS della richiesta di input deve essere superiore a la versione TLS minima. La versione TLS minima deve essere una delle i seguenti valori: TLSv1_0, TLSv1_1, TLSv1_2, TLSv1_3.

Puoi creare una directory certs sotto la directory di configurazione e archiviare del certificato.

Raccogli i dati dei file

Un raccoglitore di file è progettato per recuperare i log da un file. Il file dovrebbe essere associate al container Docker.

Utilizza questa opzione se vuoi caricare manualmente i log da un singolo file di log. Questo può essere utilizzato per eseguire il backfill dei log per un determinato file di log.

Avvia il forwarding di Google Security Operations dal container Docker:

  docker run \
    --detach \
    --name cfps \
    --log-opt max-size=100m \
    --log-opt max-file=10 \
    --net=host \
    -v /opt/chronicle/config:/opt/chronicle/external \
    -v /var/log/crowdstrike/falconhostclient:/opt/chronicle/edr \
     gcr.io/chronicle-container/cf_production_stable

Questo comando di esecuzione Docker è fondamentale per mappare il volume di carico al container.

In base a questo esempio, devi modificare lo strumento di inoltro di Google Security Operations configurazione (FORWARDER_NAME.conf file) come segue. Il file sample.txt deve essere presente nella /var/log/crowdstrike/falconhostclient cartella.

 collectors:
  - file:
       common:
         enabled: true
         data_type: CS_EDR
         data_hint:
         batch_n_seconds: 10
         batch_n_bytes: 1048576
       file_path: /opt/chronicle/edr/sample.txt
       filter:

Configurazioni di flag

skip_seek_to_end (bool): questo flag è impostato su false per impostazione predefinita e il file invia solo nuove righe di log come input. Se viene impostato su true, righe di log precedenti da inviare di nuovo durante i riavvii dell'inoltro. Questo fa sì che log duplicati. L'impostazione di questo flag su true è utile in alcuni (ad esempio durante le interruzioni), perché il riavvio del server di inoltro invia mancano di nuovo le righe di log.

poll (bool): il raccoglitore di file utilizza la libreria Tail per verificare la presenza di modifiche in del file system. Se imposti questo flag su true, la libreria Tail utilizza i sondaggi anziché il metodo di notifica predefinito.

Raccogli i dati dei pacchetti

Il forwarding di Google Security Operations può acquisire pacchetti direttamente da una rete utilizzando libcap su Linux. Per ulteriori informazioni su libcap, consulta libcap - Pagina del manuale di Linux.

I pacchetti vengono acquisiti e inviati a Google Security Operations anziché le voci di log. L'acquisizione dei pacchetti viene gestita da un a riga di comando. Per abilitare l'acquisizione dei pacchetti per il tuo sistema, contatta assistenza Google Security Operations.

Google Cloud configura l'inoltro di Google Security Operations con la Berkeley Espressione filtro pacchetti (BPF) utilizzata durante l'acquisizione dei pacchetti (ad esempio, porta 53) e non localhost). Per ulteriori informazioni, consulta Filtri di pacchetto Berkeley.

Raccogli dati dall'argomento Kafka

Puoi importare i dati dagli argomenti Kafka esattamente come da syslog. La i gruppi di consumer vengono sfruttati per consentirti di implementare fino a tre forwardinger eseguire il pull dei dati dallo stesso argomento Kafka. Per ulteriori informazioni, consulta Kafka.

Per ulteriori informazioni sui gruppi di consumer Kafka, consulta quanto segue: https://docs.confluent.io/platform/current/clients/consumer.html

Configurazione di esempio: input Kafka

La seguente configurazione dell'inoltro mostra come impostare l'utente di inoltro per l'importazione dagli argomenti Kafka.

Il file FORWARDER_NAME.conf

collectors:
- kafka:
      common:
        batch_n_bytes: 1048576
        batch_n_seconds: 10
        data_hint: null
        data_type: NIX_SYSTEM
        enabled: true
      topic: example-topic
      group_id: chronicle-forwarder
      timeout: 60s
      brokers: ["broker-1:9092", "broker-2:9093"]
      tls:
        insecureSkipVerify: true
        certificate: "/path/to/cert.pem"
        certificate_key: "/path/to/cert.key"
- syslog:
      common:
        batch_n_bytes: 1048576
        batch_n_seconds: 10
        data_hint: null
        data_type: WINEVTLOG
        enabled: true
      tcp_address: 0.0.0.0:30001
      connection_timeout_sec: 60

Il file FORWARDER_NAME_auth.conf

collectors:
- kafka:
      username: user
      password: password
- syslog:

Raccogli dati WebProxy

L'inoltro di Google Security Operations può acquisire i dati WebProxy direttamente da una rete utilizzando libcap su Linux. Per ulteriori informazioni su libcap, vedi libcap - Pagina del manuale di Linux. Per attivare l'acquisizione dei dati di WebProxy per il tuo sistema, contatta Assistenza di Google Security Operations.

Modifica la configurazione dell'inoltro di Google Security Operations (file FORWARDER_NAME.conf) come segue:

- webproxy:
      common:
        enabled : true
        data_type: <Your LogType>
        batch_n_seconds: 10
        batch_n_bytes: 1048576
      interface: any
      bpf: tcp and dst port 80

Personalizza configurazioni

Nella tabella seguente sono elencati i parametri importanti utilizzati nel file di configurazione del server di inoltro.

Parametro Descrizione
data_type Il tipo di dati di log che il raccoglitore può raccogliere ed elaborare.
metadati Metadati, che eseguono l'override dei metadati globali.
max_file_buffer_bytes Numero massimo di byte che possono essere accumulati nel disco o nel buffer dei file. Il valore predefinito è 1073741824, ovvero 1 GB.
max_memory_buffer_bytes Numero massimo di byte che possono essere accumulati nel buffer di memoria. La il valore predefinito è 1073741824, ovvero 1 GB.
write_to_disk_dir_path Il percorso da utilizzare per il buffer del file o del disco.
write_to_disk_buffer_enabled Se true, viene utilizzato il buffer del disco al posto del buffer di memoria. Il valore predefinito è false.
batch_n_bytes Numero massimo di byte che possono essere accumulati dal raccoglitore dopo che vengono raggruppati in batch. Il valore predefinito è 1048576, ovvero 1 MB
batch_n_seconds Il numero di secondi dopo i quali i dati raccolti dal raccoglitore vengono raggruppati. Il valore predefinito è 11 secondi.
data_hint Formato dei dati che il raccoglitore può ricevere (di solito l'intestazione del file di log che descrive il formato).

Per un elenco completo dei parametri utilizzati nel file di configurazione, vedi Campi di configurazione dello strumento di forwarding e Campi di configurazione del raccoglitore.

Attiva/disattiva la compressione dei dati

La compressione dei log riduce il consumo di larghezza di banda di rete durante il trasferimento dei log su Google Security Operations. Tuttavia, la compressione potrebbe causare un aumento dell'utilizzo della CPU. Il compromesso tra l'utilizzo della CPU e la larghezza di banda dipende da molti fattori, tra cui: tipo di dati di log, la comprimibilità di tali dati, la disponibilità di CPU cicli sull'host che esegue il forwarding e la necessità di ridurre il consumo della larghezza di banda.

Ad esempio, i log basati su testo si comprimono bene e possono fornire una larghezza di banda significativa di risparmio con un utilizzo ridotto della CPU. Tuttavia, i payload crittografati dei pacchetti non elaborati si comprimono bene e comportano un maggiore utilizzo della CPU.

Per impostazione predefinita, la compressione dei log è disattivata. L'attivazione della compressione dei log potrebbe per ridurre il consumo di larghezza di banda. Tuttavia, l'abilitazione della compressione dei log potrebbe aumenta l'utilizzo della CPU. Tieni presente il compromesso.

Per attivare la compressione dei log, imposta il campo compression su true nel file di configurazione del forwarding di Google Security Operations come mostrato nell'esempio che segue:

Il file FORWARDER_NAME.conf

output:
  compression: true
    url: malachiteingestion-pa.googleapis.com:443
    identity:
      identity:
      collector_id: 10479925-878c-11e7-9421-10604b7cb5c1
      customer_id: ebdc4bb9-878b-11e7-8455-10604b7cb5c1
...

Il file FORWARDER_NAME_auth.conf

output:
  identity:
    secret_key: |
    {
     "type": "service_account",
...
    }

Configura il buffering del disco

Il buffering del disco consente di eseguire il buffer dei messaggi in backlog sul disco, la memoria. I messaggi in backlog possono essere archiviati in caso di arresto anomalo o gli arresti anomali dell'host sottostante. Tieni presente che l'attivazione del buffering del disco può influire delle prestazioni.

Se il buffering del disco è disabilitato, il server di inoltro utilizza 1 GB di memoria (RAM) per ogni tipo di log (ad esempio, per connettore). Specifica il valore max_memory_buffer_bytes di configurazione del deployment. La memoria massima consentita è di 4 GB.

Puoi configurare il buffering della memoria automatico in modo da utilizzare un buffer condiviso dinamicamente raccoglitori, che gestisce meglio i picchi di traffico. Per abilitare la funzionalità buffer condiviso, aggiungi quanto segue nella configurazione del forwarding:

auto_buffer:
  enabled: true
  target_memory_utilization: 80

Se il buffering del disco automatico è abilitato, target_memory_utilization non è definito, utilizza un valore predefinito di 70.

Se esegui il forwarding utilizzando Docker, Google consiglia di montare un separato da quello di configurazione ai fini dell'isolamento. Inoltre, ogni input deve essere isolato con la propria directory o volume per evitare conflitti.

Configurazione di esempio: buffering del disco

La configurazione seguente include la sintassi per abilitare il buffering del disco:

collectors:
- syslog:
    common:
      write_to_disk_buffer_enabled: true
      # /buffers/NIX_SYSTEM is part of the external mounted volume for the
forwarder
      write_to_disk_dir_path: /buffers/NIX_SYSTEM
      max_file_buffer_bytes: 1073741824
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: NIX_SYSTEM
      enabled: true
    tcp_address: 0.0.0.0:30000
    connection_timeout_sec: 60
- syslog:
    common:
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: WINEVTLOG
      enabled: true
    tcp_address: 0.0.0.0:30001
    connection_timeout_sec: 60

Imposta filtri per espressioni regolari

I filtri basati su espressioni regolari consentono di filtrare i log in base alle espressioni regolari con i log non elaborati.

I filtri utilizzano la sintassi RE2 descritta di seguito: https://github.com/google/re2/wiki/Syntax

I filtri devono includere un'espressione regolare e, facoltativamente, definire un comportamento in caso di corrispondenza. Il comportamento predefinito per una corrispondenza è il blocco (puoi configurarla esplicitamente come blocco).

In alternativa, puoi specificare i filtri con il comportamento allow. Se specifichi un filtro allow, il forwarding blocca tutti i log che non corrispondono ad almeno uno Filtro allow.

È possibile definire un numero arbitrario di filtri. Blocca filtri applicati precedenza su allow filtro.

Quando vengono definiti, i filtri devono avere un nome. I nomi delle persone attive i filtri verranno segnalati a Google Security Operations tramite metriche di integrità del forwarding. Filtri definiti alla base della configurazione vengono uniti ai filtri definiti alla a livello di raccoglitore. I filtri a livello di raccoglitore hanno la precedenza nei casi di nomi in conflitto. Se non è definito nessun filtro nella directory principale o nel raccoglitore livello, il comportamento è consentire tutti.

Configurazione di esempio: filtri basati su espressioni regolari

Nella seguente configurazione del forwarding, WINEVTLOG registra che non corrispondono al filtro principale (allow_filter) sono bloccati. Data la regolarità , il filtro autorizza solo i log con priorità comprese tra 0 e 99. Tuttavia, tutti i log NIX_SYSTEM contenenti "foo" o "bar" sono bloccati, nonostante allow_filter. perché i filtri utilizzano un operatore logico OR. Tutti vengono elaborati fino all'attivazione di un filtro.

regex_filters:
  allow_filter:
    regexp: ^<[1-9][0-9]?$>.*$
    behavior_on_match: allow
collectors:
- syslog:
    common:
      regex_filters:
        block_filter_1:
          regexp: ^.*foo.*$
          behavior_on_match: block
        block_filter_2:
          regexp: ^.*bar.*$
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: NIX_SYSTEM
      enabled: true
    tcp_address: 0.0.0.0:30000
    connection_timeout_sec: 60
- syslog:
    common:
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: WINEVTLOG
      enabled: true
    tcp_address: 0.0.0.0:30001
    connection_timeout_sec: 60

Configura etichette arbitrarie

Le etichette vengono utilizzate per collegare metadati arbitrari ai log utilizzando coppie chiave-valore. Le etichette possono essere configurate per un intero server di inoltro o all'interno di un raccoglitore specifico di uno spedizioniere. Se vengono fornite entrambe le opzioni, le etichette vengono unite a quelle del raccoglitore tasti che hanno la precedenza su quelli del mittente se si sovrappongono.

Configurazione di esempio: etichette arbitrarie

Nella seguente configurazione del forwarding, "foo=bar" e "meow=mix" chiave e le coppie di valori sono entrambe collegate ai log WINEVTLOG e a "foo=baz" e "meow=mix" le coppie chiave-valore sono collegate ai log NIX_SYSTEM.

metadata:
  labels:
    foo: bar
    meow: mix
collectors:
syslog:
    common:
      metadata:
        labels:
          foo: baz
          meow: mix
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: NIX_SYSTEM
      enabled: true
    tcp_address: 0.0.0.0:30000
    connection_timeout_sec: 60
syslog:
    common:
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: WINEVTLOG
      enabled: true
    tcp_address: 0.0.0.0:30001
    connection_timeout_sec: 60

Configura spazi dei nomi

Utilizza le etichette dello spazio dei nomi per identificare i log di segmenti di rete distinti o eliminare i conflitti di indirizzi IP sovrapposti. Puoi configurare un'etichetta dello spazio dei nomi per l'intero spedizioniere o all'interno di un raccoglitore specifico dello stesso. Se entrambi sono incluso, lo spazio dei nomi del raccoglitore specifico ha la precedenza.

Tutti gli spazi dei nomi configurati per il server di inoltro vengono visualizzati con gli asset associati in l'interfaccia utente di Google Security Operations. Puoi anche cercare spazi dei nomi utilizzando funzionalità di ricerca di Google Security Operations.

Per informazioni su come visualizzare gli spazi dei nomi nell'interfaccia utente di Google Security Operations, consulta questa pagina.

Configurazione di esempio: spazi dei nomi

Nella seguente configurazione del forwarding, i log WINEVTLOG vengono collegato allo spazio dei nomi FORWARDER e i log NIX_SYSTEM collegato allo spazio dei nomi CORPORATE.

metadata:
  namespace: FORWARDER
collectors:
- syslog:
      common:
        metadata:
          namespace: CORPORATE
        batch_n_bytes: 1048576
        batch_n_seconds: 10
        data_hint: null
        data_type: NIX_SYSTEM
        enabled: true
      tcp_address: 0.0.0.0:30000
      connection_timeout_sec: 60
- syslog:
      common:
        batch_n_bytes: 1048576
        batch_n_seconds: 10
        data_hint: null
        data_type: WINEVTLOG
        enabled: true
      tcp_address: 0.0.0.0:30001
      connection_timeout_sec: 60

Configura le opzioni di bilanciamento del carico e alta disponibilità

Il servizio di forwarding di Google Security Operations per Linux può essere implementato in un ambiente in cui è installato un bilanciatore del carico di livello 4 tra l'origine dati e il forwarding di Compute Engine. In questo modo un cliente può distribuire la raccolta di log tra più forwardinger o inviare i log a un altro server di inoltro in caso di errore. Questo è supportata solo con il tipo di raccolta syslog.

Il forwarding Linux include un server HTTP integrato che risponde all'integrità HTTP dal bilanciatore del carico. Il server HTTP aiuta anche a garantire che i log non venga perso durante l'avvio o l'arresto di un server di forwarding.

Configura il server HTTP, il bilanciamento del carico e le opzioni per l'alta disponibilità nella sezione server del file di configurazione del forwarding. Queste opzioni supporto dell'impostazione della durata del timeout e dei codici di stato restituiti in risposta a controlli di integrità ricevuti nello scheduler dei container e basati sull'orchestrazione dai bilanciatori del carico tradizionali.

Usa i seguenti percorsi dell'URL per i controlli di integrità, idoneità e attività. I valori <host:port> sono definiti nella configurazione dello strumento di inoltro.

  • http://<host:port>/meta/available: controlli di attività per il contenitore scheduler o orchestratori.
  • http://<host:port>/meta/ready: controlli di idoneità e caricamento tradizionale di integrità dei bilanciatori del carico.

La seguente configurazione del server di inoltro è un esempio per il bilanciamento del carico e disponibilità:

collectors:
- syslog:
    common:
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: NIX_SYSTEM
      enabled: true
    tcp_address: 0.0.0.0:30000
    connection_timeout_sec: 60
- syslog:
    common:
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: WINEVTLOG
      enabled: true
    tcp_address: 0.0.0.0:30001
    connection_timeout_sec: 60
server:
  graceful_timeout: 15s
  drain_timeout: 10s
  http:
    port: 8080
    host: 0.0.0.0
    read_timeout: 3s
    read_header_timeout: 3s
    write_timeout: 3s
    idle_timeout: 3s
    routes:
    - meta:
        available_status: 204
        ready_status: 204
        unready_status: 503
Percorso di configurazione Descrizione
server : tolleranza_grazia La quantità di tempo in cui il mittente restituisce un recupero di idoneità/controllo di integrità scadente e accetta ancora nuove connessioni. Questo è anche il tempo di attesa tra ricevere un segnale per interrompere e avviare effettivamente l'arresto della sul server stesso. In questo modo concedi al bilanciatore del carico il tempo di rimuovere lo strumento di inoltro dalla piscina.
server : scratch_timeout Il tempo di attesa per le connessioni attive da parte dell'utente che esegue l'inoltro chiudersi autonomamente prima di essere chiusi dal server.
server : porta http : Il numero di porta su cui il server HTTP rimane in ascolto per i controlli di integrità provenienti dall' con il bilanciatore del carico di rete passthrough esterno regionale. Il valore deve essere compreso tra 1024 e 65535.
server : http : host L'indirizzo IP, o nome host che può essere risolto in indirizzi IP, che deve rimanere in ascolto. Se vuoto, il valore predefinito è local system (0.0.0.0).
server : http : tempo_di_lettura Utilizzato per ottimizzare il server HTTP. In genere, non è necessario cambiare l'impostazione predefinita. Il tempo massimo consentito per leggere l'intero richiesta, sia l'intestazione che il corpo. Puoi impostare sia read_timeout che read_header_timeout.
server : http : read_header_timeout Utilizzato per ottimizzare il server HTTP. In genere, non è necessario cambiare l'impostazione predefinita. Il tempo massimo consentito per leggere la richiesta intestazioni. La lettura della connessione alla scadenza viene reimpostata dopo aver letto il intestazione.
server : http : write_timeout Utilizzato per ottimizzare il server HTTP. In genere, non è necessario cambiare l'impostazione predefinita. Il tempo massimo consentito per inviare una risposta. Viene reimpostata quando viene letta l'intestazione di una nuova richiesta.
server : http : idle_timeout Utilizzato per ottimizzare il server HTTP. In genere, non è necessario cambiare l'impostazione predefinita. Il tempo massimo di attesa per il successivo quando vengono abilitate le connessioni inattive. Se idle_timeout è pari a zero, è utilizzato il valore read_timeout. Se entrambi sono pari a zero, il valore read_header_timeout in uso.
route : meta : ready_status Il codice di stato restituito dal server di inoltro quando è pronto ad accettare il traffico in una delle seguenti situazioni:
  • Il controllo di idoneità viene ricevuto da uno scheduler di container strumento di orchestrazione.
  • Il controllo di integrità viene ricevuto da un bilanciatore del carico tradizionale.
route : meta : unready_status Il codice di stato restituito dal mittente quando non è pronto ad accettare per via del traffico.
route : meta : available_status Il codice di stato restituito dall'inoltro quando viene ricevuto un controllo di attività e chi invia sia disponibile. Gli scheduler o gli orchestratori dei container spesso inviano e controlli di attività.

Domande frequenti

Come faccio ad aggiornare il mio inoltro?

Il forwarding Linux viene costantemente aggiornato tramite uno script shell in Docker dell'immagine. Per aggiornare l'immagine Docker, esegui il forwarding.

Che cos'è un container Docker?

  • I container Docker, sono come le macchine virtuali che forniscono sicurezza, isolamento e gestione delle risorse.

  • Macchine virtuali: dispongono sia di uno spazio privilegiato (kernel Linux) sia di spazio utente (tutti gli elementi con cui interagisci: libc, python, ls, tcpdump e così via).

  • I container hanno solo uno spazio utente (tutto ciò con cui interagisci: libc, python, ls, tcpdump e così via) e si basano sullo spazio dei privilegi dell'host.

Perché distribuire lo strumento di inoltro di Google Security Operations utilizzando un container?

  • Maggiore sicurezza grazie all'isolamento:
    • L'ambiente e i requisiti del cliente non influiscono su Google Security Operations spedizioniere.
    • L'ambiente di inoltro e i requisiti di Google Security Operations non influiscono il cliente.
    • Il meccanismo di distribuzione dei container esiste già e può essere privato. separatamente per Google Cloud e per i clienti. https://cloud.google.com/container-registry/

Hai bisogno di imparare i comandi Docker avanzati?

  • Il sistema di inoltro di Google Security Operations utilizza un singolo container, quindi non è necessario scopri di più su Swarm, orchestrazione o altre funzionalità Docker concetti o comandi.