Recolha registos do Sophos Capsule8

Compatível com:

Este documento explica como recolher registos do Sophos Linux Sensor (anteriormente Capsule8) através do Bindplane. O Sophos Capsule8 oferece proteção em tempo de execução para cargas de trabalho Linux, contentores e ambientes Kubernetes através da deteção e resposta a ameaças ao nível do kernel com a tecnologia eBPF. O analisador extrai e estrutura primeiro os dados de registo formatados em JSON. Em seguida, mapeia os campos extraídos para os respetivos atributos no modelo de dados unificado (UDM) do Chronicle, focando-se nos metadados, nos resultados de segurança e nas informações principais.

Antes de começar

Certifique-se de que tem os seguintes pré-requisitos:

  • Uma instância do Google SecOps
  • Windows 2016 ou posterior, ou um anfitrião Linux com systemd
  • Uma máquina Windows ou Linux adicional capaz de executar continuamente o Python
  • Se estiver a ser executado através de um proxy, certifique-se de que as portas da firewall estão abertas de acordo com os requisitos do agente Bindplane
  • Acesso privilegiado à consola de administração do Sophos Central
  • Sophos Linux Sensor (anteriormente Capsule8) implementado nos seus sistemas Linux

Configure o sensor Linux da Sophos para exportar alertas para o Sophos Central

Antes de configurar a integração, tem de configurar primeiro o sensor Linux da Sophos para enviar dados de alertas para o Sophos Central.

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

  1. Versão 5.5.2.22 ou posterior do Sophos Linux Sensor.
  2. Uma das seguintes licenças:
    • Intercept X Advanced for Server com XDR
    • Servidor essencial de deteção e resposta geridas centralmente
    • Servidor completo de deteção e resposta geridas centralmente
  3. O URL do MCS do Sophos Central e o ID do inquilino.
  4. Um token de API do repositório de pacotes do SLS válido.

Encontrar o URL do MCS

  1. Inicie sessão no Sophos Central.
  2. Clique no nome da conta > Definições de apoio técnico.
  3. Procure a linha que começa com This account is located para saber em que região geográfica se encontra a sua conta do Sophos Central.
  4. Use a tabela seguinte para encontrar o seu URL do MCS com base na sua região:

    Região URL do MCS
    Estados Unidos (Oregon) 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 não vir a sua região na tabela, use mcs2.stn100bom.ctr.sophos.com como URL do MCS.

Configure a saída de alertas do sensor Linux da Sophos

  1. Abra /etc/sophos/runtimedetections.yaml num editor de texto.
  2. Adicione as linhas seguintes, substituindo os valores dos marcadores de posição 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. Guarde as alterações e saia.

  4. Reinicie o sensor:

    systemctl restart sophoslinuxsensor
    

Opcional: configure o sensor Linux da Sophos para enviar meta eventos para o Data Lake

A partir da versão 5.11.0, o SLS suporta o envio de dados de eventos para o Sophos Data Lake.

  1. Abra /etc/sophos/runtimedetections.yaml num 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. Guarde as alterações e saia.

  4. Reinicie o sensor:

    systemctl restart sophoslinuxsensor
    

Obtenha o ficheiro de autenticação de carregamento do Google SecOps

  1. Inicie sessão na consola Google SecOps.
  2. Aceda a Definições do SIEM > Agentes de recolha.
  3. Transfira o ficheiro de autenticação de carregamento. Guarde o ficheiro de forma segura no sistema onde o Bindplane vai ser instalado.

Obtenha o ID de cliente do Google SecOps

  1. Inicie sessão na consola Google SecOps.
  2. Aceda a Definições do SIEM > Perfil.
  3. Copie e guarde o ID do cliente da secção Detalhes da organização.

Instale o agente do Bindplane

Instalação do Windows

  1. Abra a Linha de comandos ou o PowerShell como administrador.
  2. Execute o seguinte 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 raiz ou sudo.
  2. Execute o seguinte comando:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

Recursos de instalação adicionais

Configure o agente Bindplane para carregar o Syslog e enviá-lo para o Google SecOps

  1. Aceda ao ficheiro de configuração:

    1. Localize o ficheiro config.yaml. Normalmente, encontra-se no diretório /etc/bindplane-agent/ no Linux ou no diretório de instalação no Windows.
    2. Abra o ficheiro com um editor de texto (por exemplo, nano, vi ou Bloco de notas).
  2. Edite o ficheiro 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
    

Reinicie o agente do Bindplane para aplicar as alterações

  • 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, pode usar a consola Serviços ou introduzir o seguinte comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configure o acesso à API do Sophos Central

  1. Inicie sessão no Sophos Central Admin.
  2. Selecione Definições globais > Gestão de tokens da API.
  3. Clique em Adicionar token para criar um novo token.
  4. Introduza um nome de token e clique em Guardar. É apresentado o Resumo do token de API para o token fornecido.
  5. Na secção Resumo do token de API, clique em Copiar para copiar o URL e os cabeçalhos de acesso à API.

Instale o Python numa máquina adicional

  1. Abra o navegador de Internet e aceda ao Website do Python.
  2. Clique em Transferir Python para o seu sistema operativo.
  3. Instale o Python:

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

      1. O Python pode já estar instalado. Caso contrário, pode instalar a versão mais recente através do terminal.
      2. Abra o Terminal e escreva o seguinte comando:

        python --version
        

Transfira o script de integração do Sophos

  1. Aceda à página do GitHub do repositório do GitHub de integração do SIEM do Sophos Central.
  2. Clique no botão verde Código > Transferir ZIP.
  3. Extraia o ficheiro ZIP.

Configure a configuração do script

  1. Abra o ficheiro config.ini no diretório onde extraiu o arquivo ZIP.
  2. Edite o ficheiro de configuração:
    • Token de API: introduza a chave da API copiada anteriormente do Sophos Central.
    • Detalhes do servidor Syslog: introduza os detalhes do seu servidor Syslog.
    • Anfitrião: introduza o endereço IP do agente BindPlane.
    • Porta: introduza o número da porta do agente BindPlane.
    • Protocolo: introduza UDP (também pode usar TCP ou TLS, consoante a sua configuração).
  3. Guarde o ficheiro.

Execute o script

  1. Aceda à pasta de scripts.

    • Em Windows:

      1. Prima a tecla Windows e escreva cmd.
      2. Clique em Linha de comandos.
      3. Aceda à pasta de scripts:
      cd C:/Users/YourName/Downloads/Sophos-Central-SIEM-Integration
      
    • No macOS:

      1. Aceda a Aplicações > Utilitários.
      2. Abra o Terminal.
      3. Aceda à pasta de scripts:
      cd /Users/YourName/Downloads/Sophos-Central-SIEM-Integration
      
  2. Execute o guião:

    • Escreva o seguinte comando para iniciar o script:

      python siem.py
      

Automatize o script para ser executado continuamente no Windows (através do Agendador de tarefas):

  1. Abra o Agendador de tarefas escrevendo Agendador de tarefas no menu Iniciar.
  2. Clique em Criar tarefa.
  3. No separador Geral:
    • Atribua um nome à tarefa (por exemplo, Sophos AV Log Export).
  4. No separador Acionadores:
    • Clique em Novo e defina a tarefa para ser executada Diariamente ou No arranque (consoante a sua preferência).
  5. No separador Ações:
    • Clique em Novo e selecione Iniciar um programa.
    • Procure o ficheiro executável python.exe (normalmente, encontra-se em C:/Python/XX/python.exe).
    • No campo Adicionar argumentos, escreva o caminho para o guião (por exemplo, C:/Users/YourName/Downloads/Sophos-Central-SIEM-Integrationsiem.py).
  6. Clique em OK para guardar a tarefa.

Automatize o script para ser executado continuamente no Mac (através de tarefas cron):

  1. Abra o Terminal.
  2. Escreva crontab -e e prima Enter.
  3. Adicione uma nova linha no final do ficheiro:

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

Tabela de mapeamento da UDM

Campo de registo Mapeamento de 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 a partir do campo de comentários.
confiança read_only_udm.security_result.severity_details Mapeado diretamente a partir do campo de confiança.
descrição read_only_udm.security_result.summary Mapeado diretamente a partir do campo de descrição.
incident_id read_only_udm.security_result.rule_id Mapeado diretamente a partir do campo incident_id.
linhagem principal.process.parent_process... A matriz de linhagem é usada para preencher uma cadeia de processos principais, até 15 níveis de profundidade. Cada elemento na matriz de linhagem representa um processo na cadeia, sendo o índice 0 o elemento principal imediato e os índices mais elevados os antepassados mais distantes. Os campos pid e name de cada elemento de linhagem são mapeados para os campos correspondentes no UDM.
location.container_id principal.labels.value Mapeado diretamente a partir do campo location.container_id. A chave correspondente está definida como "container_id".
location.container_labels.maintainer principal.labels.value Mapeado diretamente a partir do campo location.container_labels.maintainer. A chave correspondente está definida como "responsável".
location.container_name principal.labels.value Mapeado diretamente a partir do campo location.container_name. A chave correspondente está definida como "container_name".
location.image_id principal.labels.value Mapeado diretamente a partir do campo location.image_id. A chave correspondente está definida como "image_id".
location.image_name principal.labels.value Mapeado diretamente a partir do campo location.image_name. A chave correspondente está definida como "image_name".
location.kubernetes_namespace principal.labels.value Mapeado diretamente a partir do campo location.kubernetes_namespace. A chave correspondente está definida como "kubernetes_namespace".
location.kubernetes_pod principal.labels.value Mapeado diretamente a partir do campo location.kubernetes_pod. A chave correspondente está definida como "kubernetes_pod".
matched_rule read_only_udm.security_result.rule_name Mapeado diretamente a partir do campo matched_rule.
metadata.gcp_instance_hostname principal.hostname Mapeado diretamente a partir 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 através de uma expressão regular.
metadata.gcp_project_id principal.cloud.project.name Mapeado diretamente a partir do campo metadata.gcp_project_id.
metadata.gcp_project_numeric_id principal.cloud.project.id Mapeado diretamente a partir 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 através de uma expressão regular.
metadata.network_interface_eth0_hardware_addr principal.mac Mapeado diretamente a partir do campo metadata.network_interface_eth0_hardware_addr.
policy_type read_only_udm.metadata.product_event_type Mapeado diretamente a partir do campo policy_type.
process_info.args principal.labels.value Cada elemento na matriz process_info.args é adicionado como uma etiqueta separada. A chave está definida como "process_info.arg[index]", em que o índice é a posição do argumento na matriz.
process_info.name principal.process.file.full_path Mapeado diretamente a partir do campo process_info.name.
process_info.pid principal.process.pid Mapeado diretamente a partir do campo process_info.pid.
process_info.ppid principal.process.parent_process.pid Mapeado diretamente a partir do campo process_info.ppid.
prioridade read_only_udm.security_result.severity Mapeado diretamente a partir do campo de prioridade, convertido em maiúsculas.
timestamp read_only_udm.metadata.event_timestamp Mapeado diretamente a partir do campo de data/hora.
uuid read_only_udm.metadata.product_log_id Mapeado diretamente a partir 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 da Google SecOps.