Raccogliere i log di AWS Elastic Load Balancer
Questo documento spiega come raccogliere i log di AWS Elastic Load Balancer configurando un feed Google Security Operations. Il parser converte i log in formato UDM. Utilizza pattern grok per estrarre i campi dai messaggi in formato CEF e non CEF, mappandoli ai campi UDM e gestendo varie trasformazioni dei dati, inclusa la logica specifica per i campi HTTP, TLS e relativi alla sicurezza. Esegue anche l'elaborazione condizionale in base alla presenza o al formato di determinati campi per garantire una rappresentazione accurata di UDM.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Istanza Google SecOps
- Accesso privilegiato ad AWS
Configura AWS Elastic Load Balancer
- Abilita il logging degli accessi per inviare i log di accesso a un bucket di archiviazione S3
- Crea un Amazon Simple Queue Service (SQS) e collegalo a un bucket di archiviazione S3.
Configura il bucket Amazon S3
- Accedi alla console AWS.
- Crea un bucket Amazon S3 seguendo questa guida utente: Creazione di un bucket
- Salva il nome del bucket (ad esempio,
elb-logs
) e la regione per un utilizzo successivo. - Crea un utente seguendo questa guida: Creazione di un utente IAM.
- Seleziona l'utente creato.
- Seleziona la scheda Credenziali di sicurezza.
- Fai clic su Crea chiave di accesso nella sezione Chiavi di accesso.
- Seleziona Servizio di terze parti come Caso d'uso.
- Fai clic su Avanti.
- (Facoltativo) Aggiungi un tag di descrizione.
- Fai clic su Crea chiave di accesso.
- Fai clic su Scarica file CSV per salvare la chiave di accesso e la chiave di accesso segreta per un utilizzo successivo.
- Fai clic su Fine.
- Seleziona la scheda Autorizzazioni.
- Fai clic su Aggiungi autorizzazioni nella sezione Criteri per le autorizzazioni.
- Seleziona Aggiungi autorizzazioni.
- Seleziona Allega direttamente le norme.
- Cerca e seleziona il criterio AmazonS3FullAccess.
- Fai clic su Avanti.
- Fai clic su Aggiungi autorizzazioni.
Come configurare AWS Elastic Load Balancer per abilitare i log di accesso
- Accedi alla console di gestione AWS.
- Cerca e seleziona EC2.
- Nel menu di navigazione, seleziona Bilanciatori del carico.
- Seleziona il bilanciatore del carico per il quale vuoi attivare la registrazione.
- Nella scheda Descrizione, scorri fino a Attributi.
- Fai clic su Modifica attributi.
- Attiva i log di accesso selezionando Attiva.
- Seleziona il bucket S3 creato in precedenza (ad esempio,
elb-logs
). - (Facoltativo) Imposta il prefisso del log per identificare più facilmente i log (ad esempio,
elb/access-logs/
). - Fai clic su Salva.
Configurare i feed
Esistono due diversi punti di accesso per configurare i feed nella piattaforma Google SecOps:
- Impostazioni SIEM > Feed > Aggiungi nuovo
- Hub dei contenuti > Pacchetti di contenuti > Inizia
Come configurare il feed AWS Elastic Load Balancer
- Fai clic sul pacchetto Amazon Cloud Platform.
- Individua il tipo di log AWS Elastic Load Balancer.
Specifica i valori nei seguenti campi.
- Specifica i valori nei seguenti campi.
- Tipo di origine: Amazon SQS V2
- Nome coda: il nome della coda SQS da cui leggere
- URI S3: l'URI del bucket.
s3://your-log-bucket-name/
- Sostituisci
your-log-bucket-name
con il nome effettivo del tuo bucket S3.
- Sostituisci
Opzioni di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze di importazione.
Età massima del file: includi i file modificati nell'ultimo numero di giorni. Il valore predefinito è 180 giorni.
ID chiave di accesso alla coda SQS: una chiave di accesso all'account che è una stringa alfanumerica di 20 caratteri.
Chiave di accesso segreta della coda SQS: una chiave di accesso all'account che è una stringa alfanumerica di 40 caratteri.
Opzioni avanzate
- Nome feed: un valore precompilato che identifica il feed.
- Spazio dei nomi dell'asset: lo spazio dei nomi associato al feed.
- Etichette di importazione: etichette applicate a tutti gli eventi di questo feed.
Fai clic su Crea feed.
Per ulteriori informazioni sulla configurazione di più feed per diversi tipi di log all'interno di questa famiglia di prodotti, consulta Configurare i feed per prodotto.
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logic |
---|---|---|
actions_executed |
security_result.action |
Se actions_executed è "waf,forward" o "waf,redirect", imposta il valore su "ALLOW". Se actions_executed è "waf", impostalo su "BLOCK". |
chosen_cert_arn |
principal.user.attribute.labels |
Se chosen_cert_arn contiene "sessione", mappa il suo valore a security_result.description . In caso contrario, crea un'etichetta con la chiave "ARN" e il valore chosen_cert_arn e aggiungila all'array principal.user.attribute.labels . |
chosen_cert_arn |
security_result.description |
Se chosen_cert_arn contiene "session", mappa il suo valore a questo campo. |
client_ip |
principal.asset.ip |
Mappato direttamente. |
client_ip |
principal.ip |
Mappato direttamente. |
client_port |
principal.port |
Mappato direttamente. |
classification |
security_result.rule_name |
Mappato direttamente se non è vuoto o "-". |
classification_reason |
security_result.summary |
Mappato direttamente se non è vuoto o "-". |
Customer (CEF) |
principal.user.user_display_name |
Mappato direttamente dal campo CEF. |
data |
Varie | Analizzato utilizzando i pattern grok per estrarre più campi. Consulta le altre righe per mappature specifiche. |
data.act (CEF) |
security_result.action_details |
Mappato direttamente dal campo CEF. |
data.app (CEF) |
principal.application |
Mappato direttamente dal campo CEF. |
data.ccode (CEF) |
principal.location.country |
Mappato direttamente dal campo CEF. |
data.cicode (CEF) |
principal.location.city |
Mappato direttamente dal campo CEF. |
data.cn1 (CEF) |
network.http.response_code |
Mappato direttamente dal campo CEF. |
data.cpt (CEF) |
principal.port |
Mappato direttamente dal campo CEF. |
data.cs1Label (CEF) |
additional.fields |
Crea una coppia chiave-valore con la chiave "Cap Support" e il valore di cs1Label . |
data.cs2Label (CEF) |
additional.fields |
Crea una coppia chiave-valore con la chiave "Javascript Support" e il valore di cs2Label . |
data.cs3Label (CEF) |
additional.fields |
Crea una coppia chiave-valore con la chiave "CO Support" e il valore di cs3Label . |
data.cs4Label (CEF) |
additional.fields |
Crea una coppia chiave-valore con la chiave "VID" e il valore di cs4Label . |
data.cs5Label (CEF) |
additional.fields |
Crea una coppia chiave-valore con la chiave "clappsig" e il valore di cs5Label . |
data.cs6Label (CEF) |
additional.fields |
Crea una coppia chiave-valore con la chiave "clapp" e il valore di cs6Label . |
data.cs7Label (CEF) |
additional.fields |
Crea una coppia chiave-valore con la chiave "latitude" e il valore di cs7Label . |
data.deviceExternalId (CEF) |
about.asset.asset_id |
Utilizzato come parte dell'ID risorsa: Incapsula.SIEMintegration:deviceExternalId . |
data.deviceFacility (CEF) |
principal.location.region |
Mappato direttamente dal campo CEF. |
data.dproc (CEF) |
target.process.command_line |
Mappato direttamente dal campo CEF. |
data.dst_ip |
target.asset.ip |
Mappato direttamente. |
data.dst_ip |
target.ip |
Mappato direttamente. |
data.dst_port |
target.port |
Mappato direttamente. |
data.elb |
target.resource.id |
Mappato direttamente. |
data.fileId (CEF) |
security_result.detection_fields |
Crea una coppia chiave-valore con la chiave "fileId" e il valore di fileId . |
data.in (CEF) |
network.received_bytes |
Mappato direttamente dal campo CEF. |
data.request (CEF) |
target.url |
Mappato direttamente dal campo CEF. |
data.requestClientApplication (CEF) |
network.http.user_agent |
Mappato direttamente dal campo CEF. |
data.requestMethod (CEF) |
network.http.method |
Mappato direttamente dal campo CEF. |
data.severity (CEF) |
security_result.severity |
Mappato su LOW se la gravità è 0. |
data.sip (CEF) |
principal.asset.ip |
Mappato direttamente dal campo CEF. |
data.sip (CEF) |
principal.ip |
Mappato direttamente dal campo CEF. |
data.siteid (CEF) |
security_result.detection_fields |
Crea una coppia chiave-valore con la chiave "siteid" e il valore di siteid . |
data.sourceServiceName (CEF) |
principal.application |
Mappato direttamente dal campo CEF. |
data.spt (CEF) |
principal.port |
Mappato direttamente dal campo CEF. |
data.src (CEF) |
principal.ip |
Mappato direttamente dal campo CEF. |
data.suid (CEF) |
principal.user.userid |
Mappato direttamente dal campo CEF. |
data.ver (CEF) |
network.tls.version |
La parte della versione viene estratta utilizzando grok e mappata. |
data.ver (CEF) |
network.tls.cipher |
La parte della crittografia viene estratta utilizzando grok e mappata. |
data.xff (CEF) |
principal.ip |
Mappato direttamente dal campo CEF. |
domain_name |
principal.administrative_domain |
Mappato direttamente. |
http_method |
network.http.method |
Mappato direttamente. |
log_type |
metadata.log_type |
Mappato direttamente. |
message |
Varie | Analizzato utilizzando i pattern grok per estrarre più campi. Consulta le altre righe per mappature specifiche. |
received_bytes |
network.received_bytes |
Mappato direttamente. |
redirect_url |
network.application_protocol |
Se redirect_url inizia con "http", il protocollo viene estratto e mappato. |
redirect_url |
target.asset.hostname |
Se redirect_url inizia con "http", il nome host viene estratto e mappato. |
redirect_url |
target.hostname |
Se redirect_url inizia con "http", il nome host viene estratto e mappato. |
redirect_url |
target.port |
Se redirect_url inizia con "http", la porta viene estratta e mappata. |
request_creation_time |
metadata.collected_timestamp |
Mappato direttamente dopo l'analisi della data. |
request_processing_time |
security_result.detection_fields |
Crea una coppia chiave-valore con la chiave "request_processing_time" e il valore di questo campo. |
response_processing_time |
security_result.detection_fields |
Crea una coppia chiave-valore con la chiave "response_processing_time" e il valore di questo campo. |
sent_bytes |
network.sent_bytes |
Mappato direttamente. |
ssl_cipher |
network.tls.cipher |
Mappato direttamente. |
ssl_protocol |
network.tls.version |
Mappato direttamente. |
target_group_arn |
target.group.group_display_name |
Mappato direttamente. |
target_processing_time |
security_result.detection_fields |
Crea una coppia chiave-valore con la chiave "target_processing_time" e il valore di questo campo. |
target_status_code |
target.labels |
Crea un'etichetta con la chiave "target_status_code" e il valore di questo campo e la aggiunge all'array target.labels . |
time |
metadata.event_timestamp |
Mappato direttamente dopo l'analisi della data. |
trace_id |
metadata.product_log_id |
Mappato direttamente dopo la rimozione di "Root=". |
url |
network.http.referral_url |
Mappato direttamente. |
user_agent |
network.http.user_agent |
Mappato direttamente. |
(Parser) | metadata.event_type |
Imposta su "NETWORK_HTTP" se sono presenti gli ID macchina principale e di destinazione, su "STATUS_UPDATE" se è presente solo l'ID macchina principale, su "GENERIC_EVENT" se non sono presenti IP, nome host o IP di destinazione e su "NETWORK_HTTP" in caso contrario. |
(Parser) | metadata.product_name |
Imposta "AWS Elastic Load Balancer". |
(Parser) | metadata.vendor_name |
Imposta il valore su "AMAZON". |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.