Coletar registros do proxy da Web da Fortinet
Versão do analisador:3.0
Neste documento, explicamos como ingerir registros do Fortinet Web Proxy no Google Security Operations usando o agente do Bindplane.
O proxy da Web FortiGate da Fortinet gera registros para sessões de proxy explícitas e transparentes, capturando tráfego HTTP/HTTPS, decisões de filtragem de URL e eventos de acesso à Web. Os registros usam o formato de chave-valor do syslog e incluem metadados de rede, ações de segurança e informações de identidade do usuário.
Antes de começar
Verifique se você tem os pré-requisitos a seguir:
- Uma 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 dispositivo FortiGate
- Se estiver em execução atrás de um proxy, verifique se as portas do firewall estão abertas de acordo com os requisitos do agente do Bindplane.
- Acesso privilegiado ao dispositivo FortiGate com permissões de administrador
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 > Agentes de coleta.
- Baixe o arquivo de autenticação de ingestão.
Salve o arquivo com segurança no sistema em que o 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 de 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 raiz 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 o syslog e enviar ao Google SecOps
Localizar o arquivo de configuração
Linux:
sudo nano /opt/observiq-otel-collector/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
Editar o arquivo de configuração
Substitua todo o conteúdo de
config.yamlpela seguinte configuração:receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/fortinet_webproxy: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: FORTINET_WEBPROXY raw_log_field: body ingestion_labels: env: production service: pipelines: logs/webproxy_to_chronicle: receivers: - udplog exporters: - chronicle/fortinet_webproxy
Parâmetros de configuração
Substitua os seguintes marcadores de posição:
Configuração do receptor:
udplog: o tipo de receptor com base no protocolo:udplogpara syslog UDPtcplogpara syslog TCP
0.0.0.0: endereço IP para detectar:0.0.0.0para ouvir em todas as interfaces (recomendado)- Endereço IP específico para detectar em uma interface
514: número da porta para escutar (por exemplo,514,1514,6514)
Configuração do exportador:
fortinet_webproxy: nome descritivo do exportadorcreds_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 anteriorendpoint: 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:
FORTINET_WEBPROXY: tipo de registro exatamente como aparece no Chronicleingestion_labels: rótulos opcionais no formato YAML (por exemplo,env: production)
Configuração do pipeline:
webproxy_to_chronicle: nome descritivo do pipeline.
Salvar o arquivo de configuração
- Depois de editar, salve o arquivo:
- Linux: pressione
Ctrl+O,EntereCtrl+X. - Windows: clique em Arquivo > Salvar.
- Linux: pressione
Reinicie o agente do Bindplane para aplicar as mudanças.
Para reiniciar o agente do Bindplane no Linux, execute o seguinte comando:
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
Para reiniciar o agente do Bindplane em Windows, escolha uma das seguintes opções:
Prompt de comando ou PowerShell como administrador:
net stop observiq-otel-collector && net start observiq-otel-collectorConsole de serviços:
- 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 o encaminhamento de syslog do proxy da Web do Fortinet FortiGate
- Faça login na interface da Web do FortiGate.
- Acesse Log & Report > Log Settings.
- Role a tela para baixo até a seção Registro e arquivamento remotos.
- Em Syslog, clique em Adicionar.
- Informe os seguintes detalhes de configuração:
- Nome: insira um nome descritivo, por exemplo,
Chronicle-Bindplane. - Endereço IP/FQDN: insira o endereço IP do host do agente do Bindplane (por exemplo,
192.168.1.100). - Porta: insira
514(precisa corresponder à porta do receptor do agente do Bindplane). - Protocolo: selecione UDP.
- Nível mínimo: selecione Informações ou Notificação.
- Nome: insira um nome descritivo, por exemplo,
Verifique se a categoria de registros Web Proxy está ativada. Como alternativa, use a CLI para configurar o filtro syslog:
config log syslogd setting set status enable set server <BINDPLANE_AGENT_IP> set port 514 end config log syslogd filter set filter "logid(0300)" set filter-type include end- O intervalo de ID de registros
0300abrange eventos de proxy da Web. Ajuste o filtro de acordo com o ambiente. - Substitua
<BINDPLANE_AGENT_IP>pelo endereço IP do host do agente do BindPlane.
- O intervalo de ID de registros
Clique em OK para salvar.
Clique em Aplicar no canto superior direito para aplicar a configuração.
Verifique se as mensagens do syslog estão sendo recebidas conferindo os registros do agente do BindPlane.
Tabela de mapeamento de UDM
| Campo de registro | Mapeamento de UDM | Lógica |
|---|---|---|
| group, profile, agent, subtype, catdesc, reqtype | additional.fields | Combinados com rótulos criados em cada campo |
| action, has_network, has_principal, has_target | metadata.event_type | Definido como USER_LOGIN se a ação for auth-logon, caso contrário, NETWORK_HTTP se has_network for verdadeiro, NETWORK_CONNECTION se has_principal e has_target forem verdadeiros, STATUS_UPDATE se has_principal for verdadeiro ou GENERIC_EVENT. |
| eventtype | metadata.product_event_type | Valor copiado diretamente |
| logid | metadata.product_log_id | Valor copiado diretamente |
| metadata.product_name | Defina como "FORTINET_WEBPROXY" | |
| metadata.vendor_name | Defina como "FORTINET_WEBPROXY" | |
| serviço | network.application_protocol | Valor copiado diretamente se o serviço estiver em HTTP ou HTTPS. |
| direção | network.direction | Definido como INBOUND se a direção for de entrada, recebida ou de resposta. Caso contrário, OUTBOUND se for de saída. |
| httpmethod | network.http.method | Valor copiado diretamente se httpmethod for GET ou POST |
| referralurl | network.http.referral_url | Valor copiado diretamente |
| proto, subtype, service | network.ip_protocol | Definido como UDP se proto=17, TCP se proto=6 ou subtype=wad, IP6IN4 se proto=41, ICMP se service=PING ou proto=1 ou service corresponder a ICMP |
| rcvdbyte | network.received_bytes | Convertido para número inteiro sem sinal |
| sentbyte | network.sent_bytes | Convertido em número inteiro sem sinal |
| sessionid | network.session_id | Valor copiado diretamente |
| devname | principal.asset.hostname | Valor copiado diretamente |
| srcip | principal.asset.ip | Valor copiado diretamente |
| devname | principal.hostname | Valor copiado diretamente |
| srcip | principal.ip | Valor copiado diretamente |
| srccountry | principal.location.country_or_region | O valor é copiado diretamente se não for reservado nem vazio. |
| srcport | principal.port | Convertido para número inteiro |
| srcuuid | principal.user.product_object_id | Valor copiado diretamente |
| vd | principal.user.user_display_name | Valor copiado diretamente |
| usuário | principal.user.userid | Valor copiado diretamente |
| filtername | security_result.about.resource.attribute.labels | Mesclado com o rótulo criado com base em "filtername" se não estiver vazio e não for "-" |
| ação | security_result.action | Definido como BLOCK se action=blocked, ALLOW se action in accept, passthrough |
| devid, policyid, srcintf, srcintfrole, ratemethod, cat | security_result.detection_fields | Combinados com rótulos criados em cada campo |
| msg | security_result.description | Valor copiado diretamente |
| poluuid | security_result.rule_id | Valor copiado diretamente |
| policytype | security_result.rule_type | Valor copiado diretamente |
| level | security_result.severity | Definido como "HIGH" se level=warning, "MEDIUM" se level=notice |
| tipo | security_result.summary | Valor copiado diretamente |
| dstip | target.asset.ip | Valor copiado diretamente |
| filename | target.file.full_path | Valor copiado diretamente |
| filetype | target.file.mime_type | Valor copiado diretamente |
| filesize | target.file.size | Convertido para número inteiro sem sinal |
| nome do host | target.hostname | Valor copiado diretamente |
| dstip | target.ip | Valor copiado diretamente |
| dstcountry | target.location.country_or_region | Valor copiado diretamente |
| dstport | target.port | Convertido em número inteiro |
| dstintf, dstintfrole | target.resource.attribute.labels | Combinados com rótulos criados em cada campo |
| dstuuid | target.resource.product_object_id | Valor copiado diretamente |
| url | target.url | Valor copiado diretamente |
eventtime |
event.idm.read_only_udm.metadata.event_timestamp |
Mapeado do registro de mudanças |
ts |
event.idm.read_only_udm.metadata.collected_timestamp |
Mapeado do registro de mudanças |
transid |
event.idm.read_only_udm.additional.fields |
Mapeado do registro de mudanças |
method |
event.idm.read_only_udm.security_result.detection_fields |
Mapeado do registro de mudanças |
Registro de alterações
Ver o registro de alterações deste analisador
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.