Coletar registros do Sophos Capsule8
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
- Sophos Linux Sensor versão 5.5.2.22 ou mais recente.
- 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
- O URL do MCS do Sophos Central e o ID do locatário.
- Um token de API de repositório de pacotes SLS válido.
Como encontrar o URL do MCS
- Faça login no Sophos Central.
- Clique no nome da conta > Configurações de suporte.
- 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á. 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
- Abra
/etc/sophos/runtimedetections.yaml
em um editor de texto. 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
Salve as mudanças e saia.
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.
- Abra
/etc/sophos/runtimedetections.yaml
em um editor de texto. 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
Salve as mudanças e saia.
Reinicie o sensor:
systemctl restart sophoslinuxsensor
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 de forma segura no sistema em que o Bindplane será instalado.
Receber o ID do 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
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" /quiet
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.sh
Outros recursos de instalação
- Para mais opções de instalação, consulte este guia de instalação.
Configurar o agente do Bindplane para ingerir o Syslog e enviar ao Google SecOps
Acesse o arquivo de configuração:
- 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. - Abra o arquivo usando um editor de texto (por exemplo,
nano
,vi
ou Bloco de Notas).
- Localize o arquivo
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
- Faça login no Sophos Central Admin.
- Selecione Configurações globais > Gerenciamento de tokens de API.
- Clique em Adicionar token para criar um novo.
- Insira um nome para o token e clique em Salvar. O Resumo do token de API do token fornecido vai aparecer.
- 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
- Abra o navegador da Web e acesse o site do Python.
- Clique em Fazer o download do Python para seu sistema operacional.
Instale o Python:
- No Windows:
- Execute o instalador.
- Marque a caixa Adicionar Python ao PATH.
- Clique em Instalar agora.
No Mac:
- O Python já pode estar instalado. Caso contrário, instale a versão mais recente usando o terminal.
Abra o Terminal e digite o seguinte comando:
python --version
- No Windows:
Baixar o script de integração do Sophos
- Acesse a página do GitHub para o repositório do GitHub de integração do SIEM do Sophos Central.
- Clique no botão verde Code > Download ZIP.
- Extraia o arquivo ZIP.
Configurar o script
- Abra o arquivo
config.ini
no diretório em que você extraiu o arquivo ZIP. - 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.
- Salve o arquivo.
Executar o script
Acesse a pasta de scripts.
No Windows:
- Pressione a tecla Windows e digite
cmd
. - Clique em Prompt de comando.
- Acesse a pasta do script:
cd C:/Users/YourName/Downloads/Sophos-Central-SIEM-Integration
- Pressione a tecla Windows e digite
No macOS:
- Acesse Aplicativos > Utilitários.
- Abra o Terminal.
- Acesse a pasta do script:
cd /Users/YourName/Downloads/Sophos-Central-SIEM-Integration
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):
- Abra o Agendador de tarefas digitando Agendador de tarefas no menu Iniciar.
- Clique em Criar tarefa.
- Na guia Geral:
- Nomeie a tarefa (por exemplo,
Sophos AV Log Export
).
- Nomeie a tarefa (por exemplo,
- Na guia Gatilhos:
- Clique em Novo e defina a tarefa para ser executada Diariamente ou Na inicialização (dependendo da sua preferência).
- Na guia Ações:
- Clique em Novo e selecione Iniciar um programa.
- Procure o executável
python.exe
(geralmente encontrado emC:/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
).
- Clique em OK para salvar a tarefa.
Automatize o script para ser executado continuamente no Mac (usando Cron Jobs):
- Abra o Terminal.
- Digite
crontab -e
e pressione Enter. Adicione uma nova linha ao final do arquivo:
* * * * * /usr/bin/python /Users/YourName/Downloads/Sophos-Central-SIEM-Integration/siem.py
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.