Coletar registros do WAF FortiWeb
Este documento descreve como coletar os registros do firewall de aplicativos da Web (WAF) do FortiWeb usando um encaminhador do Google Security Operations.
Para mais informações, consulte Visão geral da ingestão de dados no Google Security Operations.
Um rótulo de ingestão identifica o analisador que normaliza dados de registro brutos para o formato UDM estruturado. As informações neste documento se aplicam ao analisador com o rótulo de ingestão FORTINET_FORTIWEB
.
Configurar os registros do WAF FortiWeb
Para configurar o WAF do FortiWeb para enviar registros a um encaminhador do Google Security Operations, faça o seguinte:
Criar uma política do syslog
- Faça login no console do Fortinet FortiWeb.
- No console do Fortinet FortiWeb, selecione Log & report > Log policy > Syslog policy.
- Clique em Criar novo.
Na janela Nova política de syslog exibida, faça o seguinte:
- No campo Nome da política, especifique um nome para a política que você quer usar na configuração.
- No campo Endereço IP, especifique o endereço IP ou o nome do host do servidor syslog remoto.
- No campo Porta, especifique a porta do servidor syslog.
- Desmarque a caixa de seleção Ativar formato CSV, se ela estiver marcada.
Clique em OK.
Ativar os tipos de syslog e o nível de registro
- No console do Fortinet FortiWeb, selecione Registro e relatório > Configuração de registro > Configurações globais de registro.
Na janela Configurações globais de registro, marque a caixa de seleção Syslog e faça o seguinte:
- Na lista Política do Syslog, selecione a política que você criou anteriormente.
- Na lista Nível de registro, escolha o nível mínimo de gravidade para coletar registros.
- Na lista Instalação, selecione a instalação de registro.
Clique em Aplicar.
Criar um gatilho
- No console do Fortinet FortiWeb, selecione Log & report > Log policy > Trigger policy.
- Clique em Criar novo.
Na janela Nova política de acionamento exibida, faça o seguinte:
- No campo Nome da política, especifique um nome para a política que você quer usar na configuração.
- Na lista Política do Syslog, selecione a política que você criou anteriormente.
Clique em OK.
Atualize sua política de syslog com o gatilho recém-criado para garantir que todos os eventos necessários sejam registrados no encaminhador de syslog do Google Security Operations.
Configurar o encaminhador do Google Security Operations para ingerir registros do WAF do FortiWeb
- Acesse Configurações do SIEM > Encaminhadores.
- Clique em Adicionar novo encaminhador.
- No campo Nome do encaminhador, insira um nome exclusivo para ele.
- Clique em Enviar. O encaminhador é adicionado, e a janela Adicionar configuração do coletor aparece.
- No campo Nome do coletor, digite um nome.
- Selecione Firewall de aplicativo da Web da Fortinet como o Tipo de registro.
- Selecione Syslog como o Tipo de coletor.
- Configure os seguintes parâmetros de entrada obrigatórios:
- Protocolo: especifique o protocolo de conexão que o coletor usa para ouvir dados do syslog.
- Endereço: especifique o endereço IP ou o nome do host de destino em que o coletor reside e escuta os dados do syslog.
- Porta: especifique a porta de destino em que o coletor reside e escuta os dados do syslog.
- Clique em Enviar.
Para mais informações sobre os encaminhadores do Google Security Operations, consulte Gerenciar configurações de encaminhador na interface do Google Security Operations.
Se você tiver problemas ao criar encaminhadores, entre em contato com o suporte do Google Security Operations.
Referência de mapeamento de campos
Esse analisador processa registros do FORTINET FORTIWEB no formato chave-valor (KV), transformando-os em UDM. Ele processa registros formatados em CEF e não CEF, extraindo campos, normalizando valores e mapeando-os para os campos UDM apropriados com base no formato do registro.
Tabela de mapeamento do UDM
Campo de registro | Mapeamento do UDM | Lógica |
---|---|---|
action |
additional.fields[].value.string_value |
O valor é mapeado diretamente. |
action |
security_result.action_details |
Se action for "Permitir" ou "aceitar", security_result.action_details será definido como "ALLOW". Se action for "Denied", "deny", "block" ou "Block", security_result.action_details será definido como "BLOCK". |
app |
network.application_protocol |
O valor é mapeado diretamente depois de ser convertido para maiúsculas. Somente se o valor for HTTPS, HTTP, DNS, DHCP ou SMB. |
app_name |
additional.fields[].key |
A chave é definida como "appName". |
app_name |
additional.fields[].value.string_value |
O valor é mapeado diretamente. |
backend_service |
additional.fields[].key |
A chave é definida como "backend_service". |
backend_service |
additional.fields[].value.string_value |
O valor é mapeado diretamente. |
cat |
security_result.category_details |
O valor é mapeado diretamente. |
client_level |
security_result.category |
Se client_level for "Malicious", security_result.category será definido como "NETWORK_MALICIOUS". |
cn1 |
additional.fields[].value.string_value |
Associado ao campo "threatWeight". |
cn1Label |
additional.fields[].key |
A chave é definida como o valor cn1Label. |
cn2 |
additional.fields[].value.string_value |
Mapeado para o campo de comprimento. |
cn2Label |
additional.fields[].key |
A chave é definida como o valor cn2Label. |
cn3 |
additional.fields[].value.string_value |
Associado ao campo "signatureID". |
cn3Label |
additional.fields[].key |
A chave é definida como o valor cn3Label. |
cs1 |
additional.fields[].value.string_value |
O valor é mapeado diretamente. |
cs1Label |
additional.fields[].key |
A chave é definida como o valor de cs1Label. |
cs1 |
principal.user.product_object_id |
O valor é mapeado diretamente quando cs1Label corresponde a "userID" (sem distinção entre maiúsculas e minúsculas). |
cs2 |
additional.fields[].value.string_value |
O valor é mapeado diretamente. |
cs2Label |
additional.fields[].key |
A chave é definida como o valor cs2Label. |
cs2 |
principal.user.userid |
O valor é mapeado diretamente quando cs2Label corresponde a "userName" (sem distinção entre maiúsculas e minúsculas) e suid está vazio. |
cs3 |
additional.fields[].value.string_value |
O valor é mapeado diretamente. |
cs3Label |
additional.fields[].key |
A chave é definida como o valor de cs3Label. |
cs3 |
metadata.severity |
O valor é mapeado diretamente quando cs3Label é "level" e cs3 não está vazio. |
cs4 |
additional.fields[].value.string_value |
Associado ao campo "subType". |
cs4Label |
additional.fields[].key |
A chave é definida como o valor cs4Label. |
cs5 |
additional.fields[].value.string_value |
Mapeado para o campo "threatLevel". |
cs5Label |
additional.fields[].key |
A chave é definida como o valor "cs5Label". |
cs6 |
additional.fields[].value.string_value |
Mapeado para o campo "owaspTop10". |
cs6Label |
additional.fields[].key |
A chave é definida como o valor cs6Label. |
date |
metadata.event_timestamp.seconds |
Combinado com time e analisado para gerar segundos de época. |
dev_id |
principal.resource.id |
O valor é mapeado diretamente. |
devname |
principal.resource.name |
O valor é mapeado diretamente. |
device_event_class_id |
metadata.product_event_type |
Usado na análise do CEF. |
device_product |
metadata.product_name |
Usado na análise do CEF. |
device_vendor |
metadata.vendor_name |
Usado na análise do CEF. |
device_version |
metadata.product_version |
Usado na análise do CEF. |
dhost |
target.hostname |
O valor é mapeado diretamente. |
dpt |
target.port |
O valor é mapeado diretamente e convertido em número inteiro. |
dst |
target.ip |
O valor é mapeado diretamente. |
dst_port |
target.port |
O valor é mapeado diretamente e convertido em número inteiro. |
dstepid |
target.process.pid |
O valor é mapeado diretamente. |
dsteuid |
target.user.userid |
O valor é mapeado diretamente. |
event_name |
metadata.product_event_type |
Usado na análise do CEF. |
http_agent |
network.http.parsed_user_agent |
O valor é analisado como uma string de user agent. |
http_method |
network.http.method |
O valor é mapeado diretamente. |
http_refer |
network.http.referral_url |
O valor é mapeado diretamente. |
http_session_id |
network.session_id |
O valor é mapeado diretamente. |
http_url |
target.url |
O valor é mapeado diretamente. |
http_version |
metadata.product_version |
O valor é mapeado diretamente. |
length |
additional.fields[].key |
A chave está definida como "length". |
length |
additional.fields[].value.string_value |
O valor é mapeado diretamente. |
log_type |
metadata.log_type |
Codificado como "FORTINET_FORTIWEB". |
main_type |
additional.fields[].key |
A chave é definida como "mainType". |
main_type |
additional.fields[].value.string_value |
O valor é mapeado diretamente. |
message |
Vários campos | Analisado usando filtros grok e kv para extrair campos diferentes. |
ml_allow_method |
additional.fields[].key |
A chave é definida como "ml_allow_method". |
ml_allow_method |
additional.fields[].value.string_value |
O valor é mapeado diretamente. |
ml_arg_dbid |
additional.fields[].key |
A chave é definida como "ml_arg_dbid". |
ml_arg_dbid |
additional.fields[].value.string_value |
O valor é mapeado diretamente. |
ml_domain_index |
additional.fields[].key |
A chave é definida como "ml_domain_index". |
ml_domain_index |
additional.fields[].value.string_value |
O valor é mapeado diretamente. |
ml_log_arglen |
additional.fields[].key |
A chave é definida como "ml_log_arglen". |
ml_log_arglen |
additional.fields[].value.string_value |
O valor é mapeado diretamente. |
ml_log_hmm_probability |
additional.fields[].key |
A chave é definida como "ml_log_hmm_probability". |
ml_log_hmm_probability |
additional.fields[].value.string_value |
O valor é mapeado diretamente. |
ml_log_sample_arglen_mean |
additional.fields[].key |
A chave é definida como "ml_log_sample_arglen_mean". |
ml_log_sample_arglen_mean |
additional.fields[].value.string_value |
O valor é mapeado diretamente. |
ml_log_sample_prob_mean |
additional.fields[].key |
A chave é definida como "ml_log_sample_prob_mean". |
ml_log_sample_prob_mean |
additional.fields[].value.string_value |
O valor é mapeado diretamente. |
ml_svm_accuracy |
additional.fields[].key |
A chave é definida como "ml_svm_accuracy". |
ml_svm_accuracy |
additional.fields[].value.string_value |
O valor é mapeado diretamente. |
ml_svm_log_main_types |
additional.fields[].key |
A chave é definida como "ml_svm_log_main_types". |
ml_svm_log_main_types |
additional.fields[].value.string_value |
O valor é mapeado diretamente. |
ml_svm_log_match_types |
additional.fields[].key |
A chave é definida como "ml_svm_log_match_types". |
ml_svm_log_match_types |
additional.fields[].value.string_value |
O valor é mapeado diretamente. |
ml_url_dbid |
additional.fields[].key |
A chave é definida como "ml_url_dbid". |
ml_url_dbid |
additional.fields[].value.string_value |
O valor é mapeado diretamente. |
monitor_status |
additional.fields[].key |
A chave é definida como "monitor_status". |
monitor_status |
additional.fields[].value.string_value |
O valor é mapeado diretamente. |
msg |
metadata.description |
O valor é mapeado diretamente. |
owasp_top10 |
additional.fields[].key |
A chave é definida como "owaspTop10". |
owasp_top10 |
additional.fields[].value.string_value |
O valor é mapeado diretamente. |
principal_app |
principal.application |
O valor é mapeado diretamente. |
principal_host |
principal.hostname |
O valor é mapeado diretamente. |
proto |
network.ip_protocol |
O valor é mapeado diretamente depois de ser convertido para maiúsculas. |
request |
target.url |
O valor é mapeado diretamente. |
requestMethod |
network.http.method |
O valor é mapeado diretamente. |
rt |
metadata.event_timestamp.seconds |
Analisado como milissegundos desde a época e convertido em segundos. |
security_result.severity |
security_result.severity |
Derivado de severity_level . Mapeado para diferentes valores de gravidade da UDM com base no valor do registro bruto. O padrão é UNKNOWN_SEVERITY se nenhuma correspondência for encontrada. |
server_pool_name |
additional.fields[].key |
A chave é definida como "server_pool_name". |
server_pool_name |
additional.fields[].value.string_value |
O valor é mapeado diretamente. |
service |
network.application_protocol |
O valor é mapeado diretamente depois de ser convertido para maiúsculas. |
service |
target.application |
O valor é mapeado diretamente depois de ser convertido para maiúsculas, se não for HTTPS, HTTP, DNS, DHCP ou SMB. |
severity |
security_result.severity |
Se severity estiver vazio e cs3Label for "level", o valor de cs3 será usado. Em seguida, mapeados para um valor de gravidade da UDM (BAIXA, ALTA etc.). |
signature_id |
security_result.rule_id |
O valor é mapeado diretamente. |
signature_subclass |
security_result.detection_fields[].key |
A chave é definida como "signature_subclass". |
signature_subclass |
security_result.detection_fields[].value |
O valor é mapeado diretamente. |
src |
principal.ip |
O valor é mapeado diretamente. |
src_country |
principal.location.country_or_region |
O valor é mapeado diretamente. |
src_ip |
principal.ip |
O valor é mapeado diretamente. |
src_port |
principal.port |
O valor é mapeado diretamente e convertido em número inteiro. |
srccountry |
principal.location.country_or_region |
O valor é mapeado diretamente. |
sub_type |
additional.fields[].key |
A chave é definida como "subType". |
sub_type |
additional.fields[].value.string_value |
O valor é mapeado diretamente. |
subtype |
target.resource.resource_subtype |
O valor é mapeado diretamente. |
suid |
principal.user.userid |
O valor é mapeado diretamente. |
threat_level |
additional.fields[].key |
A chave é definida como "threatLevel". |
threat_level |
additional.fields[].value.string_value |
O valor é mapeado diretamente. |
threat_weight |
security_result.detection_fields[].key |
A chave é definida como "threat_weight". |
threat_weight |
security_result.detection_fields[].value |
O valor é mapeado diretamente. |
time |
metadata.event_timestamp.seconds |
Combinado com date e analisado para gerar segundos de época. |
user_id |
principal.user.product_object_id |
O valor é mapeado diretamente. |
user_name |
additional.fields[].key |
A chave é definida como "userName". |
user_name |
additional.fields[].value.string_value |
O valor é mapeado diretamente. |
user_name |
principal.user.userid |
O valor é mapeado diretamente. |
N/A | metadata.event_type |
Defina como "NETWORK_CONNECTION" se principal.ip e target.ip estiverem presentes. Definido como "USER_UNCATEGORIZED" se principal.ip e principal.user estiverem presentes. Defina como "STATUS_UPDATE" se apenas principal.ip estiver presente. Caso contrário, defina como "GENERIC_EVENT". |
N/A | metadata.log_type |
Codificado como "FORTINET_FORTIWEB". |
N/A | metadata.product_name |
Codificado como "FORTINET FORTIWEB" ou "FortiWEB Cloud" com base no formato do registro. |
N/A | metadata.vendor_name |
Codificado como "FORTINET" ou "Fortinet" com base no formato do registro. |
N/A | principal.resource.resource_type |
Codificado como "DEVICE" se dev_id estiver presente. |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.