Coletar registros do Sophos UTM

Compatível com:

Este documento explica como ingerir registros do Sophos UTM no Google Security Operations usando o Bindplane.

O Sophos UTM (gerenciamento unificado de ameaças) é um appliance de segurança de rede completo que oferece recursos de firewall, VPN, prevenção contra invasões, filtragem da Web e de e-mail e antivírus. Ele oferece gerenciamento de segurança centralizado para redes empresariais em um único console de gerenciamento baseado na Web. O analisador extrai campos de registros formatados em KV do Sophos UTM. Ele usa grok e/ou kv para analisar a mensagem de registro e mapeia esses valores para o modelo de dados unificado (UDM). Ele também define valores de metadados padrão para a origem e o tipo do evento.

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
  • Se você estiver executando por trás de um proxy, verifique se as portas do firewall estão abertas de acordo com os requisitos do agente Bindplane.
  • Acesso privilegiado à interface WebAdmin do Sophos UTM

Receber o arquivo de autenticação de ingestão do Google SecOps

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Agentes de coleta.
  3. Baixe o arquivo de autenticação de ingestão. Salve o arquivo de forma segura no sistema em que o Bindplane será instalado.

Receber o ID de cliente do Google SecOps

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Perfil.
  3. 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 sistema operacional Windows ou Linux de acordo com as instruções a seguir.

Instalação do Windows

  1. Abra o prompt de comando ou o PowerShell como administrador.
  2. Execute este comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. Aguarde a conclusão da instalação.

  4. Execute o seguinte comando para confirmar a instalação:

    sc query observiq-otel-collector
    

O serviço vai aparecer como EM EXECUÇÃO.

Instalação do Linux

  1. Abra um terminal com privilégios de root ou sudo.
  2. Execute este comando:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. Aguarde a conclusão da instalação.

  4. Execute o seguinte comando para confirmar a instalação:

    sudo systemctl status observiq-otel-collector
    

O 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/chronicle_w_labels:
            compression: gzip
            creds_file_path: '/path/to/ingestion-authentication-file.json'
            customer_id: 'YOUR_CUSTOMER_ID'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: 'SOPHOS_UTM'
            raw_log_field: body
            ingestion_labels:
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    

Parâmetros de configuração

  • Substitua os seguintes marcadores de posição:

    • Configuração do receptor:

      • udplog: use udplog para syslog UDP ou tcplog para syslog TCP.
      • 0.0.0.0: endereço IP para escutar (0.0.0.0 para escutar em todas as interfaces)
      • 514: número da porta a ser detectada (porta syslog padrão).
    • 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
      • YOUR_CUSTOMER_ID: ID do cliente da seção "Receber ID do cliente"
      • 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.
      • log_type: tipo de registro exatamente como aparece no Chronicle (SOPHOS_UTM)

Salve o arquivo de configuração.

  • Depois de editar, salve o arquivo:
    • Linux: pressione Ctrl+O, Enter e Ctrl+X.
    • Windows: clique em Arquivo > Salvar.

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-collector
    
    1. Verifique se o serviço está em execução:

        sudo systemctl status observiq-otel-collector
      
    2. Verifique 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-collector
      
    • Console de serviços:

      1. Pressione Win+R, digite services.msc e pressione Enter.
      2. Localize o Coletor do OpenTelemetry da observIQ.
      3. Clique com o botão direito do mouse e selecione Reiniciar.

      4. Verifique se o serviço está em execução:

        sc query observiq-otel-collector
        
      5. Verifique se há erros nos registros:

        type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
        

Configurar o encaminhamento de syslog no Sophos UTM

  1. Faça login na interface WebAdmin do Sophos UTM.
  2. Acesse Registro em log e geração de relatórios > Configurações de registro em log > Servidor Syslog remoto.
  3. Clique no botão para Ativar o syslog remoto.
  4. Informe os seguintes detalhes de configuração:
    • Servidor syslog remoto: insira o endereço IP do host do agente do Bindplane.
    • Porta: insira 514.
  5. Na seção Seleção de registros do Syslog remoto, selecione os tipos de registros a serem encaminhados:
    • Filtro de pacotes: registros de filtro de pacotes do firewall.
    • Filtro da Web: atividade de filtragem da Web
    • IPS: eventos do sistema de prevenção de intrusões
    • Autenticação: eventos de autenticação de usuários
    • E-mail: eventos de filtragem e quarentena de e-mail
    • Proteção de rede: registros de proteção contra ameaças avançadas
    • Proteção do WebServer: registros do WAF
    • VPN: eventos de conexão VPN
    • HA/Cluster: eventos de alta disponibilidade e cluster
    • Sistema: eventos no nível do sistema
    • DHCP: registros do servidor DHCP
    • DNS: registros de consultas DNS
  6. Clique em Aplicar para salvar a configuração.
  7. Verifique se as mensagens syslog estão sendo enviadas conferindo os registros do agente Bindplane.

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
ação security_result.action Se a ação for "pass" ou "accept", mapeie para "ALLOW". Se a ação for "drop", mapeie para "BLOCK".
ad_domain target.administrative_domain Mapeamento direto.
address target.ip, target.asset.ip Mapeamento direto, usado quando o ID é "2203".
app target.application Mapeamento direto.
app-id additional.fields[].key, additional.fields[].value.string_value Renomeado como app_id. Se não estiver vazio, a chave será definida como "app-id" e o valor será o próprio app-id.
aplicativo principal.application Mapeamento direto.
aptptime additional.fields[].key, additional.fields[].value.string_value Se não estiver vazio, a chave será definida como "aptptime" e o valor será o próprio aptptime.
auth extensions.auth.auth_details Mapeamento direto.
authtime additional.fields[].key, additional.fields[].value.string_value Se não estiver vazio e não for "0", a chave será definida como "authtime" e o valor será o próprio authtime.
avscantime additional.fields[].key, additional.fields[].value.string_value Se não estiver vazio e não for "0", a chave será definida como "avscantime" e o valor será o próprio avscantime.
categoria security_result.detection_fields[].key, security_result.detection_fields[].value Se não estiver vazio, a chave será definida como "category" e o valor será a própria categoria. Se o nome contiver "portscan", security_result.category será definido como "NETWORK_RECON", e um campo de detecção com a chave "category" e o valor "NETWORK_RECON" será adicionado.
categoryname security_result.category_details Mapeamento direto.
conexão security_result.rule_name Mapeamento direto, usado quando o ID é "2203".
Dados de tipo de conteúdo (Consulte outros campos) O campo de dados contém pares de chave-valor que são analisados em campos individuais.
datetime metadata.event_timestamp Analisado e mapeado como segundos desde a época.
device additional.fields[].key, additional.fields[].value.string_value Se não estiver vazio nem for "0", a chave será definida como "device" e o valor será o próprio dispositivo.
dnstime additional.fields[].key, additional.fields[].value.string_value Se não estiver vazio e não for "0", a chave será definida como "dnstime" e o valor será o próprio dnstime.
dstip target.ip, target.asset.ip Mapeamento direto. Também extraído do campo "url", se presente.
dstmac target.mac Mapeamento direto.
dstport target.port Mapeamento direto, convertido para número inteiro.
evento de erro security_result.summary Mapeamento direto, usado quando o ID é "2201", "2202" ou "2203".
exceptions additional.fields[].key, additional.fields[].value.string_value Se não estiver vazio, a chave será definida como "exceptions" e o valor será as próprias exceções.
arquivo about.file.full_path Mapeamento direto.
filteraction security_result.rule_name Mapeamento direto.
fullreqtime additional.fields[].key, additional.fields[].value.string_value Se não estiver vazio, a chave será definida como "fullreqtime", e o valor será o próprio fullreqtime.
fwrule security_result.rule_id Mapeamento direto.
grupo target.group.group_display_name Mapeamento direto.
ID metadata.product_log_id Mapeamento direto.
informações security_result.description Mapeamento direto. Se presente, metadata.event_type será definido como "NETWORK_UNCATEGORIZED".
Interface initf security_result.about.labels[].key, security_result.about.labels[].value Se não estiver vazio, um rótulo com a chave "Interface" e o valor "interface" será adicionado a security_result.about.labels.
ip_address target.ip, target.asset.ip Mapeamento direto.
mensagem de linha de comprimento security_result.summary Usado quando o ID é "0003". Também usado para análise geral do grok.
método network.http.method Mapeamento direto.
nome security_result.summary Mapeamento direto.
outitf pid target.process.pid Mapeamento direto.
porta target.port Mapeamento direto, convertido para número inteiro.
prec profile security_result.rule_name Mapeamento direto.
proto network.ip_protocol Convertido para o nome do protocolo IP usando uma tabela de pesquisa.
referenciador de motivo network.http.referral_url Mapeamento direto.
solicitação additional.fields[].key, additional.fields[].value.string_value Se não estiver vazia, a chave será definida como "request" e o valor será a própria solicitação.
reputação additional.fields[].key, additional.fields[].value.string_value Se não estiver vazio, a chave será definida como "reputation" e o valor será a reputação em si.
rx network.received_bytes Mapeamento direto, usado quando o ID é "2202", convertido em um número inteiro sem sinal.
gravidade do sandbox security_result.severity Se a gravidade for "info", mapeie para "LOW".
tamanho target.file.size Mapeamento direto, convertido em número inteiro sem sinal.
srcip principal.ip, principal.asset.ip Mapeamento direto.
srcmac principal.mac Mapeamento direto.
srcport principal.port Mapeamento direto, convertido para número inteiro.
statuscode network.http.response_code Mapeamento direto, convertido para número inteiro.
o Pub/Sub. network.application_protocol Se sub for "http", metadata.event_type será definido como "NETWORK_HTTP" e network.application_protocol será definido como "HTTP". Se sub for "packetfilter", metadata.description será definido como sub. Caso contrário, convertido para o nome do protocolo do aplicativo usando uma tabela de pesquisa. Se nenhuma correspondência for encontrada na tabela de pesquisa, o dstport será usado para a pesquisa.
sys metadata.product_event_type Mapeamento direto.
tcpflags tos ttl tx network.sent_bytes Mapeamento direto, usado quando o ID é "2202", convertido em um número inteiro sem sinal.
ua network.http.user_agent Mapeamento direto.
url network.http.referral_url, target.hostname, target.asset.hostname Mapeamento direto para network.http.referral_url. Nome do host extraído para target.hostname e target.asset.hostname. Também usado para extrair dstip.
usuário target.user.userid Mapeamento direto.
nome de usuário target.user.userid Mapeamento direto, usado quando o ID é "2201" ou "2202".
variante Não incluído na UDM final, mas usado na descrição Usado em conjunto com "sub" para criar "security_result.description" quando o ID é "2201", "2202" ou "2203".
virtual_ip target.ip, target.asset.ip Mapeamento direto, usado quando o ID é "2201" ou "2202".
metadata.event_type metadata.event_type Inicializado como "GENERIC_EVENT". Definido como valores específicos com base no conteúdo do registro e na lógica do analisador.
metadata.log_type metadata.log_type Fixado no código como "SOPHOS_UTM".
metadata.product_name metadata.product_name Fixado no código como "SOPHOS UTM".
metadata.vendor_name metadata.vendor_name Fixado no código como "SOPHOS Ltd".
intermediary.hostname intermediary.hostname Extraído da mensagem de registro usando grok e renomeado.

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.