Coletar registros do FortiDDoS da Fortinet
Este guia explica como ingerir registros do Fortinet FortiDDoS no Google Security Operations usando o agente Bindplane.
O FortiDDoS da Fortinet é um dispositivo de atenuação de ataques DDoS que protege redes e aplicativos contra ataques distribuídos de negação de serviço. O FortiDDoS oferece detecção de ataques em tempo real, mitigação automatizada e relatórios detalhados para ataques nas camadas de rede e de aplicativos.
Antes de começar
Verifique se você tem os pré-requisitos a seguir:
- Instância do Google SecOps.
- Windows Server 2016 ou mais recente ou host Linux com systemd.
- Conectividade de rede entre o agente do Bindplane e o appliance FortiDDoS da Fortinet.
- Se você estiver executando um proxy, verifique se as portas do firewall estão abertas de acordo com os requisitos do agente do Bindplane.
- Acesso privilegiado à interface da Web do FortiDDoS com permissão de leitura e gravação para configurações de registro e relatório.
Receber o arquivo de autenticação de ingestão do Google SecOps
- Faça login no console do Google SecOps.
- Acesse Configurações do SIEM > Agente de coleta.
- Clique em Fazer o download para baixar o arquivo de autenticação de ingestão.
Salve o arquivo com segurança no sistema em que o agente do Bindplane será instalado.
Receber o ID de cliente do Google SecOps
- Faça login no console do Google SecOps.
- Acesse Configurações do SIEM > Perfil.
Copie e salve o ID do cliente na seção Detalhes da organização.
Instalar o agente do BindPlane
Instale o agente do Bindplane no seu sistema operacional Windows ou Linux de acordo com as instruções a seguir.
Instalação do Windows
- Abra o prompt de comando ou o PowerShell como administrador.
Execute este comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quietAguarde a conclusão da instalação.
Execute o seguinte comando para confirmar a instalação:
sc query observiq-otel-collectorO serviço vai aparecer como EM EXECUÇÃO.
Instalação do Linux
- Abra um terminal com privilégios de root ou sudo.
Execute este comando:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.shAguarde a conclusão da instalação.
Execute o seguinte comando para confirmar a instalação:
sudo systemctl status observiq-otel-collectorO serviço vai aparecer como ativo (em execução).
Outros recursos de instalação
Para mais opções de instalação e solução de problemas, consulte o guia de instalação do agente do Bindplane.
Configurar o agente do Bindplane para ingerir syslog e enviar ao Google SecOps
Localizar o arquivo de configuração
Linux:
sudo nano /etc/bindplane-agent/config.yaml
Windows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
Editar o arquivo de configuração
Substitua todo o conteúdo de config.yaml pela seguinte configuração:
receivers:
udplog:
listen_address: "0.0.0.0:514"
exporters:
chronicle/fortiddos:
compression: gzip
creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
customer_id: 'your-customer-id-here'
endpoint: malachiteingestion-pa.googleapis.com
log_type: FORTINET_FORTIDDOS
raw_log_field: body
ingestion_labels:
env: production
service:
pipelines:
logs/fortiddos_to_chronicle:
receivers:
- udplog
exporters:
- chronicle/fortiddos
Parâmetros de configuração
Substitua os seguintes marcadores de posição:
Configuração do receptor:
listen_address: endereço IP e porta a serem detectados. Use0.0.0.0:514para detectar todas as interfaces na porta 514.
Configuração do exportador:
creds_file_path: caminho completo para o arquivo de autenticação de ingestão:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
customer_id: ID do cliente da etapa anterior.endpoint: URL do endpoint regional:- EUA:
malachiteingestion-pa.googleapis.com - Europa:
europe-malachiteingestion-pa.googleapis.com - Ásia:
asia-southeast1-malachiteingestion-pa.googleapis.com - Consulte a lista completa em Endpoints regionais.
- EUA:
log_type: precisa serFORTINET_FORTIDDOS.ingestion_labels: rótulos opcionais no formato YAML.
Salvar o arquivo de configuração
Depois de editar, salve o arquivo:
- Linux: pressione
Ctrl+O,EntereCtrl+X. - Windows: clique em Arquivo > Salvar.
Reinicie o agente do Bindplane para aplicar as mudanças
Linux
sudo systemctl restart observiq-otel-collectorVerifique se o serviço está em execução:
sudo systemctl status observiq-otel-collectorVerifique se há erros nos registros:
sudo journalctl -u observiq-otel-collector -f
Windows
Escolha uma das seguintes opções:
Usando o prompt de comando ou o PowerShell como administrador:
net stop observiq-otel-collector && net start observiq-otel-collectorUsando o console do Services:
- Pressione
Win+R, digiteservices.msce pressione Enter. - Localize o Coletor do OpenTelemetry da observIQ.
Clique com o botão direito do mouse e selecione Reiniciar.
Verifique se o serviço está em execução:
sc query observiq-otel-collectorVerifique se há erros nos registros:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
- Pressione
Configurar a geração de registros remotos do registro de eventos do FortiDDoS
O FortiDDoS oferece suporte a dois tipos de registro syslog remoto: registros de eventos para eventos do sistema e registros de ataque para eventos de ataque DDoS. Configure os dois para enviar registros abrangentes ao Google SecOps.
- Faça login na interface da Web do FortiDDoS.
- Acesse Registro e relatório > Configuração de registro > Registro de eventos remoto.
- Clique em Adicionar para criar uma configuração de servidor de registros remotos.
- Informe os seguintes detalhes de configuração:
- Nome: insira um nome descritivo, por exemplo,
Chronicle-Event-Logs. - Endereço: insira o endereço IP do host do agente do Bindplane.
- Porta: insira
514. - Nível mínimo de registro: selecione o nível mínimo de gravidade para encaminhar (por exemplo, Informação ou Notificação).
- Instalação: selecione uma instalação do syslog (por exemplo, local0).
- Nome: insira um nome descritivo, por exemplo,
- Clique em Salvar para salvar a configuração.
Configurar a geração de registros remotos do registro de ataque do FortiDDoS
O registro remoto de registros de ataque é configurado por perfil de proteção de serviço (SPP, na sigla em inglês). É necessário configurar o encaminhamento de registros de ataque para cada SPP que você quer monitorar.
- Faça login na interface da Web do FortiDDoS.
- Acesse Registro e relatório > Configuração de registro > Registro remoto de ataques.
- Clique em Adicionar para criar uma configuração de servidor de registros remotos.
- Informe os seguintes detalhes de configuração:
- Nome: insira um nome descritivo, por exemplo,
Chronicle-Attack-Logs. - SPP: selecione o perfil de proteção de serviço a ser configurado.
- Endereço: insira o endereço IP do host do agente do Bindplane.
- Porta: insira
514. - Intervalo: selecione o intervalo do relatório (por exemplo, 1 minuto ou 5 minutos).
- Nome: insira um nome descritivo, por exemplo,
- Clique em Salvar para salvar a configuração.
Repita as etapas de 3 a 5 para cada SPP que você quer monitorar.
Verificar o encaminhamento de syslog
Depois de configurar o registro remoto, verifique se os registros estão sendo enviados ao agente do Bindplane:
No host do agente do BindPlane, monitore o tráfego syslog de entrada:
Linux:
sudo tcpdump -i any -n port 514Windows:
Use uma ferramenta de monitoramento de rede ou verifique os registros do agente Bindplane.
No appliance FortiDDoS, gere mensagens de registro de teste:
Teste de registro de eventos:
- Faça uma mudança de configuração na interface da Web do FortiDDoS para gerar um registro de eventos.
Teste de registro de ataque:
- Aguarde o intervalo de geração de relatórios configurado (1 ou 5 minutos). O FortiDDoS gera relatórios em intervalos regulares e leva mais dois minutos para agregar os dados. Por exemplo, os registros informados para a marca de 5 minutos vão aparecer no servidor syslog na marca de 7 minutos.
Verifique se os registros aparecem no console do Google SecOps em 5 a 10 minutos.
Tabela de mapeamento do UDM
| Campo de registro | Mapeamento do UDM | Lógica |
|---|---|---|
| adicional | adicional | Valor copiado diretamente |
| additional.fields.additional_label.key | Definido como "type" | |
| tipo | additional.fields.additional_label.value.string_value | Valor copiado diretamente |
| additional.fields.src_label.key | Definido como "device_id" | |
| devid | additional.fields.src_label.value.string_value | Valor copiado diretamente |
| log_id | security_result.detection_fields.log_id_label.value | Valor copiado diretamente |
| security_result.detection_fields.log_id_label.key | Definido como "log_id" | |
| metadados | metadados | Valor copiado diretamente |
| desc_Data | metadata.description | Valor copiado diretamente |
| sip,dip,user | metadata.event_type | Definido como "NETWORK_CONNECTION" se sip e dip não estiverem vazios. Caso contrário, "USER_UNCATEGORIZED" se o usuário não estiver vazio. Caso contrário, "STATUS_UPDATE" se sip não estiver vazio. Caso contrário, "GENERIC_EVENT". |
| rede | rede | Valor copiado diretamente |
| participante | participante | Valor copiado diretamente |
| sip | principal.asset.ip | Valor copiado diretamente |
| sip | principal.ip | Valor copiado diretamente |
| date,time,tz | principal.labels.date_label.value | Concatenado de data, hora, fuso horário com espaços |
| principal.labels.date_label.key | Definido como "date" | |
| dir | principal.labels.direction_label.value | Valor copiado diretamente |
| principal.labels.direction_label.key | Definido como "direction" | |
| dport | principal.port | Convertido para número inteiro |
| usuário | principal.user.userid | Valor copiado diretamente |
| security_result | security_result | Valor copiado diretamente |
| direção | security_result.detection_fields.direction_label.value | Valor copiado diretamente |
| security_result.detection_fields.direction_label.key | Definido como "direction" | |
| dropcount | security_result.detection_fields.dropcount_label.value | Valor copiado diretamente |
| security_result.detection_fields.dropcount_label.key | Definido como "dropcount" | |
| evecode | security_result.detection_fields.evecode_label.value | Valor copiado diretamente |
| security_result.detection_fields.evecode_label.key | Definido como "evecode" | |
| evesubcode | security_result.detection_fields.evesubcode_label.value | Valor copiado diretamente |
| security_result.detection_fields.evesubcode_label.key | Definido como "evesubcode" | |
| residencial geriátrico | security_result.detection_fields.facility_label.value | Valor copiado diretamente |
| security_result.detection_fields.facility_label.key | Definido como "facility" | |
| level | security_result.detection_fields.level_label.value | Valor copiado diretamente |
| security_result.detection_fields.level_label.key | Definido como "level" | |
| msg_id | security_result.detection_fields.msg_id_label.value | Valor copiado diretamente |
| security_result.detection_fields.msg_id_label.key | Definido como "msg_id" | |
| spp_name | security_result.detection_fields.spp_name_label.value | Valor copiado diretamente |
| security_result.detection_fields.spp_name_label.key | Definido como "spp_name" | |
| spp | security_result.detection_fields.spp_label.value | Valor copiado diretamente |
| security_result.detection_fields.spp_label.key | Definido como "spp" | |
| sppoperatingmode | security_result.detection_fields.sppoperatingmode_label.value | Valor copiado diretamente |
| security_result.detection_fields.sppoperatingmode_label.key | Definido como "sppoperatingmode" | |
| subnet_name | security_result.detection_fields.subnet_name_label.value | Valor copiado diretamente |
| security_result.detection_fields.subnet_name_label.key | Definido como "subnet_name" | |
| subnetid | security_result.detection_fields.subnetid_label.value | Valor copiado diretamente |
| security_result.detection_fields.subnetid_label.key | Definido como "subnetid" | |
| subtype | security_result.detection_fields.subtype_label.value | Valor copiado diretamente |
| security_result.detection_fields.subtype_label.key | Definido como "subtype" | |
| target | target | Valor copiado diretamente |
| queda | target.asset.ip | Valor copiado diretamente |
| queda | target.ip | Valor copiado diretamente |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.