Coletar registros do FortiWeb WAF

Compatível com:

Este documento descreve como coletar os logs do FortiWeb firewall de aplicativos da Web (WAF) usando um encaminhador de operações de segurança do Google.

Para mais informações, consulte Visão geral da ingestão de dados para as operações de segurança do Google.

Um rótulo de transferência identifica o analisador que normaliza os dados de registro brutos para o formato estruturado da UDM. As informações neste documento se aplicam ao analisador com o rótulo de transferência FORTINET_FORTIWEB.

Configurar os registros do FortiWeb WAF

Para configurar o FortiWeb WAF para enviar registros a um forwarder do Google Security Operations, faça o seguinte:

Criar uma política do syslog

  1. Faça login no console do Fortinet FortiWeb.
  2. No console do Fortinet FortiWeb, selecione Log & report > Log policy > Syslog policy.
  3. Clique em Criar novo.
  4. Na janela Nova política do syslog que aparece, faça o seguinte:

    • No campo Nome da política, especifique o nome da 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 Port, especifique a porta do servidor syslog.
    • Desmarque a caixa de seleção Ativar formato CSV, se ela estiver marcada.
  5. Clique em OK.

Ativar os tipos e o nível de registro do syslog

  1. No console do Fortinet FortiWeb, selecione Log & report > Log config > Global log settings.
  2. Na janela Global log settings que aparece, marque a caixa de seleção Syslog e faça o seguinte:

    • Na lista Política de syslog, selecione a política que você criou anteriormente.
    • Na lista Nível de registro, escolha o nível mínimo de gravidade para coleta de registros.
    • Na lista Facility, selecione a unidade de registro.
  3. Clique em Aplicar.

Criar um gatilho

  1. No console do Fortinet FortiWeb, selecione Log & report > Log policy > Trigger policy.
  2. Clique em Criar novo.
  3. Na janela Nova política de gatilho que aparece, faça o seguinte:

    • No campo Nome da política, especifique o nome da política que você quer usar na configuração.
    • Na lista Política de syslog, selecione a política que você criou anteriormente.
  4. Clique em OK.

    Atualize sua política do syslog com o acionador recém-criado para garantir que todos os eventos necessários sejam registrados no encaminhador de syslog do Google Security Operations.

Configurar o forwarder do Google Security Operations para processar os registros do FortiWeb WAF

  1. Acesse Configurações do SIEM > Encaminhadores.
  2. Clique em Adicionar novo encaminhador.
  3. No campo Nome do encaminhador, insira um nome exclusivo.
  4. Clique em Enviar. O encaminhador é adicionado, e a janela Add collector configuration é exibida.
  5. No campo Nome do coletor, digite um nome.
  6. Selecione Firewall de aplicativo da Web do Fortinet como o Tipo de registro.
  7. Selecione Syslog como o Tipo de coletor.
  8. Configure os seguintes parâmetros de entrada obrigatórios:
    • Protocolo: especifique o protocolo de conexão que o coletor usa para detectar 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.
  9. Clique em Enviar.

Para mais informações sobre os encaminhadores do Google Security Operations, consulte Gerenciar configurações de encaminhadores na interface do Google Security Operations.

Se você tiver problemas ao criar encaminhadores, entre em contato com o suporte da Google Security Operations.

Referência do mapeamento de campo

Esse analisador processa os registros do FORTINET FORTIWEB no formato chave-valor (KV), transformando-os em UDM. Ele processa registros formatados com 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 "PERMITIR". Se action for "Negado", "negar", "bloquear" ou "Bloquear", security_result.action_details será definido como "BLOQUEAR".
app network.application_protocol O valor é mapeado diretamente após ser convertido em maiúsculas. Somente se o valor for 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 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 está definida como o valor 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 está 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 está definida como o valor cs3Label.
cs3 metadata.severity O valor é mapeado diretamente quando cs3Label é "level" e cs3 não está vazio.
cs4 additional.fields[].value.string_value Mapeado para o campo subType.
cs4Label additional.fields[].key A chave está definida como o valor cs4Label.
cs5 additional.fields[].value.string_value Mapeado para o campo threatLevel.
cs5Label additional.fields[].key A chave está definida como o valor cs5Label.
cs6 additional.fields[].value.string_value Mapeado para 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 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 e convertido em número inteiro.
dst target.ip O valor é mapeado diretamente.
dst_port target.port O valor é mapeado 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 Fixado em "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 usando filtros grok e kv para extrair campos diferentes.
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 ser convertido em 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 do 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 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 ser convertido em maiúsculas.
service target.application O valor é mapeado diretamente depois de ser convertido em 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, 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 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 Defina como "NETWORK_CONNECTION" se principal.ip e target.ip estiverem presentes. Defina 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 Fixado em "FORTINET_FORTIWEB".
N/A metadata.product_name Fixado em "FORTINET FORTIWEB" ou "FortiWEB Cloud" com base no formato de registro.
N/A metadata.vendor_name Fixado em "FORTINET" ou "Fortinet" com base no formato do registro.
N/A principal.resource.resource_type Fixado em "DEVICE" se dev_id estiver presente.

Alterações

2024-01-09

  • Adicionamos suporte a registros no formato CEF.
  • Um padrão Grok foi adicionado para corresponder ao novo formato de registros CEF.
  • "principal_hostnamne" foi mapeado para "principal.hostname".
  • "principal.app" foi mapeado para "principal.application".

2023-05-18

  • Parser recém-criado.