Raccogli i log WAF di Akamai

Supportato in:

Questo documento spiega come importare i log WAF di Akamai in Google Security Operations utilizzando Akamai CEF Connector e Bindplane.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Un'istanza Google SecOps
  • Un host Windows 2016 o versioni successive o Linux con systemd per l'installazione dell'agente Bindplane
  • Un server Linux (consigliato CentOS/RHEL/Ubuntu) con almeno 2 core CPU, 6 GB di RAM, 2 GB di spazio libero su disco per Akamai CEF Connector
  • Java 8 (JRE 1.8) o versioni successive installate sull'host del connettore CEF
  • Se l'agente viene eseguito dietro un proxy, assicurati che le porte del firewall siano aperte in base ai requisiti dell'agente Bindplane e che le liste consentite del proxy *.cloudsecurity.akamaiapis.net e *.luna.akamaiapis.net
  • Accesso con privilegi ad Akamai Control Center
  • Una configurazione di sicurezza Akamai con App & API Protector, Kona Site Defender, Web Application Protector, Bot Manager o Account Protector abilitato

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.

Abilitare l'integrazione SIEM in Akamai Control Center

  1. Accedi ad Akamai Control Center.
  2. Nella sezione WEB & DATA CENTER SECURITY (Sicurezza web e data center), fai clic su Security Configuration (Configurazione della sicurezza).
  3. Apri la configurazione di sicurezza e la versione appropriata per cui vuoi raccogliere i dati SIEM.
  4. Fai clic su Impostazioni avanzate ed espandi Raccolta dati per le integrazioni SIEM.
  5. Fai clic su On per attivare SIEM.
  6. Scegli le norme di sicurezza per le quali vuoi esportare i dati:
    • Tutte le policy di sicurezza: seleziona questa opzione per inviare i dati SIEM per gli eventi che violano una o tutte le policy di sicurezza all'interno della configurazione di sicurezza.
    • Policy di sicurezza specifiche: seleziona questa opzione per inviare dati relativi a una o più policy di sicurezza specifiche. Seleziona le norme appropriate dall'elenco a discesa.
  7. (Facoltativo) Se utilizzi Account Protector e vuoi includere il nome utente non criptato, seleziona la casella di controllo Includi nome utente.
  8. (Facoltativo) Se vuoi ricevere informazioni sull'impronta JA4 negli eventi SIEM, attiva la casella di controllo Includi l'impronta TLS del client JA4.
  9. (Facoltativo) Se vuoi escludere eventi appartenenti a un tipo di protezione e a un'azione specifici, fai clic su Aggiungi eccezione. Seleziona la protezione e le azioni associate che non vuoi che SIEM raccolga. Fai clic su Salva.
  10. Copia il valore nel campo ID configurazione sicurezza web. Salva questo ID per utilizzarlo in un secondo momento.
  11. Fai clic su Attiva per trasferire le modifiche alla configurazione della sicurezza alla rete di produzione. Nella sezione Rete, fai clic su Produzione e poi su Attiva.

Configurare un utente per gestire SIEM in Akamai Control Center

  1. In Akamai Control Center, fai clic su Identità e accesso in AMMINISTRATORE ACCOUNT.
  2. Nella scheda Utenti e client API, individua l'utente a cui vuoi assegnare il ruolo o fai clic sul pulsante Crea utente.
  3. Per assegnare il ruolo SIEM a un utente esistente:
    • Apri l'account dell'utente e fai clic sulla scheda Modifica ruoli.
    • Trova il gruppo appropriato, fai clic sul menu Ruoli e seleziona il ruolo Gestisci SIEM.
    • Fai clic su Invia.
  4. Per assegnare il ruolo SIEM a un nuovo utente:
    • Fai clic su Crea utente.
    • Inserisci le informazioni di base per l'utente e vai alla sezione Assegna ruoli.
    • Trova il gruppo appropriato, fai clic sul menu Ruoli e seleziona il ruolo Gestisci SIEM.
    • Fai clic su Salva.

Esegui il provisioning delle credenziali API SIEM in Akamai Control Center

  1. Visita la pagina Crea credenziali di autenticazione nella documentazione di Akamai.
  2. Segui i passaggi per eseguire il provisioning dell'API SIEM per l'utente a cui hai assegnato la gestione di SIEM.
  3. Copia e salva in modo sicuro le seguenti credenziali:
    • Token di accesso
    • Client Token
    • Client secret
    • URL di base

Installare Akamai CEF Connector

  1. Sul server Linux, scarica l'ultimo pacchetto di distribuzione di CEF Connector dal repository GitHub di Akamai.
  2. Trasferisci il pacchetto al tuo server utilizzando wget o SFTP.
  3. Verifica l'hash SHA256 del file scaricato per garantirne l'integrità.
  4. Estrai il pacchetto di distribuzione:

    unzip CEFConnector-<version>.zip
    
  5. Vai alla directory estratta:

    cd CEFConnector-<version>
    
  6. Per installare il servizio, crea un link simbolico allo script di avvio:

    sudo ln -s /path/to/CEFConnector-<version>/bin/AkamaiCEFConnector.sh /etc/init.d/AkamaiCEFConnector
    

Configura il connettore Akamai CEF

  1. Vai alla directory config all'interno dell'installazione di CEF Connector:

    cd config
    
  2. Apri il file CEFConnector.properties utilizzando un editor di testo (ad esempio nano, vi):

    sudo nano CEFConnector.properties
    
  3. Configura i seguenti parametri obbligatori:

    # Akamai API Configuration
    akamai.data.requesturlhost=https://cloudsecurity.akamaiapis.net
    akamai.data.configs=<YOUR_SECURITY_CONFIG_ID>
    akamai.data.timebased=false
    akamai.data.limit=200000
    
    # API Credentials (from Step: Provision SIEM API credentials)
    akamai.data.accesstoken=<YOUR_ACCESS_TOKEN>
    akamai.data.clienttoken=<YOUR_CLIENT_TOKEN>
    akamai.data.clientsecret=<YOUR_CLIENT_SECRET>
    akamai.data.baseurl=<YOUR_BASE_URL>
    
    # CEF Format Configuration
    akamai.cefformatheader=CEF:0|Akamai|akamai_siem|1.0|eventClassId()|name()|severity()
    
    akamai.cefformatextension=act=appliedAction() app=${httpMessage.protocol} c6a2=ipv6src() c6a2Label="Source IPv6 Address" cs1=${attackData.rules} cs1Label="Rules" cs2=${attackData.ruleMessages} cs2Label="Rule Messages" cs3=${attackData.ruleData} cs3Label="Rule Data" cs4=${attackData.ruleSelectors} cs4Label="Rule Selectors" cs5=${attackData.clientReputation} cs5Label="Client Reputation" cs6=${attackData.apiId} cs6Label="API ID" devicePayloadId=${httpMessage.requestId} dhost=${httpMessage.host} dpt=${httpMessage.port} flexString1=${attackData.configId} flexString1Label="Security Config ID" flexString2=${attackData.policyId} flexString2Label="Firewall Policy Id" out=${httpMessage.bytes} request=requestURL() requestMethod=${httpMessage.method} src=${attackData.clientIP} start=${httpMessage.start} AkamaiSiemSlowPostAction=${attackData.slowPostAction} AkamaiSiemSlowPostRate=${attackData.slowPostRate} AkamaiSiemRuleVersions=${attackData.ruleVersions} AkamaiSiemRuleTags=${attackData.ruleTags} AkamaiSiemJA4=${identity.ja4} AkamaiSiemRuleActions=${attackData.ruleActions}
    
    # Connector Pull Configuration
    connector.refresh.period=60
    connector.consumer.count=3
    connector.retry=5
    
    # Proxy Configuration (if applicable)
    # connector.proxy.host=
    # connector.proxy.port=
    
  4. Sostituisci i seguenti segnaposto con i tuoi valori effettivi:

    • <YOUR_SECURITY_CONFIG_ID>: l'ID configurazione della sicurezza web che hai copiato in precedenza. Per più configurazioni, separa gli ID con punti e virgola (ad esempio, 12345;67890).
    • <YOUR_ACCESS_TOKEN>: Il token di accesso dalle credenziali API Akamai
    • <YOUR_CLIENT_TOKEN>: il token client dalle credenziali API Akamai
    • <YOUR_CLIENT_SECRET>: il client secret delle credenziali API di Akamai
    • <YOUR_BASE_URL>: l'URL di base delle credenziali API Akamai
  5. Salva e chiudi il file.

Configura il logging del connettore CEF

  1. Vai alla directory config all'interno dell'installazione di CEF Connector.
  2. Apri il file log4j2.xml utilizzando un editor di testo:

    sudo nano log4j2.xml
    
  3. Configura i seguenti parametri per l'output syslog in Bindplane:

    <!-- Syslog Appender Configuration -->
    <Syslog name="SyslogAppender" 
            host="<BINDPLANE_IP_ADDRESS>" 
            port="<BINDPLANE_PORT>" 
            protocol="<PROTOCOL>" 
            facility="LOCAL0"
            format="RFC5424">
        <PatternLayout pattern="%m%n"/>
    </Syslog>
    
  4. Sostituisci i seguenti segnaposto:

    • <BINDPLANE_IP_ADDRESS>: L'indirizzo IP del server in cui è installato l'agente Bindplane
    • <BINDPLANE_PORT>: il numero di porta su cui è in ascolto l'agente Bindplane (ad esempio, 514 per UDP o 601 per TCP)
    • <PROTOCOL>: seleziona UDP o TCP
  5. Assicurati che il connettore CEF invii i log al server syslog remoto (BindPpane) configurando le impostazioni specifiche di CEF:

    # In CEFConnector.properties, ensure these are set:
    # Note: These settings are typically in log4j2.xml but referenced here for clarity
    
  6. Salva e chiudi il file.

Avvia il connettore CEF Akamai

  1. Avvia il servizio CEF Connector:

    sudo /etc/init.d/AkamaiCEFConnector start
    
  2. Verifica che il servizio sia in esecuzione:

    sudo /etc/init.d/AkamaiCEFConnector status
    
  3. Monitora i log per assicurarti che il connettore estragga gli eventi da Akamai e li invii a Bindplane:

    tail -f /path/to/CEFConnector-<version>/bin/logs/cefconnector.log
    

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 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 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 inviarlo 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"
        tcplog:
          # Alternative TCP receiver if using TCP protocol
          listen_address: "0.0.0.0:601"
    
    exporters:
      chronicle/chronicle_w_labels:
        compression: gzip
        # Adjust the path to the credentials file you downloaded in the Get ingestion authentication file section
        creds_file_path: '/path/to/ingestion-authentication-file.json'
        # Replace with your actual customer ID from the Get customer ID section
        customer_id: <YOUR_CUSTOMER_ID>
        # Select the appropriate regional endpoint based on where your Google SecOps instance is provisioned
        # For regional endpoints, see: https://cloud.google.com/chronicle/docs/reference/ingestion-api#regional_endpoints
        endpoint: malachiteingestion-pa.googleapis.com
        # Set the log_type to ensure the correct parser is applied
        log_type: 'AKAMAI_WAF'
        raw_log_field: body
        # Add optional ingestion labels for better organization
        ingestion_labels:
    
    service:
      pipelines:
        logs/source0__chronicle_w_labels-0:
          receivers:
            - udplog
            # - tcplog  # Uncomment if using TCP
          exporters:
            - chronicle/chronicle_w_labels
    

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
    

Verifica l'importazione dei log

  1. Accedi alla console Google SecOps.
  2. Vai a Ricerca o Analisi log non elaborati.
  3. Cerca i log WAF di Akamai recenti utilizzando l'etichetta di importazione:

    metadata.log_type = "AKAMAI_WAF"
    
  4. Verifica che i log vengano visualizzati con i campi e i timestamp previsti.

  5. Verifica che i campi del formato CEF vengano analizzati e mappati correttamente in UDM.

Risoluzione dei problemi

Problemi relativi al connettore CEF

  • Nessun evento recuperato: controlla la presenza di errori nel file cefconnector.log. Verifica che le credenziali API Akamai siano corrette e che gli ID configurazione della sicurezza siano validi.
  • Errori di connessione: assicurati che le impostazioni del proxy (se applicabile) siano configurate correttamente e che i domini richiesti siano inclusi nella lista consentita.
  • Reimpostazione del database: se devi reimpostare il monitoraggio dell'offset, esegui:

    sudo /etc/init.d/AkamaiCEFConnector resetdb
    

Problemi relativi all'agente Bindplane

  • I log non raggiungono Bindplane: verifica che il connettore CEF sia configurato per inviare syslog all'indirizzo IP e alla porta Bindplane corretti. Controlla le regole firewall tra CEF Connector e l'agente Bindplane.
  • Log non raggiungono Google SecOps: verifica il file di configurazione Bindplane, l'ID cliente e il percorso di autenticazione dell'importazione. Controlla la presenza di errori nei log di Bindplane:

    sudo journalctl -u observiq-otel-collector -f
    

Rete e connettività

  • Verifica che il connettore CEF possa raggiungere gli endpoint API SIEM di Akamai.
  • Verifica che l'agente Bindplane possa raggiungere l'endpoint di importazione di Google SecOps (malachiteingestion-pa.googleapis.com).
  • Verifica che tutte le porte firewall richieste siano aperte.

Recuperare eventi di sicurezza passati

Il connettore CEF Akamai funziona in due modalità:

  • Basato sull'offset (consigliato): il connettore registra automaticamente gli eventi di sicurezza man mano che vengono raccolti in tempo quasi reale. Questa è la modalità predefinita quando akamai.data.timebased è impostato su false.
  • Basato sul tempo: consente di recuperare gli eventi che si sono verificati in un periodo di tempo specifico (fino a 12 ore prima).

Per recuperare eventi di sicurezza mancanti o passati:

  1. Apri il file di configurazione del connettore:

    sudo nano /path/to/CEFConnector-<version>/config/CEFConnector.properties
    
  2. Modifica la configurazione basata sul tempo:

    akamai.data.timebased=true
    akamai.data.timebased.from=<EPOCH_START_TIME>
    akamai.data.timebased.to=<EPOCH_END_TIME>
    
    • Sostituisci <EPOCH_START_TIME> con l'ora di inizio nel formato epoch (entro le ultime 12 ore).
    • Sostituisci <EPOCH_END_TIME> con l'ora di fine nel formato epoch (facoltativo; se lasciato vuoto, vengono recuperati gli eventi fino al presente).
  3. Riavvia il connettore CEF:

    sudo /etc/init.d/AkamaiCEFConnector restart
    
  4. Dopo aver recuperato i dati storici, torna alla modalità di offset:

    akamai.data.timebased=false
    
  5. Riavvia di nuovo il connettore CEF.

Tabella di mappatura UDM

Campo log Mappatura UDM Logic
src (attackData.clientIP) principal.ip Indirizzo IP di origine del client che effettua la richiesta
c6a2 (ipv6src) principal.ip Indirizzo IPv6 di origine se attackData.clientIP è in formato IPv6
dhost (httpMessage.host) target.hostname Nome host dall'intestazione HTTP HOST
dpt (httpMessage.port) target.port Numero di porta utilizzato dalla richiesta in entrata
requestMethod (httpMessage.method) network.http.method Metodo HTTP della richiesta in entrata (GET, POST e così via)
request (requestURL) target.url URL completo calcolato dai campi httpMessage
cs1 (attackData.rules) security_result.rule_id ID delle regole attivate per questa richiesta
cs2 (attackData.ruleMessages) security_result.rule_name Messaggi delle regole attivate
act (appliedAction) security_result.action Azione eseguita (avviso, negazione, interruzione e così via)
severity security_result.severity Gravità calcolata (5 per il rilevamento, 10 per la mitigazione)
cs5 (attackData.clientReputation) security_result.threat_name Punteggi IP client per la reputazione client
cs6 (attackData.apiId) security_result.detection_fields ID API per la protezione delle API
start (httpMessage.start) metadata.event_timestamp Ora in cui il server Edge ha avviato la connessione (formato epoch)
devicePayloadId (httpMessage.requestId) metadata.product_log_id ID univoco a livello globale del messaggio
flexString1 (attackData.configId) security_result.detection_fields ID della configurazione di sicurezza applicata a questa richiesta
flexString2 (attackData.policyId) security_result.detection_fields ID della policy firewall applicata a questa richiesta
AkamaiSiemJA4 (identity.ja4) network.tls.client.ja3 Impronta digitale TLS del client JA4

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