Raccogli i log WAF di Akamai
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.nete*.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
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Agenti di raccolta.
- 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
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Profilo.
- Copia e salva l'ID cliente dalla sezione Dettagli dell'organizzazione.
Abilitare l'integrazione SIEM in Akamai Control Center
- Accedi ad Akamai Control Center.
- Nella sezione WEB & DATA CENTER SECURITY (Sicurezza web e data center), fai clic su Security Configuration (Configurazione della sicurezza).
- Apri la configurazione di sicurezza e la versione appropriata per cui vuoi raccogliere i dati SIEM.
- Fai clic su Impostazioni avanzate ed espandi Raccolta dati per le integrazioni SIEM.
- Fai clic su On per attivare SIEM.
- 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.
- (Facoltativo) Se utilizzi Account Protector e vuoi includere il nome utente non criptato, seleziona la casella di controllo Includi nome utente.
- (Facoltativo) Se vuoi ricevere informazioni sull'impronta JA4 negli eventi SIEM, attiva la casella di controllo Includi l'impronta TLS del client JA4.
- (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.
- Copia il valore nel campo ID configurazione sicurezza web. Salva questo ID per utilizzarlo in un secondo momento.
- 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
- In Akamai Control Center, fai clic su Identità e accesso in AMMINISTRATORE ACCOUNT.
- Nella scheda Utenti e client API, individua l'utente a cui vuoi assegnare il ruolo o fai clic sul pulsante Crea utente.
- 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.
- 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
- Visita la pagina Crea credenziali di autenticazione nella documentazione di Akamai.
- Segui i passaggi per eseguire il provisioning dell'API SIEM per l'utente a cui hai assegnato la gestione di SIEM.
- Copia e salva in modo sicuro le seguenti credenziali:
- Token di accesso
- Client Token
- Client secret
- URL di base
Installare Akamai CEF Connector
- Sul server Linux, scarica l'ultimo pacchetto di distribuzione di CEF Connector dal repository GitHub di Akamai.
- Trasferisci il pacchetto al tuo server utilizzando
wgeto SFTP. - Verifica l'hash SHA256 del file scaricato per garantirne l'integrità.
Estrai il pacchetto di distribuzione:
unzip CEFConnector-<version>.zipVai alla directory estratta:
cd CEFConnector-<version>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
Vai alla directory
configall'interno dell'installazione di CEF Connector:cd configApri il file
CEFConnector.propertiesutilizzando un editor di testo (ad esempionano,vi):sudo nano CEFConnector.propertiesConfigura 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=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
Salva e chiudi il file.
Configura il logging del connettore CEF
- Vai alla directory
configall'interno dell'installazione di CEF Connector. Apri il file
log4j2.xmlutilizzando un editor di testo:sudo nano log4j2.xmlConfigura 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>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,514per UDP o601per TCP)<PROTOCOL>: selezionaUDPoTCP
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 claritySalva e chiudi il file.
Avvia il connettore CEF Akamai
Avvia il servizio CEF Connector:
sudo /etc/init.d/AkamaiCEFConnector startVerifica che il servizio sia in esecuzione:
sudo /etc/init.d/AkamaiCEFConnector statusMonitora 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
- Apri il prompt dei comandi o PowerShell come amministratore.
Esegui questo comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Installazione di Linux
- Apri un terminale con privilegi root o sudo.
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
- Per ulteriori opzioni di installazione, consulta questa guida all'installazione.
Configura l'agente Bindplane per importare Syslog e inviarlo a Google SecOps
Accedi al file di configurazione:
- Individua il file
config.yaml. In genere si trova nella directory/etc/bindplane-agent/su Linux o nella directory di installazione su Windows. - Apri il file utilizzando un editor di testo (ad esempio
nano,vio Blocco note).
- Individua il file
Modifica il file
config.yamlcome 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-agentPer 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
- Accedi alla console Google SecOps.
- Vai a Ricerca o Analisi log non elaborati.
Cerca i log WAF di Akamai recenti utilizzando l'etichetta di importazione:
metadata.log_type = "AKAMAI_WAF"Verifica che i log vengano visualizzati con i campi e i timestamp previsti.
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 sufalse. - 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:
Apri il file di configurazione del connettore:
sudo nano /path/to/CEFConnector-<version>/config/CEFConnector.propertiesModifica 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).
- Sostituisci
Riavvia il connettore CEF:
sudo /etc/init.d/AkamaiCEFConnector restartDopo aver recuperato i dati storici, torna alla modalità di offset:
akamai.data.timebased=falseRiavvia 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.