Raccogliere i log Apache

Supportato in:

Questo documento spiega come importare i log Apache in Google Security Operations utilizzando Bindplane. Il codice del parser tenta innanzitutto di analizzare il messaggio di log non elaborato come JSON. Se l'operazione non va a buon fine, utilizza espressioni regolari (pattern grok) per estrarre i campi dal messaggio in base ai formati di log Apache comuni.

Prima di iniziare

  • Assicurati di avere un'istanza Google SecOps.
  • Assicurati di utilizzare Windows 2016 o versioni successive oppure un host Linux con systemd.
  • Se l'esecuzione avviene tramite un proxy, assicurati che le porte del firewall siano aperte.
  • Assicurati di disporre dell'accesso con privilegi a un'istanza Apache.

Recuperare il file di autenticazione importazione di Google SecOps

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Agenti di raccolta.
  3. Scarica il file di autenticazione importazione. 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

Installazione di Windows

  1. Apri il 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
    

Installazione di Linux

  1. Apri un terminale con privilegi di 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
    

Risorse aggiuntive per l'installazione

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

  1. Accedi al file di configurazione:

    1. Individua il file config.yaml. In genere, si trova nella directory /etc/bindplane-agent/ su Linux o nella directory di installazione su Windows.
    2. Apri il file utilizzando un editor di testo (ad esempio nano, vi o Blocco note).
  2. Modifica il file config.yaml come segue:

    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: 'APACHE'
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. Sostituisci la porta e l'indirizzo IP in base alle esigenze della tua infrastruttura.

  4. Sostituisci <customer_id> con l'ID cliente effettivo.

  5. Aggiorna /path/to/ingestion-authentication-file.json al percorso in cui è stato salvato il file di autenticazione nella sezione Recupera il file di autenticazione per l'importazione di Google SecOps.

Riavvia l'agente Bindplane per applicare le modifiche

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

    sudo systemctl restart bindplane-agent
    
  • Per riavviare l'agente Bindplane in Windows, puoi utilizzare la console Servizi o inserire il seguente comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configurare Syslog in Apache

  1. Accedi al server Ubuntu tramite SSH.
  2. Crea un file in /etc/rsyslog.d/ denominato 02-apache2.conf:

    vim /etc/rsyslog.d/02-apache2.conf
    
  3. Aggiungi il seguente codice al file:

    module(load="imfile" PollingInterval="10" statefile.directory="/var/spool/rsyslog")
    input(type="imfile"
            File="/var/log/apache2/access.log"
            Tag="http_access"
            Severity="info"
            Facility="local6")
    Local6.info        @<bindplane-agnet-ip>:<vindplane-agent-port>
    module(load="imfile" PollingInterval="10" statefile.directory="/var/spool/rsyslog")
    input(type="imfile"
            File="/var/log/apache2/error.log"
            Tag="http_error"
    
    • Sostituisci bindplane-agent-ip> e bindplane-agent-port con l'indirizzo IP e la porta configurati per l'agente Bindplane.
    • Se utilizzi il protocollo TCP, aggiungi un ulteriore @ alla riga dell'host in modo che abbia il seguente aspetto: @@<bindplane-agnet-ip>:<vindplane-agent-port>.
  4. Riavvia i servizi RSyslog:

    sudo service rsyslog restart
    

Tabella di mappatura UDM

Campo log Mappatura UDM Logic
byte network.received_bytes Byte ricevuti dal client.
byte network.sent_bytes Byte inviati al client.
bytes_out network.sent_bytes Byte inviati al client.
bytes_received network.received_bytes Byte ricevuti dal client.
Contenuti network.http.method Metodo HTTP estratto dal campo "Contenuti".
Contenuti target.url URL di destinazione estratto dal campo "Contenuti".
biscotto additional.fields.value.string_value Valore del campo "cookie".
dest_ip target.ip Indirizzo IP della destinazione.
dest_name target.hostname Nome host della destinazione.
dest_port target.port Porta della destinazione.
description metadata.description Descrizione dell'evento.
duration_microseconds additional.fields.value.string_value Valore del campo "duration_microseconds".
file_full_path target.file.full_path Percorso completo del file di destinazione.
nome host target.hostname Nome host della destinazione.
http_content_type additional.fields.value.string_value Valore del campo "http_content_type".
http_host principal.hostname Il nome host dell'entità.
http_method network.http.method Metodo HTTP.
http_referrer network.http.referral_url URL referrer HTTP.
http_user_agent network.http.user_agent User agent HTTP.
ID metadata.id ID dell'evento.
insertId metadata.product_log_id ID log prodotto.
ip principal.ip L'indirizzo IP dell'entità.
jsonPayload.cIP target.ip Indirizzo IP della destinazione.
jsonPayload.cPort target.port Porta della destinazione.
jsonPayload.csBytes network.sent_bytes Byte inviati al client.
jsonPayload.csMethod network.http.method Metodo HTTP.
jsonPayload.csMimeType target.file.mime_type Tipo MIME del file di destinazione.
jsonPayload.csReferer network.http.referral_url URL referrer HTTP.
jsonPayload.csURL target.url URL di destinazione.
jsonPayload.csUserAgent network.http.user_agent User agent HTTP.
jsonPayload.sHierarchy additional.fields.value.string_value Valore del campo "sHierarchy".
jsonPayload.sHostname principal.hostname Il nome host dell'entità.
jsonPayload.sIP principal.ip L'indirizzo IP dell'entità.
jsonPayload.scBytes network.received_bytes Byte ricevuti dal client.
jsonPayload.scHTTPStatus network.http.response_code Codice di risposta HTTP.
jsonPayload.scResultCode additional.fields.value.string_value Valore del campo "scResultCode".
LastStatus network.http.response_code Codice di risposta HTTP.
log_level security_result.severity Gravità del risultato di sicurezza.
logName security_result.category_details Dettagli della categoria del risultato di sicurezza.
metodo network.http.method Metodo HTTP.
pid principal.process.pid ID processo dell'entità.
Porta target.port Porta della destinazione.
proto network.application_protocol Protocollo applicativo.
referer network.http.referral_url URL referrer HTTP.
RemoteHost principal.ip L'indirizzo IP dell'entità.
RemoteUser principal.user.userid L'ID utente dell'entità.
resource.labels.instance_id target.resource.product_object_id ID oggetto prodotto della risorsa di destinazione.
resource.labels.project_id target.resource.attribute.labels.value Valore dell'etichetta "project_id".
resource.labels.zone target.resource.attribute.cloud.availability_zone Zona di disponibilità della risorsa di destinazione.
resource.type target.resource.resource_type Tipo di risorsa della destinazione.
risposta network.http.response_code Codice di risposta HTTP.
SizeBytes network.received_bytes Byte ricevuti dal client.
src_ip principal.ip L'indirizzo IP dell'entità.
src_port principal.port Porto dell'entità.
ssl_cipher network.tls.cipher Algoritmo di crittografia TLS.
ssl_version network.tls.version_protocol Protocollo di versione TLS.
stato network.http.response_code Codice di risposta HTTP.
target target.url URL di destinazione.
target_ip target.ip Indirizzo IP della destinazione.
target_port target.port Porta della destinazione.
tempo metadata.event_timestamp Timestamp dell'evento.
uri_path target.process.file.full_path Percorso completo del file di destinazione.
utente principal.user.userid L'ID utente dell'entità.
useragent network.http.user_agent User agent HTTP.
version_protocol network.tls.version_protocol Protocollo di versione TLS.
Workername principal.hostname Il nome host dell'entità.
x_forwarded_for Valore dell'intestazione "X-Forwarded-For".
metadata.log_type Il valore è impostato su "APACHE" nel codice del parser.
metadata.product_name Il valore è impostato su "Apache Web Server" nel codice del parser.
metadata.vendor_name Il valore è impostato su "Apache" nel codice del parser.
metadata.event_type Il valore viene determinato in base alla presenza delle informazioni sul principale e sul target. Se sono presenti sia il principale che il target, il tipo di evento è impostato su "NETWORK_HTTP". Se è presente solo l'entità, il tipo di evento è impostato su "STATUS_UPDATE". In caso contrario, viene impostato su "GENERIC_EVENT".
additional.fields.key La chiave è impostata su "keep_alive", "duration_microseconds", "cookie", "http_content_type", "sHierarchy", "scResultCode" nel codice del parser in base al campo.
target.port Se il campo "proto" è "HTTP", la porta è impostata su 80. Se il campo "proto" è "HTTPS", la porta è impostata su 443. Se il campo "proto" è "FTP", la porta è impostata su 21.
target.resource.attribute.labels.key La chiave è impostata su "project_id" nel codice del parser.

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