Coletar registros do Sophos Capsule8

Compatível com:

Este documento explica como coletar registros do Sophos Linux Sensor (antigo Capsule8) usando o Bindplane. O Sophos Capsule8 oferece proteção em tempo de execução para cargas de trabalho, contêineres e ambientes do Kubernetes no Linux. Ele detecta e responde a ameaças no nível do kernel usando a tecnologia eBPF. Primeiro, o analisador extrai e estrutura os dados de registro formatados em JSON. Em seguida, ele mapeia os campos extraídos para os atributos correspondentes no modelo de dados unificado (UDM) do Chronicle, com foco em metadados, resultados de segurança e informações principais.

Antes de começar

Verifique se você tem os pré-requisitos a seguir:

  • Uma instância do Google SecOps
  • Windows 2016 ou mais recente ou um host Linux com systemd
  • Outra máquina Windows ou Linux capaz de executar Python continuamente
  • 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 ao console do Sophos Central Admin
  • O Sophos Linux Sensor (antigo Capsule8) implantado nos seus sistemas Linux

Configurar o sensor do Linux da Sophos para exportar alertas para o Sophos Central

Antes de configurar a integração, configure o Sophos Linux Sensor para enviar dados de alerta ao Sophos Central.

Pré-requisitos para a integração do Sophos Central

  1. Sophos Linux Sensor versão 5.5.2.22 ou mais recente.
  2. Uma das seguintes licenças:
    • Intercept X Advanced para servidor com XDR
    • Servidor essencial de detecção e resposta gerenciada centralizada
    • Servidor completo de detecção e resposta gerenciada centralizada
  3. O URL do MCS do Sophos Central e o ID do locatário.
  4. Um token de API de repositório de pacotes SLS válido.

Como encontrar o URL do MCS

  1. Faça login no Sophos Central.
  2. Clique no nome da conta > Configurações de suporte.
  3. Procure a linha que começa com This account is located para descobrir em qual região geográfica sua conta do Sophos Central está.
  4. Use a tabela a seguir para encontrar seu URL do MCS com base na sua região:

    Região URL do MCS
    Estados Unidos (Óregon) mcs2-cloudstation-us-west-2.prod.hydra.sophos.com
    Estados Unidos (Ohio) mcs2-cloudstation-us-east-2.prod.hydra.sophos.com
    Irlanda mcs2-cloudstation-eu-west-1.prod.hydra.sophos.com
    Alemanha mcs2-cloudstation-eu-central-1.prod.hydra.sophos.com
    Canadá mcs2.stn100yul.ctr.sophos.com
    Austrália mcs2.stn100syd.ctr.sophos.com
    Ásia-Pacífico (Tóquio) mcs2.stn100hnd.ctr.sophos.com
    América do Sul (São Paulo) mcs2.stn100gru.ctr.sophos.com

Se a sua região não estiver na tabela, use mcs2.stn100bom.ctr.sophos.com como URL do MCS.

Configurar a saída de alerta do sensor do Linux da Sophos

  1. Abra /etc/sophos/runtimedetections.yaml em um editor de texto.
  2. Adicione as seguintes linhas, substituindo os valores do marcador pelos detalhes reais do Sophos Central:

    send_labs_telemetry: true
    endpoint_telemetry_enabled: true
    cloud_meta: auto
    
    # Set your customer id:
    customer_id: "{tenant-id}"
    
    mcs:
      token: "{LINUX_REPO_API_KEY}"
      url: "{MCS_URL}"
      enabled: true
    
  3. Salve as mudanças e saia.

  4. Reinicie o sensor:

    systemctl restart sophoslinuxsensor
    

Opcional: configure o sensor do Linux da Sophos para enviar metaeventos ao data lake

A partir da versão 5.11.0, o SLS permite enviar dados de eventos para o data lake da Sophos.

  1. Abra /etc/sophos/runtimedetections.yaml em um editor de texto.
  2. Adicione a seguinte configuração:

    investigations:
      reporting_interval: 5s
      zeromq:
        topics:
        - process_events: running_processes_linux_events
          audit_user_msg: user_events_linux
      sinks:
      - backend: mcs
        name: "mcs"
        type: mcs
      flight_recorder:
        enabled: true
        tables:
        - name: "process_events"
          enabled: true
          rows: 1000
          filter:
          - match eventType == "PROCESS_EVENT_TYPE_EXEC"
          - match eventType == "BASELINE_TASK"
          - default ignore
        - name: "audit_user_msg"
          enabled: true
          rows: 1000
          filter:
          - ignore programName == "cron"
          - ignore processPid == 1
          - default match
    
  3. Salve as mudanças e saia.

  4. Reinicie o sensor:

    systemctl restart sophoslinuxsensor
    

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 do 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

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
    

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
    

Outros recursos de instalação

Configurar o agente do Bindplane para ingerir o Syslog e enviar ao Google SecOps

  1. Acesse o arquivo de configuração:

    1. Localize o arquivo config.yaml. Normalmente, ele fica no diretório /etc/bindplane-agent/ no Linux ou no diretório de instalação no Windows.
    2. Abra o arquivo usando um editor de texto (por exemplo, nano, vi ou Bloco de Notas).
  2. Edite o arquivo config.yaml da seguinte forma:

    receivers:
      udplog:
        # Replace the port and IP address as required
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/chronicle_w_labels:
        compression: gzip
        # Adjust the path to the credentials file you downloaded in Step 1
        creds_file_path: '/path/to/ingestion-authentication-file.json'
        # Replace with your actual customer ID from Step 2
        customer_id: <customer_id>
        endpoint: malachiteingestion-pa.googleapis.com
        # Add optional ingestion labels for better organization
        log_type: 'SOPHOS_CAPSULE8'
        raw_log_field: body
        ingestion_labels:
    
    service:
      pipelines:
        logs/source0__chronicle_w_labels-0:
          receivers:
            - udplog
          exporters:
            - chronicle/chronicle_w_labels
    
    • Substitua a porta e o endereço IP conforme necessário na sua infraestrutura.
    • Substitua <customer_id> pelo ID do cliente real.
    • Atualize /path/to/ingestion-authentication-file.json para o caminho em que o arquivo de autenticação foi salvo na seção Receber arquivo de autenticação de ingestão do Google SecOps.

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 bindplane-agent
    
  • Para reiniciar o agente do Bindplane no Windows, use o console Serviços ou insira o seguinte comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configurar o acesso à API do Sophos Central

  1. Faça login no Sophos Central Admin.
  2. Selecione Configurações globais > Gerenciamento de tokens de API.
  3. Clique em Adicionar token para criar um novo.
  4. Insira um nome para o token e clique em Salvar. O Resumo do token de API do token fornecido vai aparecer.
  5. Na seção Resumo do token de API, clique em Copiar para copiar o URL e os cabeçalhos de acesso à API.

Instalar o Python em outra máquina

  1. Abra o navegador da Web e acesse o site do Python.
  2. Clique em Fazer o download do Python para seu sistema operacional.
  3. Instale o Python:

    • No Windows:
      1. Execute o instalador.
      2. Marque a caixa Adicionar Python ao PATH.
      3. Clique em Instalar agora.
    • No Mac:

      1. O Python já pode estar instalado. Caso contrário, instale a versão mais recente usando o terminal.
      2. Abra o Terminal e digite o seguinte comando:

        python --version
        

Baixar o script de integração do Sophos

  1. Acesse a página do GitHub para o repositório do GitHub de integração do SIEM do Sophos Central.
  2. Clique no botão verde Code > Download ZIP.
  3. Extraia o arquivo ZIP.

Configurar o script

  1. Abra o arquivo config.ini no diretório em que você extraiu o arquivo ZIP.
  2. Edite o arquivo de configuração:
    • Token da API: insira a chave de API copiada anteriormente do Sophos Central.
    • Detalhes do servidor Syslog: insira os detalhes do seu servidor Syslog.
    • Host: insira o endereço IP do agente do BindPlane.
    • Porta: insira o número da porta do agente do BindPlane.
    • Protocolo: insira UDP. Também é possível usar TCP ou TLS, dependendo da sua configuração.
  3. Salve o arquivo.

Executar o script

  1. Acesse a pasta de scripts.

    • No Windows:

      1. Pressione a tecla Windows e digite cmd.
      2. Clique em Prompt de comando.
      3. Acesse a pasta do script:
      cd C:/Users/YourName/Downloads/Sophos-Central-SIEM-Integration
      
    • No macOS:

      1. Acesse Aplicativos > Utilitários.
      2. Abra o Terminal.
      3. Acesse a pasta do script:
      cd /Users/YourName/Downloads/Sophos-Central-SIEM-Integration
      
  2. Execute o script:

    • Digite o seguinte comando para iniciar o script:

      python siem.py
      

Automatize o script para ser executado continuamente no Windows (usando o Agendador de Tarefas):

  1. Abra o Agendador de tarefas digitando Agendador de tarefas no menu Iniciar.
  2. Clique em Criar tarefa.
  3. Na guia Geral:
    • Nomeie a tarefa (por exemplo, Sophos AV Log Export).
  4. Na guia Gatilhos:
    • Clique em Novo e defina a tarefa para ser executada Diariamente ou Na inicialização (dependendo da sua preferência).
  5. Na guia Ações:
    • Clique em Novo e selecione Iniciar um programa.
    • Procure o executável python.exe (geralmente encontrado em C:/Python/XX/python.exe).
    • No campo Adicionar argumentos, digite o caminho para o script (por exemplo, C:/Users/YourName/Downloads/Sophos-Central-SIEM-Integrationsiem.py).
  6. Clique em OK para salvar a tarefa.

Automatize o script para ser executado continuamente no Mac (usando Cron Jobs):

  1. Abra o Terminal.
  2. Digite crontab -e e pressione Enter.
  3. Adicione uma nova linha ao final do arquivo:

    * * * * * /usr/bin/python /Users/YourName/Downloads/Sophos-Central-SIEM-Integration/siem.py
    
  4. Clique em Salvar e saia do editor.

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
categorias read_only_udm.security_result.category_details Cada elemento na matriz de categorias é adicionado como um category_details separado.
comentários read_only_udm.security_result.description Mapeado diretamente do campo "comments".
confiança read_only_udm.security_result.severity_details Mapeado diretamente do campo "confidence".
descrição read_only_udm.security_result.summary Mapeado diretamente do campo "description".
incident_id read_only_udm.security_result.rule_id Mapeado diretamente do campo "incident_id".
linhagem principal.process.parent_process... A matriz de linhagem é usada para preencher uma cadeia de processos principais, com até 15 níveis de profundidade. Cada elemento na matriz de linhagem representa um processo na cadeia, sendo o índice 0 o pai imediato e os índices mais altos representando ancestrais mais distantes. Os campos "pid" e "name" de cada elemento de linhagem são mapeados para os campos correspondentes na UDM.
location.container_id principal.labels.value Mapeado diretamente do campo "location.container_id". A chave correspondente é definida como "container_id".
location.container_labels.maintainer principal.labels.value Mapeado diretamente do campo "location.container_labels.maintainer". A chave correspondente é definida como "maintainer".
location.container_name principal.labels.value Mapeado diretamente do campo "location.container_name". A chave correspondente é definida como "container_name".
location.image_id principal.labels.value Mapeado diretamente do campo "location.image_id". A chave correspondente é definida como "image_id".
location.image_name principal.labels.value Mapeado diretamente do campo "location.image_name". A chave correspondente é definida como "image_name".
location.kubernetes_namespace principal.labels.value Mapeado diretamente do campo "location.kubernetes_namespace". A chave correspondente é definida como "kubernetes_namespace".
location.kubernetes_pod principal.labels.value Mapeado diretamente do campo "location.kubernetes_pod". A chave correspondente é definida como "kubernetes_pod".
matched_rule read_only_udm.security_result.rule_name Mapeado diretamente do campo "matched_rule".
metadata.gcp_instance_hostname principal.hostname Mapeado diretamente do campo "metadata.gcp_instance_hostname".
metadata.gcp_instance_zone principal.cloud.availability_zone A zona de disponibilidade é extraída do campo "metadata.gcp_instance_zone" usando uma expressão regular.
metadata.gcp_project_id principal.cloud.project.name Mapeado diretamente do campo "metadata.gcp_project_id".
metadata.gcp_project_numeric_id principal.cloud.project.id Mapeado diretamente do campo "metadata.gcp_project_numeric_id".
metadata.network_interface_eth0_addr_0 principal.ip O endereço IP é extraído do campo "metadata.network_interface_eth0_addr_0" usando uma expressão regular.
metadata.network_interface_eth0_hardware_addr principal.mac Mapeado diretamente do campo "metadata.network_interface_eth0_hardware_addr".
policy_type read_only_udm.metadata.product_event_type Mapeado diretamente do campo "policy_type".
process_info.args principal.labels.value Cada elemento na matriz process_info.args é adicionado como um rótulo separado. A chave é definida como "process_info.arg[index]", em que "index" é a posição do argumento na matriz.
process_info.name principal.process.file.full_path Mapeado diretamente do campo "process_info.name".
process_info.pid principal.process.pid Mapeado diretamente do campo "process_info.pid".
process_info.ppid principal.process.parent_process.pid Mapeado diretamente do campo "process_info.ppid".
prioridade read_only_udm.security_result.severity Mapeado diretamente do campo "priority", convertido em letras maiúsculas.
timestamp read_only_udm.metadata.event_timestamp Mapeado diretamente do campo de carimbo de data/hora.
uuid read_only_udm.metadata.product_log_id Mapeado diretamente do campo "uuid".
N/A read_only_udm.metadata.log_type Definido como um valor constante de "SOPHOS_CAPSULE8".
N/A read_only_udm.metadata.event_type Definido como um valor constante de "SCAN_HOST".
N/A read_only_udm.metadata.vendor_name Definido como um valor constante de "Sophos".
N/A read_only_udm.metadata.product_name Definido como um valor constante de "Capsule8".

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