Recolha registos do WAF FortiWeb
Este documento descreve como pode recolher os registos da firewall de aplicações Web (WAF) do FortiWeb através de um encaminhador do Google Security Operations.
Para mais informações, consulte o artigo Vista geral da ingestão de dados no Google Security Operations.
Uma etiqueta de carregamento identifica o analisador que normaliza os dados de registo não processados para o formato UDM estruturado. As informações neste documento aplicam-se ao analisador com a etiqueta de carregamento FORTINET_FORTIWEB
.
Configure os registos do WAF do FortiWeb
Para configurar o WAF do FortiWeb para enviar registos para um encaminhador do Google Security Operations, faça o seguinte:
Crie uma política de syslog
- Inicie sessão na consola do Fortinet FortiWeb.
- Na consola Fortinet FortiWeb, selecione Registo e relatório > Política de registo > Política de Syslog.
- Clique em Criar novo.
Na janela Nova política de syslog apresentada, faça o seguinte:
- No campo Nome da política, especifique um nome para a política que quer usar na configuração.
- No campo Endereço IP, especifique o endereço IP ou o nome de anfitrião do servidor syslog remoto.
- No campo Porta, especifique a porta do servidor syslog.
- Desmarque a caixa de verificação Ativar formato CSV, se estiver selecionada.
Clique em OK.
Ative os tipos de syslog e o nível de registo
- Na consola do Fortinet FortiWeb, selecione Registo e relatório > Configuração do registo > Definições de registo global.
Na janela Definições de registo globais apresentada, selecione a caixa de verificação Syslog e faça o seguinte:
- Na lista Política de Syslog, selecione a política de Syslog que criou anteriormente.
- Na lista Nível de registo, escolha o nível de gravidade mínimo para os registos a recolher.
- Na lista Instalação, selecione a instalação de registo.
Clique em Aplicar.
Crie um acionador
- Na consola do Fortinet FortiWeb, selecione Registo e relatório > Política de registo > Política de acionamento.
- Clique em Criar novo.
Na janela Nova política de acionadores apresentada, faça o seguinte:
- No campo Nome da política, especifique um nome para a política que quer usar na configuração.
- Na lista Política de Syslog, selecione a política de Syslog que criou anteriormente.
Clique em OK.
Atualize a sua política de syslog com o acionador recém-criado para garantir que todos os eventos necessários são registados no encaminhador de syslog do Google Security Operations.
Configure o encaminhador do Google Security Operations para carregar registos do WAF do FortiWeb
- Aceda a Definições do SIEM > Encaminhadores.
- Clique em Adicionar novo encaminhador.
- No campo Nome do encaminhador, introduza um nome exclusivo para o encaminhador.
- Clique em Enviar. O encaminhador é adicionado e é apresentada a janela Adicionar configuração do coletor.
- No campo Nome do coletor, introduza um nome.
- Selecione Fortinet Web Application Firewall como o Tipo de registo.
- Selecione Syslog como o tipo de coletor.
- Configure os seguintes parâmetros de entrada obrigatórios:
- Protocolo: especifique o protocolo de ligação que o coletor usa para ouvir dados de syslog.
- Endereço: especifique o endereço IP ou o nome de anfitrião de destino onde o coletor reside e escuta os dados syslog.
- Porta: especifique a porta de destino onde o coletor reside e ouve dados syslog.
- Clique em Enviar.
Para mais informações acerca dos encaminhadores do Google Security Operations, consulte o artigo Faça a gestão das configurações de encaminhadores através da IU do Google Security Operations.
Se tiver problemas ao criar encaminhadores, contacte o apoio técnico das Operações de segurança da Google.
Referência de mapeamento de campos
Este analisador processa registos do FORTINET FORTIWEB no formato de chave-valor (KV), transformando-os em UDM. Processa registos formatados em CEF e não CEF, extraindo campos, normalizando valores e mapeando-os para os campos UDM adequados com base no formato de registo.
Tabela de mapeamento da UDM
Campo de registo | Mapeamento de 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 é definido como "ALLOW". Se action for "Denied", "deny", "block" ou "Block", security_result.action_details é definido como "BLOCK". |
app |
network.application_protocol |
O valor é mapeado diretamente após a conversão para maiúsculas. Apenas se o valor for um dos seguintes: HTTPS, HTTP, DNS, DHCP ou SMB. |
app_name |
additional.fields[].key |
A chave está definida como "appName". |
app_name |
additional.fields[].value.string_value |
O valor é mapeado diretamente. |
backend_service |
additional.fields[].key |
A chave está 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 é definido como "NETWORK_MALICIOUS". |
cn1 |
additional.fields[].value.string_value |
Mapeado com o campo threatWeight. |
cn1Label |
additional.fields[].key |
A chave está definida como o valor de cn1Label. |
cn2 |
additional.fields[].value.string_value |
Mapeado com o campo de comprimento. |
cn2Label |
additional.fields[].key |
A chave está definida como o valor de cn2Label. |
cn3 |
additional.fields[].value.string_value |
Mapeado com o campo signatureID. |
cn3Label |
additional.fields[].key |
A chave está definida como o valor de cn3Label. |
cs1 |
additional.fields[].value.string_value |
O valor é mapeado diretamente. |
cs1Label |
additional.fields[].key |
A chave está definida para o valor cs1Label. |
cs1 |
principal.user.product_object_id |
O valor é mapeado diretamente quando cs1Label corresponde a "userID" (não sensível a maiúsculas e minúsculas). |
cs2 |
additional.fields[].value.string_value |
O valor é mapeado diretamente. |
cs2Label |
additional.fields[].key |
A chave está definida como o valor de cs2Label. |
cs2 |
principal.user.userid |
O valor é mapeado diretamente quando cs2Label corresponde a "userName" (não sensível a 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 está 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 |
Mapeado com o campo subType. |
cs4Label |
additional.fields[].key |
A chave está definida como o valor cs4Label. |
cs5 |
additional.fields[].value.string_value |
Mapeado com o campo threatLevel. |
cs5Label |
additional.fields[].key |
A chave está definida como o valor de cs5Label. |
cs6 |
additional.fields[].value.string_value |
Mapeado com o campo owaspTop10. |
cs6Label |
additional.fields[].key |
A chave está 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 CEF. |
device_product |
metadata.product_name |
Usado na análise CEF. |
device_vendor |
metadata.vendor_name |
Usado na análise CEF. |
device_version |
metadata.product_version |
Usado na análise 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 CEF. |
http_agent |
network.http.parsed_user_agent |
O valor é analisado como uma string de agente do utilizador. |
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 de forma rígida para "FORTINET_FORTIWEB". |
main_type |
additional.fields[].key |
A chave está definida como "mainType". |
main_type |
additional.fields[].value.string_value |
O valor é mapeado diretamente. |
message |
Vários campos | Analisado através de filtros grok e kv para extrair diferentes campos. |
ml_allow_method |
additional.fields[].key |
A chave está 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 está 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 está 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 está 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 está 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 está 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 está 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 está 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 está 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 está 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 está definida como "ml_url_dbid". |
ml_url_dbid |
additional.fields[].value.string_value |
O valor é mapeado diretamente. |
monitor_status |
additional.fields[].key |
A chave está 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 está 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 após a conversão 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 epoch 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 registo não processado. A predefinição é UNKNOWN_SEVERITY se não for encontrada nenhuma correspondência. |
server_pool_name |
additional.fields[].key |
A chave está 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 após a conversão para maiúsculas. |
service |
target.application |
O valor é mapeado diretamente após ser convertido em maiúsculas, se não for um de HTTPS, HTTP, DNS, DHCP ou SMB. |
severity |
security_result.severity |
Se severity estiver vazio e cs3Label for "level", é usado o valor de cs3 . Em seguida, mapeado para um valor de gravidade da UDM (BAIXO, ALTO, etc.). |
signature_id |
security_result.rule_id |
O valor é mapeado diretamente. |
signature_subclass |
security_result.detection_fields[].key |
A chave está 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 está 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 está definida como "threatLevel". |
threat_level |
additional.fields[].value.string_value |
O valor é mapeado diretamente. |
threat_weight |
security_result.detection_fields[].key |
A chave está 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 está 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 |
Definido como "NETWORK_CONNECTION" se principal.ip e target.ip estiverem presentes. Definido como "USER_UNCATEGORIZED" se principal.ip e principal.user estiverem presentes. Definido como "STATUS_UPDATE" se apenas principal.ip estiver presente. Caso contrário, defina como "GENERIC_EVENT". |
N/A | metadata.log_type |
Codificado de forma rígida para "FORTINET_FORTIWEB". |
N/A | metadata.product_name |
Codificado de forma rígida como "FORTINET FORTIWEB" ou "FortiWEB Cloud" com base no formato do registo. |
N/A | metadata.vendor_name |
Codificado de forma rígida como "FORTINET" ou "Fortinet" com base no formato do registo. |
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 da Google SecOps.