Coletar registros do WAF do Imperva
Este documento explica como coletar registros do firewall de aplicativo da Web (WAF, na sigla em inglês) do Imperva para as operações de segurança do Google usando uma API (pull) ou o Amazon S3 (push). O analisador transforma registros dos formatos SYSLOG+KV, JSON, CEF e LEEF em um modelo de dados unificado (UDM). Ele processa várias estruturas de registro, extrai campos relevantes, os normaliza em atributos do UDM e enriquece os dados com informações contextuais para melhorar a análise de segurança.
Antes de começar
- Selecione o tipo de transferência (API ou Amazon S3) que melhor se adapta aos seus requisitos de configuração.
- Verifique se você tem uma instância do Google SecOps.
- Verifique se você tem acesso privilegiado à AWS.
- Verifique se você tem acesso privilegiado ao Imperva WAF.
Coletar registros do Imperva WAF usando a API
Configurar um usuário somente leitura para o Imperva WAF
- Faça login no Imperva Console com uma conta privilegiada.
- Acesse Configurações > Usuários e funções.
- Clique em Adicionar usuário.
- Preencha os campos obrigatórios:
- Nome de usuário: insira um nome de usuário exclusivo.
- Senha: defina uma senha forte.
- E-mail: informe o endereço de e-mail do usuário.
- Na seção Papéis, selecione a função Leitor.
- Clique em Salvar para criar o usuário com acesso somente leitura.
Opcional: configure o usuário do leitor como somente API
- Na lista Usuários, localize o usuário recém-criado.
- Clique no botão Ações (três pontos) ao lado do nome do usuário.
- Selecione Definir como somente API.
Gerar o ID e a chave da API
- Na lista Usuários, selecione o usuário recém-criado.
- Selecione Configurações e clique em Chaves de API.
- Clique em Adicionar chave de API.
- Preencha os campos obrigatórios:
- Nome: insira um nome descritivo para a chave de API.
- Opcional: Descrição: forneça uma descrição opcional.
- Na lista A chave da API vai expirar em, selecione Nunca.
- Para ativar, selecione Status.
- Clique em Salvar.
O sistema mostra o ID e a chave da API. Copie e salve essas credenciais, porque elas não serão mostradas novamente.
Configurar um feed no Google SecOps para ingerir registros do Imperva WAF usando a API de terceiros
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo.
- No campo Nome do feed, insira um nome para o feed. Por exemplo, Logs do Imperva WAF.
- Selecione API de terceiros como o Tipo de origem.
- Selecione Imperva como o Tipo de registro.
- Clique em Próxima.
- Especifique valores para os seguintes parâmetros de entrada:
- Cabeçalho HTTP de autenticação: insira o ID e a chave da API do Imperva em duas linhas:
apiId:<YOUR_API_ID>
eapiKey:<YOUR_API_KEY>
. - Namespace do recurso: o namespace do recurso.
- Rótulos de ingestão: o rótulo aplicado aos eventos desse feed.
- Cabeçalho HTTP de autenticação: insira o ID e a chave da API do Imperva em duas linhas:
- Clique em Próxima.
- Revise a configuração do feed na tela Finalizar e clique em Enviar.
Coletar registros do Imperva WAF usando o Amazon S3
Configurar o AWS IAM e o S3
- Crie um bucket do Amazon S3 seguindo este guia do usuário: Criar um bucket.
- Salve o Nome e a Região do bucket para uso futuro.
- Crie um usuário seguindo este guia: Como criar um usuário do IAM.
- Selecione o Usuário criado.
- Selecione a guia Credenciais de segurança.
- Clique em Criar chave de acesso na seção Chaves de acesso.
- Selecione Serviço de terceiros como o caso de uso.
- Clique em Próxima.
- Opcional: adicione uma tag de descrição.
- Clique em Criar chave de acesso.
- Clique em Download .csv file e salve a chave de acesso e a chave secreta de acesso para uso posterior.
- Clique em Concluído.
- Selecione a guia Permissões.
- Clique em Adicionar permissões na seção Políticas de permissões.
- Selecione Adicionar permissões.
- Selecione Anexar políticas diretamente.
- Pesquise e selecione a política AmazonS3FullAccess.
- Clique em Próxima.
- Clique em Adicionar permissões
Configurar a conexão do Amazon S3 do Imperva WAF
- Faça login no Imperva Console com uma conta privilegiada.
- Acesse Registros > Configuração de registro.
- Selecione Amazon S3.
- Preencha os campos obrigatórios:
- Chave de acesso
- Chave do secret
- Caminho: insira o caminho no seguinte formato:
<Amazon S3 bucket name>/<log folder>
. Por exemplo:MyBucket/MyIncapsulaLogFolder
.
- Clique em Testar conexão para realizar um ciclo de teste completo em que um arquivo de teste é transferido para a pasta designada.
- Selecione o formato dos arquivos de registro como CEF.
- Por padrão, os arquivos de registro são compactados. Defina a opção para não compactar arquivos.
Configurar um feed no Google SecOps para ingerir registros do Imperva WAF do Amazon S3
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo.
- No campo Nome do feed, insira um nome para o feed, por exemplo,
Imperva WAF Logs
. - Selecione Amazon S3 como o Tipo de origem.
- Selecione Imperva como o Tipo de registro.
- Clique em Próxima.
Especifique valores para os seguintes parâmetros de entrada:
- Região: a região em que o bucket do Amazon S3 está localizado.
- URI do S3: o URI do bucket.
s3://your-log-bucket-name/
- Substitua
your-log-bucket-name
pelo nome real do bucket.
- O URI é: selecione Diretório ou Diretório que inclui subdiretórios.
- Opções de exclusão da origem: selecione a opção de exclusão de acordo com sua preferência.
- ID da chave de acesso: a chave de acesso do usuário com acesso ao bucket do S3.
- Chave de acesso secreta: a chave secreta do usuário com acesso ao bucket do S3.
- Namespace do recurso: o namespace do recurso.
- Rótulos de ingestão: o rótulo a ser aplicado aos eventos desse feed.
Clique em Próxima.
Revise a configuração do novo feed na tela Finalizar e clique em Enviar.
Tabela de mapeamento do UDM
Campo de registro | Mapeamento de UDM | Lógica |
---|---|---|
account_id | target.user.userid | O ID da conta do objeto JSON |
ato | security_result.action | Se act for allowed , alert , começar com REQ_PASSED ou começar com REQ_CACHED , defina como ALLOW . Se act for deny , blocked , começar com REQ_BLOCKED ou começar com REQ_CHALLENGE , defina como BLOCK . Se act corresponder à regex (?i)REQ_BAD , defina como FAIL . Caso contrário, defina como UNKNOWN_ACTION . |
app | network.application_protocol | Renomeado de kv.app . Convertido em letras maiúsculas. |
calCountryOrRegion | principal.location.country_or_region | Renomeado de calCountryOrRegion . |
gato | security_result.action_details | Se cat começar com REQ_PASSED ou REQ_CACHED , defina action como ALLOW e action_details como uma descrição com base no valor de cat . Se cat começar com REQ_BAD , defina action como FAIL e action_details como uma descrição com base no valor de cat . Se cat começar com REQ_BLOCKED ou REQ_CHALLENGE , defina action como BLOCK e action_details como uma descrição com base no valor de cat . |
cicode | principal.location.city | Renomeado de cicode . |
classified_client | security_result.detection_fields | Se classified_client não estiver vazio, crie uma nova entrada detection_fields com a chave classified_client e o valor classified_client . |
client.domain | principal.hostname, principal.asset.hostname | Renomeado de client.domain . |
client.geo.country_iso_code | principal.location.country_or_region | Renomeado de client.geo.country_iso_code . |
client.ip | principal.ip, principal.asset.ip | Mesclados em principal.ip e principal.asset.ip . |
cn1 | network.http.response_code | Renomeado de cn1 . Convertido em número inteiro. |
context_key | target.resource.name | Renomeado de context_key . |
país | principal.location.country_or_region | Renomeado de country . |
credentials_leaked | security_result.detection_fields | Convertido em string. Se não estiver vazio, crie uma nova entrada detection_fields com a chave credentials_leaked e o valor credentials_leaked . |
cs1 | security_result.detection_fields | Se cs1 não estiver vazio, NA ou ", create a new detection_fieldsentry with key cs1Labeland value cs1". |
cs1Label | security_result.detection_fields | Usado como a chave da entrada detection_fields criada a partir de cs1 . |
cs2 | security_result.detection_fields | Se cs2 não estiver vazio, crie uma nova entrada detection_fields com a chave cs2Label e o valor cs2 . |
cs2Label | security_result.detection_fields | Usado como a chave da entrada detection_fields criada a partir de cs2 . |
cs3 | security_result.detection_fields | Se cs3 não estiver vazio, - ou ", create a new detection_fieldsentry with key cs3Labeland value cs3". |
cs3Label | security_result.detection_fields | Usado como a chave da entrada detection_fields criada a partir de cs3 . |
cs4 | security_result.detection_fields | Se cs4 não estiver vazio, crie uma nova entrada detection_fields com a chave cs4Label e o valor cs4 . |
cs4Label | security_result.detection_fields | Usado como a chave da entrada detection_fields criada a partir de cs4 . |
cs5 | security_result.detection_fields | Se cs5 não estiver vazio, crie uma nova entrada detection_fields com a chave cs5Label e o valor cs5 . |
cs5Label | security_result.detection_fields | Usado como chave para a entrada detection_fields criada a partir de cs5 . |
cs6 | principal.application | Renomeado de cs6 . |
cs7 | principal.location.region_latitude | Se cs7Label for latitude , ele será renomeado como principal.location.region_latitude . Convertido em flutuante. |
cs7Label | Se cs7Label for latitude , será usado para determinar o mapeamento de cs7 . |
|
cs8 | principal.location.region_longitude | Se cs8Label for longitude , ele será renomeado como principal.location.region_longitude . Convertido em flutuante. |
cs8Label | Se cs8Label for longitude , será usado para determinar o mapeamento de cs8 . |
|
cs9 | security_result.rule_name, extensions.vulns.vulnerabilities.name | Se cs9 não estiver vazio, defina como security_result.rule_name e crie uma nova entrada vulnerabilities com o nome cs9 . |
Cliente | target.user.user_display_name | Renomeado de Customer . |
declared_client | security_result.detection_fields | Se declared_client não estiver vazio, crie uma nova entrada detection_fields com a chave declared_client e o valor declared_client . |
description | security_result.threat_name | Renomeado de description . |
deviceExternalId | network.community_id | Renomeado de deviceExternalId . |
deviceReceiptTime | metadata.event_timestamp | Analisado como uma data e definido como metadata.event_timestamp . Se estiver vazio, log_timestamp ou kv.start será usado. |
dhost | target.hostname | Renomeado de kv.dhost . |
dproc | security_result.category_details | Renomeado de dproc . |
dpt | target.port | Renomeado de kv.dpt . Convertido em número inteiro. |
dst | target.ip e target.asset.ip | Se dst não estiver vazio, ele será mesclado em target.ip e target.asset.ip . |
dstPort | target.port | Renomeado de dstPort . Convertido em número inteiro. |
duser | target.user.userid | Se duser não corresponder ao regex .*?Alert.* e não estiver vazio, será renomeado como target.user.userid . |
end | security_result.detection_fields | Se end não estiver vazio, crie uma nova entrada detection_fields com a chave event_end_time e o valor end . |
event.id | O ID do evento do objeto JSON | |
event.provider | principal.user.user_display_name | Renomeado de event.provider . |
failed_logins_last_24h | security_result.detection_fields | Convertido em string. Se não estiver vazio, crie uma nova entrada detection_fields com a chave failed_logins_last_24h e o valor failed_logins_last_24h . |
fileId | network.session_id | Renomeado de fileId . |
filePermission | security_result.detection_fields | Se filePermission não estiver vazio, crie uma nova entrada detection_fields com a chave filePermission e o valor filePermission . |
fileType | security_result.detection_fields | Se fileType não estiver vazio, crie uma nova entrada detection_fields com a chave fileType e o valor fileType . |
Impressão digital | security_result.detection_fields | Se fingerprint não estiver vazio, crie uma nova entrada detection_fields com a chave log_imperva_fingerprint e o valor fingerprint . |
flexString1 | network.http.response_code | Renomeado de kv.flexString1 . Convertido em número inteiro. |
http.request.body.bytes | network.sent_bytes | Convertido em número inteiro sem sinal. Renomeado de http.request.body.bytes . |
http.request.method | network.http.method | Renomeado de http.request.method . |
imperva.abp.apollo_rule_versions | security_result.detection_fields | Para cada entrada em imperva.abp.apollo_rule_versions , crie uma nova entrada detection_fields com a chave apollo_rule_versions_{index} e o valor igual à entrada. |
imperva.abp.bot_behaviors | security_result.detection_fields | Para cada entrada em imperva.abp.bot_behaviors , crie uma nova entrada detection_fields com a chave bot_behaviors_{index} e o valor igual à entrada. |
imperva.abp.bot_deciding_condition_ids | security_result.detection_fields | Para cada entrada em imperva.abp.bot_deciding_condition_ids , crie uma nova entrada detection_fields com a chave bot_deciding_condition_ids_{index} e o valor igual à entrada. |
imperva.abp.bot_deciding_condition_names | security_result.detection_fields | Para cada entrada em imperva.abp.bot_deciding_condition_names , crie uma nova entrada detection_fields com a chave bot_deciding_condition_names_{index} e o valor igual à entrada. |
imperva.abp.bot_triggered_condition_ids | security_result.detection_fields | Para cada entrada em imperva.abp.bot_triggered_condition_ids , crie uma nova entrada detection_fields com a chave bot_triggered_condition_ids_{index} e o valor igual à entrada. |
imperva.abp.bot_triggered_condition_names | security_result.detection_fields | Para cada entrada em imperva.abp.bot_triggered_condition_names , crie uma nova entrada detection_fields com a chave bot_triggered_condition_names_{index} e o valor igual à entrada. |
imperva.abp.bot_violations | security_result.detection_fields | Para cada entrada em imperva.abp.bot_violations , crie uma nova entrada detection_fields com a chave bot_violations_{index} e o valor igual à entrada. |
imperva.abp.customer_request_id | network.session_id | Renomeado de imperva.abp.customer_request_id . |
imperva.abp.headers_accept_encoding | security_result.detection_fields | Se imperva.abp.headers_accept_encoding não estiver vazio, crie uma nova entrada detection_fields com a chave Accept Encoding e o valor imperva.abp.headers_accept_encoding . |
imperva.abp.headers_accept_language | security_result.detection_fields | Se imperva.abp.headers_accept_language não estiver vazio, crie uma nova entrada detection_fields com a chave Accept Language e o valor imperva.abp.headers_accept_language . |
imperva.abp.headers_connection | security_result.detection_fields | Se imperva.abp.headers_connection não estiver vazio, crie uma nova entrada detection_fields com a chave headers_connection e o valor imperva.abp.headers_connection . |
imperva.abp.headers_referer | network.http.referral_url | Renomeado de imperva.abp.headers_referer . |
imperva.abp.hsig | security_result.detection_fields | Se imperva.abp.hsig não estiver vazio, crie uma nova entrada detection_fields com a chave hsig e o valor imperva.abp.hsig . |
imperva.abp.monitor_action | security_result.action, security_result.severity | Se imperva.abp.monitor_action corresponder à regex (?i)allow , defina security_action como ALLOW e severity como INFORMATIONAL . Se imperva.abp.monitor_action corresponder à regex (?i)captcha ou (?i)block , defina security_action como BLOCK . |
imperva.abp.pid | principal.process.pid | Renomeado de imperva.abp.pid . |
imperva.abp.policy_id | security_result.detection_fields | Se imperva.abp.policy_id não estiver vazio, crie uma nova entrada detection_fields com a chave Policy Id e o valor imperva.abp.policy_id . |
imperva.abp.policy_name | security_result.detection_fields | Se imperva.abp.policy_name não estiver vazio, crie uma nova entrada detection_fields com a chave Policy Name e o valor imperva.abp.policy_name . |
imperva.abp.random_id | additional.fields | Se imperva.abp.random_id não estiver vazio, crie uma nova entrada additional.fields com a chave Random Id e o valor imperva.abp.random_id . |
imperva.abp.request_type | principal.labels | Se imperva.abp.request_type não estiver vazio, crie uma nova entrada principal.labels com a chave request_type e o valor imperva.abp.request_type . |
imperva.abp.selector | security_result.detection_fields | Se imperva.abp.selector não estiver vazio, crie uma nova entrada detection_fields com a chave selector e o valor imperva.abp.selector . |
imperva.abp.selector_derived_id | security_result.detection_fields | Se imperva.abp.selector_derived_id não estiver vazio, crie uma nova entrada detection_fields com a chave selector_derived_id e o valor imperva.abp.selector_derived_id . |
imperva.abp.tls_fingerprint | security_result.description | Renomeado de imperva.abp.tls_fingerprint . |
imperva.abp.token_id | target.resource.product_object_id | Renomeado de imperva.abp.token_id . |
imperva.abp.zuid | additional.fields | Se imperva.abp.zuid não estiver vazio, crie uma nova entrada additional.fields com a chave zuid e o valor imperva.abp.zuid . |
imperva.additional_factors | additional.fields | Para cada entrada em imperva.additional_factors , crie uma nova entrada additional.fields com a chave additional_factors_{index} e o valor igual à entrada. |
imperva.audit_trail.event_action | security_result.detection_fields | Se imperva.audit_trail.event_action não estiver vazio, crie uma nova entrada detection_fields com a chave imperva.audit_trail.event_action e o valor imperva.audit_trail.event_action_description . |
imperva.audit_trail.event_action_description | security_result.detection_fields | Usado como o valor da entrada detection_fields criada a partir de imperva.audit_trail.event_action . |
imperva.audit_trail.event_context | security_result.detection_fields | Se imperva.audit_trail.event_context não estiver vazio, crie uma nova entrada detection_fields com a chave imperva.audit_trail.event_context e o valor imperva.audit_trail.event_context_description . |
imperva.audit_trail.event_context_description | security_result.detection_fields | Usado como o valor da entrada detection_fields criada a partir de imperva.audit_trail.event_context . |
imperva.country | principal.location.country_or_region | Renomeado de imperva.country . |
imperva.declared_client | security_result.detection_fields | Se imperva.declared_client não estiver vazio, crie uma nova entrada detection_fields com a chave declared_client e o valor imperva.declared_client . |
imperva.device_reputation | additional.fields | Para cada entrada em imperva.device_reputation , crie uma nova entrada additional.fields com a chave device_reputation e um valor de lista que a contenha. |
imperva.domain_risk | security_result.detection_fields | Se imperva.domain_risk não estiver vazio, crie uma nova entrada detection_fields com a chave domain_risk e o valor imperva.domain_risk . |
imperva.failed_logins_last_24h | security_result.detection_fields | Convertido em string. Se não estiver vazio, crie uma nova entrada detection_fields com a chave failed_logins_last_24h e o valor failed_logins_last_24h . |
imperva.fingerprint | security_result.detection_fields | Se imperva.fingerprint não estiver vazio, crie uma nova entrada detection_fields com a chave log_imperva_fingerprint e o valor imperva.fingerprint . |
imperva.ids.account_id | metadata.product_log_id | Renomeado de imperva.ids.account_id . |
imperva.ids.account_name | metadata.product_event_type | Renomeado de imperva.ids.account_name . |
imperva.ids.site_id | additional.fields | Se imperva.ids.site_id não estiver vazio, crie uma nova entrada additional.fields com a chave site_id e o valor imperva.ids.site_id . |
imperva.ids.site_name | additional.fields | Se imperva.ids.site_name não estiver vazio, crie uma nova entrada additional.fields com a chave site_name e o valor imperva.ids.site_name . |
imperva.referrer | network.http.referral_url | Renomeado de imperva.referrer . |
imperva.request_session_id | network.session_id | Renomeado de imperva.request_session_id . |
imperva.request_user | security_result.detection_fields | Se imperva.request_user não estiver vazio, crie uma nova entrada detection_fields com a chave request_user e o valor imperva.request_user . |
imperva.risk_level | security_result.severity_details | Renomeado de imperva.risk_level . |
imperva.risk_reason | security_result.description | Renomeado de imperva.risk_reason . |
imperva.significant_domain_name | security_result.detection_fields | Se imperva.significant_domain_name não estiver vazio, crie uma nova entrada detection_fields com a chave significant_domain_name e o valor imperva.significant_domain_name . |
imperva.violated_directives | security_result.detection_fields | Para cada entrada em imperva.violated_directives , crie uma nova entrada detection_fields com a chave violated_directives e o valor igual à entrada. |
em | network.received_bytes | Renomeado de in . Convertido em número inteiro sem sinal. |
log_timestamp | metadata.event_timestamp | Se deviceReceiptTime e kv.start estiverem vazios, defina como metadata.event_timestamp . |
mensagem | metadata.description | Se message não estiver vazio e event.provider , imperva.ids.account_name e client.ip estiverem vazios, defina como metadata.description . |
postbody | security_result.detection_fields | Se postbody não estiver vazio, crie uma nova entrada detection_fields com a chave post_body_info e o valor postbody . |
proto | network.application_protocol | Renomeado de proto . |
protoVer | network.tls.version, network.tls.cipher | Se protoVer não estiver vazio, será analisado para extrair tls_version e tls_cipher , que serão renomeados como network.tls.version e network.tls.cipher , respectivamente. |
solicitação | target.url | Renomeado de kv.request . |
requestClientApplication | network.http.user_agent | Renomeado de requestClientApplication . |
requestMethod | network.http.method | Renomeado de requestMethod . Convertido em letras maiúsculas. |
resource_id | target.resource.id | Renomeado de resource_id . |
resource_type_key | target.resource.type | Renomeado de resource_type_key . |
rt | metadata.event_timestamp | Analisado para extrair deviceReceiptTime , que é analisado como uma data e definido como metadata.event_timestamp . |
security_result.action | security_result.action | Mesclado com o valor do campo _action . |
security_result.severity | security_result.severity | Se sevs for error ou warning , defina como HIGH . Se sevs for critical , defina como CRITICAL . Se sevs for medium ou notice , defina como MEDIUM . Se sevs for information ou info , defina como LOW . |
server.domain | target.hostname, target.asset.hostname | Renomeado de server.domain . |
server.geo.name | target.location.name | Renomeado de server.geo.name . |
gravidade, | security_result.threat_id | Renomeado de severity . |
siteid | security_result.detection_fields | Se siteid não estiver vazio, crie uma nova entrada detection_fields com a chave siteid e o valor siteid . |
sourceServiceName | target.hostname | Renomeado de kv.sourceServiceName . |
spt | principal.port | Renomeado de kv.spt . Convertido em número inteiro. |
src | principal.ip, principal.asset.ip | Se src não estiver vazio, ele será mesclado em principal.ip e principal.asset.ip . |
srcPort | principal.port | Renomeado de srcPort . Convertido em número inteiro. |
start | security_result.detection_fields, metadata.event_timestamp | Se start não estiver vazio, crie uma nova entrada detection_fields com a chave event_start_time e o valor start . Também é analisado como uma data e definido como metadata.event_timestamp se deviceReceiptTime estiver vazio. |
successful_logins_last_24h | security_result.detection_fields | Convertido em string. Se não estiver vazio, crie uma nova entrada detection_fields com a chave successful_logins_last_24h e o valor successful_logins_last_24h . |
suid | target.user.userid | Renomeado de suid . |
tempo | metadata.event_timestamp | Convertido em string. Analisado como uma data e definido como metadata.event_timestamp . |
type_key | metadata.product_event_type | Renomeado de type_key . |
url | target.process.file.full_path | Se url.path não estiver vazio ou / , defina como target.process.file.full_path . |
url | target.url | Renomeado de url . Se qstr não estiver vazio, será anexado a url com um separador ? . |
user.email | principal.user.email_addresses | Se user.email não estiver vazio e corresponder ao regex ^.+@.+$ , ele será mesclado em principal.user.email_addresses . |
user_agent | network.http.user_agent | Renomeado de user_agent . |
user_agent.original | network.http.parsed_user_agent | Se user_agent.original não estiver vazio ou * , será convertido em parseduseragent e renomeado como network.http.parsed_user_agent . |
user_details | principal.user.email_addresses | Se user_details não estiver vazio e corresponder ao regex ^.+@.+$ , ele será mesclado em principal.user.email_addresses . |
user_id | principal.user.userid | Renomeado de user_id . |
ver | network.tls.version, network.tls.cipher | Se ver não estiver vazio, será analisado para extrair tls_version e tls_cipher , que serão renomeados como network.tls.version e network.tls.cipher , respectivamente. |
xff | intermediary.ip, intermediary.asset.ip, intermediary.hostname, intermediary.asset.hostname | Se xff não estiver vazio, será processado para extrair endereços IP e nomes de host. Os endereços IP são mesclados em intermediary.ip e intermediary.asset.ip . Os nomes de host são definidos como intermediary.hostname e intermediary.asset.hostname . |
Alterações
2025-01-16
Melhoria:
log.imperva.audit_trail.resource_name
foi mapeado paratarget.resource.name
.
2024-11-14
Melhoria:
- Foi adicionado suporte para processar o novo formato de registro.
2024-10-10
Melhoria:
metadata.vendor_name
foi mapeado paraImperva Cloud WAF
.
2024-10-03
Melhoria:
cn1
foi mapeado paranetwork.http.response_code
.
2024-09-05
Melhoria:
- Foi adicionado suporte para processar o novo formato de registro.
2024-08-27
Melhoria:
- O mapeamento de
log.imperva.ids.account_name
foi alterado demetadata.product_event_type
paratarget.user.user_display_name
.
2024-06-25
Melhoria:
- Adicionamos suporte para processar registros JSON.
2024-04-02
Melhoria:
log.imperva.request_user
foi mapeado parasecurity_result.detection_fields
.log.imperva.classified_client
foi mapeado parasecurity_result.detection_fields
.
2024-02-26
Melhoria:
log.imperva.request_session_id
foi mapeado paranetwork.session_id
.- Mapeamos
log.imperva.successful_logins_last_24h
,log.imperva.path
elog.imperva.failed_logins_last_24h
parasecurity_result.detection_fields
. - Mapeamento de
log.imperva.risk_reason
parasecurity_result.severity_details
esecurity_result.severity
. additional_factor
,log.imperva.device_reputation
elog.imperva.credentials_leaked
foram mapeados paraadditional.fields
.log.imperva.fingerprint
foi mapeado parasecurity_result.description
.log.imperva.referrer
foi mapeado paranetwork.http.referral_url
.- Mapeou
log.imperva.classified_client
paraprincipal.process.file.full_path
2024-02-06
Melhoria:
- Inicializou
accept_encoding_label
,site_name_label
,random_id_label
,request_type_label
,accept_language_label
,headers_connection_label
,zuid_labels
,site_id_label
,policy_id
,policy_name
,selector_derived_id
,hsig
,selector
,detection_fields_event_action
,detection_fields_event_context
,detection_fields_significant_domain_name
edetection_fields_domain_risk
como nulo dentro defor loop
para json_array.
2024-01-27
Melhoria:
description
foi mapeado parasecurity_result.threat_name
.severity
foi mapeado parasecurity_result.threat_id
.kv.src
,src
elog.client.ip
foram mapeados paraprincipal.asset.ip
.- Mapeamento de
kv.dst
edst
paratarget.asset.ip
. kv.dvc
foi mapeado paraabout.asset.ip
.- Mapeamento de
kv.cs9
ecs9
parasecurity_result.rule_name
. - Mapeamento de
kv.fileType
efileType
parasecurity_result.rule_type
. dst
foi mapeado paratarget.asset.ip
.- Mapeamento de
xff
eforwardedIp
paraintermediary.asset.ip
. log.client.domain
foi mapeado paraprincipal.asset.hostname
.log.server.domain
foi mapeado paratarget.asset.hostname
.
2023-10-16
Correção de bugs:
security_result
esecurity_action
foram inicializados como nulos dentro defor loop
para json_array.- Foi adicionada uma verificação de valor nulo antes da mesclagem de
security_action
comsecurity_result.action
. - Quando
log.imperva.abp.monitor_action
éblock
,security_action
é mapeado paraBLOCK
.
2023-09-26
Melhoria:
- Mapeamos
significant_domain_name
,domain_risk
eviolated_directives
parasecurity_result.detection_fields
nos registros do CSP.
2023-08-07
Correção de bugs:
- Foi adicionado suporte para analisar matrizes de registros JSON.
- O padrão Grok foi adicionado para verificar o nome do host antes de mapear
xff
paraintermediary.hostname
.
2023-06-16
Correção de bugs:
imperva.audit_trail.event_action
foi mapeado parasecurity_result.detection_fields
.imperva.audit_trail.event_action_description
foi mapeado parasecurity_result.detection_fields
.imperva.audit_trail.event_context
foi mapeado parasecurity_result.detection_fields
.imperva.audit_trail.event_context_description
foi mapeado parasecurity_result.detection_fields
.- Correção de problemas de análise de carimbo de data/hora.
- Registros malformados descartados.
2023-06-16
Correção de bugs:
imperva.audit_trail.event_action
foi mapeado parasecurity_result.detection_fields
.imperva.audit_trail.event_action_description
foi mapeado parasecurity_result.detection_fields
.imperva.audit_trail.event_context
foi mapeado parasecurity_result.detection_fields
.imperva.audit_trail.event_context_description
foi mapeado parasecurity_result.detection_fields
.- Correção de problemas de análise de carimbo de data/hora.
- Registros malformados descartados.
2023-06-08
Melhoria:
imperva.abp.apollo_rule_versions
foi mapeado parasecurity_result.detection_fields
.imperva.abp.bot_violations
foi mapeado parasecurity_result.detection_fields
.imperva.abp.bot_behaviors
foi mapeado parasecurity_result.detection_fields
.imperva.abp.bot_deciding_condition_ids
foi mapeado parasecurity_result.detection_fields
.imperva.abp.bot_deciding_condition_names
foi mapeado parasecurity_result.detection_fields
.imperva.abp.bot_triggered_condition_ids
foi mapeado parasecurity_result.detection_fields
.imperva.abp.bot_triggered_condition_names
foi mapeado parasecurity_result.detection_fields
.
2023-04-26
Melhoria:
- Definiu o campo
kv.src
nos dados de estado. kvdata.ver
foi mapeado paranetwork.tls.version
e network.tls.cipher.kvdata.sip
foi mapeado paraprincipal.ip
.kvdata.spt
foi mapeado paraprincipal.port
.kvdata.act
foi mapeado para "security_result.action_details".kvdata.app
foi mapeado para "network.application_protocol".kvdata.requestMethod
foi mapeado paranetwork.http.method
.
2023-02-04
Melhoria:
- Para o campo
deviceReceiptTime
, foi adicionado rebase = true emevent.timestamp
.
2023-01-19
Melhoria:
- Adição de suporte aos registros do analisador com os seguintes mapeamentos.
event.provider
foi mapeado paraprincipal.user.userid
.client.ip
foi mapeado paraprincipal.ip
.client.domain
foi mapeado paraprincipal.hostname
.imperva.abp.request_type
foi mapeado paraprincipal.labels
.imperva.abp.pid
foi mapeado paraprincipal.process.pid
.client.geo.country_iso_code
foi mapeado paraprincipal.location.country_or_region
.server.domain
foi mapeado paratarget.hostname
.server.geo.name
foi mapeado paratarget.location.name
.url.path
foi mapeado paratarget.process.file.full_path
.imperva.abp.customer_request_id
foi mapeado paratarget.resource.id
.imperva.abp.token_id
foi mapeado paratarget.resource.product_object_id
.imperva.abp.random_id
foi mapeado paraadditional.fields
.http.request.method
foi mapeado paranetwork.http.method
.user_agent.original
foi mapeado paranetwork.http.parsed_user_agent
.imperva.abp.headers_referer
foi mapeado paranetwork.http.referral_url
.imperva.abp.zuid
foi mapeado paraadditional.fields
.imperva.ids.site_name
foi mapeado paraadditional.fields
.imperva.ids.site_id
foi mapeado paraadditional.fields
.imperva.ids.account_name
foi mapeado parametadata.product_event_type
.imperva.ids.account_id
foi mapeado parametadata.product_log_id
.imperva.abp.headers_accept_encoding
foi mapeado parasecurity_result.detection_fields
.imperva.abp.headers_accept_language
foi mapeado parasecurity_result.detection_fields
.- Mapeou
imperva.abp.headers_connection
parasecurity_result.detection_fields
imperva.abp.policy_id
foi mapeado parasecurity_result.detection_fields
.imperva.abp.policy_name
foi mapeado parasecurity_result.detection_fields
.imperva.abp.selector_derived_id
foi mapeado parasecurity_result.detection_fields
.imperva.abp.monitor_action
foi mapeado parasecurity_result.action
.
2022-06-28
Melhoria:
- O mapeamento vendor.name = Imperva e product.name = Web Application Firewall para todos os registros
metadata.event_type
foi alterado, em quesrc
éDistributed
, deGENERIC_EVENT
paraUSER_UNCATEGORIZED
metadata.event_type
foi alterado paraUSER_UNCATEGORIZED
eUSER_STATS
2022-06-20
- O padrão de grok foi modificado para o campo
rt
. - Correção de bugs: melhorias em security_result.action.
- REQ_PASSED: se a solicitação foi roteada para o servidor da Web do site (security_result.action = 'ALLOW').
- REQ_CACHED_X: se uma resposta foi retornada do cache do data center (security_result.action = 'ALLOW').
- REQ_BAD_X: se ocorreu um erro de protocolo ou de rede (security_result.action = 'FAIL').
- REQ_CHALLENGE_X: se um desafio foi retornado ao cliente (security_result.action = 'BLOCK').
- REQ_BLOCKED_X: se a solicitação foi bloqueada (security_result.action = 'BLOCK').
2022-06-14
Correção de bugs:
- Adicionamos o gsub e modificamos o filtro kv para evitar o mapeamento incorreto dos campos "cs1Label", "cs2Label" e "cs3Label" mapeados para o campo "security_result.detection_fields" do UDM.
2022-05-26
Correção de bugs:
- O nome da chave e o caractere de dois pontos foram removidos do valor dos campos de detecção.
2022-05-10
Melhoria:
- Mapeou os seguintes campos:
- 'cs1', 'cs2', 'cs3', 'cs4', 'cs5', 'fileType', 'filePermission' para 'security_result.detection_fields'.
- "cs7" para "principal.location.region_latitude".
- "cs8" para "principal.location.region_longitude".
- 'cn1', 'cn2' para 'security_result.detection_fields' nos registros de formato CEF.
- "act" para "security_result.action" e "security_result.action_details" para registros no formato CEF.
- "app" para "network.application_protocol" para registros no formato CEF.
- "requestClientApplication" para "network.http.user_agent" para registros de formato CEF.
- "dvc" para "about.ip" para registros de formato CEF.
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.