Raccogliere i log di AWS Elastic Load Balancing
Questo documento spiega come raccogliere i log di AWS Elastic Load Balancing configurando un feed di Google Security Operations. L'analizzatore sintattico converte i log in formato UDM. Utilizza pattern grok per estrarre i campi dai messaggi formattati sia CEF che 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 inoltre l'elaborazione condizionale in base alla presenza o al formato di determinati campi per garantire una rappresentazione accurata dell'UDM.
Prima di iniziare
- Assicurati di avere un'istanza Google SecOps.
- Assicurati di disporre dell'accesso con privilegi ad AWS.
Configura AWS Elastic Load Balancing
- Abilita il logging degli accessi per inviare i log di accesso a un bucket di archiviazione S3.
- Crea un servizio Amazon Simple Queue Service (SQS) e associalo a un bucket di archiviazione S3.
Configura il bucket Amazon S3
- Accedi alla console AWS.
- Crea un bucket Amazon S3 seguendo questa guida dell'utente: Creare un bucket
- Salva il nome (ad esempio
elb-logs
) e la regione del bucket per utilizzarli in un secondo momento. - Crea un utente seguendo questa guida dell'utente: Creare 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 utilizzarle in un secondo momento.
- Fai clic su Fine.
- Seleziona la scheda Autorizzazioni.
- Fai clic su Aggiungi autorizzazioni nella sezione Criteri di autorizzazione.
- Seleziona Aggiungi autorizzazioni.
- Seleziona Collega direttamente i criteri.
- Cerca e seleziona il criterio AmazonS3FullAccess.
- Fai clic su Avanti.
- Fai clic su Aggiungi autorizzazioni.
Configurare AWS Elastic Load Balancer per abilitare i log di accesso
- Accedi alla Console di gestione AWS.
- Cerca e seleziona EC2.
- Seleziona Bilanciatori del carico nel menu di navigazione.
- Seleziona il bilanciatore del carico per cui vuoi attivare il logging.
- Nella scheda Descrizione, scorri fino ad 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 facilitare l'identificazione dei log (ad esempio
elb/access-logs/
). - Fai clic su Salva.
Configura un feed in Google SecOps per importare i log di AWS Elastic Load Balancer
- Vai a Impostazioni SIEM > Feed.
- Fai clic su Aggiungi nuovo.
- Nel campo Nome feed, inserisci un nome per il feed (ad esempio Log di AWS Elastic Load Balancer).
- Seleziona Amazon S3 come Tipo di origine.
- Seleziona AWS Elastic Load Balancer come Tipo di log.
- Fai clic su Avanti.
Specifica i valori per i seguenti parametri di input:
- Regione: la regione in cui si trova il bucket Amazon S3.
- URI S3: l'URI del bucket.
s3:/BUCKET_NAME
- Sostituisci
BUCKET_NAME
con il nome effettivo del bucket.
- Sostituisci
- L'URI è un: seleziona il TIPO DI URI in base alla configurazione dello stream di log (File singolo | Directory | Directory che include sottodirectory).
- Opzioni di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze.
- ID chiave di accesso: la chiave di accesso utente con accesso al bucket S3.
- Chiave di accesso segreta: la chiave segreta dell'utente con accesso al bucket S3.
- Spazio dei nomi degli asset: lo spazio dei nomi degli asset.
- Etichette di importazione: l'etichetta da applicare agli eventi di questo feed.
Fai clic su Avanti.
Rivedi la configurazione del nuovo feed nella schermata Concludi e poi fai clic su Invia.
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logica |
---|---|---|
actions_executed |
security_result.action |
Se actions_executed è "waf,forward" o "waf,redirect", imposta il valore su "ALLOW". Se actions_executed è "waf", imposta "BLOCK". |
chosen_cert_arn |
principal.user.attribute.labels |
Se chosen_cert_arn contiene "sessione", mappa il relativo valore a security_result.description . In caso contrario, crea un'etichetta con chiave "ARN" e valore chosen_cert_arn e aggiungila all'array principal.user.attribute.labels . |
chosen_cert_arn |
security_result.description |
Se chosen_cert_arn contiene "sessione", mappa il relativo valore a questo campo. |
client_ip |
principal.asset.ip |
Mappatura diretta. |
client_ip |
principal.ip |
Mappatura diretta. |
client_port |
principal.port |
Mappatura diretta. |
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 |
Vari | Analizzati utilizzando 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 "Supporto JavaScript" e il valore da cs2Label . |
data.cs3Label (CEF) |
additional.fields |
Crea una coppia chiave-valore con la chiave "Assistenza CO" e il valore da cs3Label . |
data.cs4Label (CEF) |
additional.fields |
Crea una coppia chiave-valore con chiave "VID" e valore da cs4Label . |
data.cs5Label (CEF) |
additional.fields |
Crea una coppia chiave-valore con chiave "clappsig" e valore da cs5Label . |
data.cs6Label (CEF) |
additional.fields |
Crea una coppia chiave-valore con chiave "clapp" e valore da cs6Label . |
data.cs7Label (CEF) |
additional.fields |
Crea una coppia chiave-valore con chiave "latitude" e valore da cs7Label . |
data.deviceExternalId (CEF) |
about.asset.asset_id |
Utilizzato nell'ambito 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 |
Mappatura diretta. |
data.dst_ip |
target.ip |
Mappatura diretta. |
data.dst_port |
target.port |
Mappatura diretta. |
data.elb |
target.resource.id |
Mappatura diretta. |
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 a 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 da 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 di crittografia viene estratta utilizzando grok e mappata. |
data.xff (CEF) |
principal.ip |
Mappato direttamente dal campo CEF. |
domain_name |
principal.administrative_domain |
Mappatura diretta. |
http_method |
network.http.method |
Mappatura diretta. |
log_type |
metadata.log_type |
Mappatura diretta. |
message |
Vari | Analizzati utilizzando pattern Grok per estrarre più campi. Consulta le altre righe per mappature specifiche. |
received_bytes |
network.received_bytes |
Mappatura diretta. |
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 |
Mappata 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 |
Mappatura diretta. |
ssl_cipher |
network.tls.cipher |
Mappatura diretta. |
ssl_protocol |
network.tls.version |
Mappatura diretta. |
target_group_arn |
target.group.group_display_name |
Mappatura diretta. |
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 |
Mappata direttamente dopo l'analisi della data. |
trace_id |
metadata.product_log_id |
Mappato direttamente dopo la rimozione di "Root=". |
url |
network.http.referral_url |
Mappatura diretta. |
user_agent |
network.http.user_agent |
Mappatura diretta. |
(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 di destinazione, nome host o IP di destinazione e su "NETWORK_HTTP" in caso contrario. |
(Parser) | metadata.product_name |
Imposta su "AWS Elastic Load Balancer". |
(Parser) | metadata.vendor_name |
Impostato su "AMAZON". |
Modifiche
2024-03-22
- È stato aggiunto un nuovo pattern Grok per supportare il nuovo pattern dei log JSON.
- È stato aggiunto il supporto per i log dei pattern CEF.
- "dst_ip" è stato mappato a "target.ip".
- "dst_port" è stato mappato a "target.port".
- "sip" è stato mappato a "principal.ip".
- "request_processing_time", "target_processing_time", "siteid", "fileId" e "response_processing_time" sono stati mappati a "security_result.detection.fields".
- Mappature allineate per "principal.ip" e "principal.asset.ip".
- Mappature allineate per "target.ip" e "target.asset.ip".
- Mappature allineate per "target.hostname" e "target.asset.hostname".
- "cipher" è stato mappato a "network.tls.cipher".
- "version" è stato mappato a "network.tls.version".
- "Cliente" è stato mappato a "principal.user.user_display_name".
2022-05-27
- Miglioramento: il valore memorizzato in metadata.product_name è stato modificato in "AWS Elastic Load Balancer".
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.