Recolha registos do Sophos Capsule8
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
- Versão 5.5.2.22 ou posterior do Sophos Linux Sensor.
- 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
- O URL do MCS do Sophos Central e o ID do inquilino.
- Um token de API do repositório de pacotes do SLS válido.
Encontrar o URL do MCS
- Inicie sessão no Sophos Central.
- Clique no nome da conta > Definições de apoio técnico.
- 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. 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
- Abra
/etc/sophos/runtimedetections.yaml
num editor de texto. 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
Guarde as alterações e saia.
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.
- Abra
/etc/sophos/runtimedetections.yaml
num 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
Guarde as alterações e saia.
Reinicie o sensor:
systemctl restart sophoslinuxsensor
Obtenha o ficheiro de autenticação de carregamento do Google SecOps
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Agentes de recolha.
- 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
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Perfil.
- Copie e guarde o ID do cliente da secção Detalhes da organização.
Instale o agente do Bindplane
Instalação do Windows
- Abra a Linha de comandos ou o PowerShell como administrador.
Execute o seguinte 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 raiz ou sudo.
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
- Para ver opções de instalação adicionais, consulte este guia de instalação.
Configure o agente Bindplane para carregar o Syslog e enviá-lo para o Google SecOps
Aceda ao ficheiro de configuração:
- 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. - Abra o ficheiro com um editor de texto (por exemplo,
nano
,vi
ou Bloco de notas).
- Localize o ficheiro
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
- Substitua a porta e o endereço IP conforme necessário na sua infraestrutura.
- Substitua
<customer_id>
pelo ID de cliente real. - Atualize
/path/to/ingestion-authentication-file.json
para o caminho onde o ficheiro de autenticação foi guardado na secção Obtenha o ficheiro de autenticação de carregamento do Google SecOps.
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
- Inicie sessão no Sophos Central Admin.
- Selecione Definições globais > Gestão de tokens da API.
- Clique em Adicionar token para criar um novo token.
- Introduza um nome de token e clique em Guardar. É apresentado o Resumo do token de API para o token fornecido.
- 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
- Abra o navegador de Internet e aceda ao Website do Python.
- Clique em Transferir Python para o seu sistema operativo.
Instale o Python:
- No Windows:
- Execute o instalador.
- Selecione a caixa que indica Adicionar Python ao PATH.
- Clique em Instalar agora.
Em Mac:
- O Python pode já estar instalado. Caso contrário, pode instalar a versão mais recente através do terminal.
Abra o Terminal e escreva o seguinte comando:
python --version
- No Windows:
Transfira o script de integração do Sophos
- Aceda à página do GitHub do repositório do GitHub de integração do SIEM do Sophos Central.
- Clique no botão verde Código > Transferir ZIP.
- Extraia o ficheiro ZIP.
Configure a configuração do script
- Abra o ficheiro
config.ini
no diretório onde extraiu o arquivo ZIP. - 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).
- Guarde o ficheiro.
Execute o script
Aceda à pasta de scripts.
Em Windows:
- Prima a tecla Windows e escreva
cmd
. - Clique em Linha de comandos.
- Aceda à pasta de scripts:
cd C:/Users/YourName/Downloads/Sophos-Central-SIEM-Integration
- Prima a tecla Windows e escreva
No macOS:
- Aceda a Aplicações > Utilitários.
- Abra o Terminal.
- Aceda à pasta de scripts:
cd /Users/YourName/Downloads/Sophos-Central-SIEM-Integration
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):
- Abra o Agendador de tarefas escrevendo Agendador de tarefas no menu Iniciar.
- Clique em Criar tarefa.
- No separador Geral:
- Atribua um nome à tarefa (por exemplo,
Sophos AV Log Export
).
- Atribua um nome à tarefa (por exemplo,
- No separador Acionadores:
- Clique em Novo e defina a tarefa para ser executada Diariamente ou No arranque (consoante a sua preferência).
- No separador Ações:
- Clique em Novo e selecione Iniciar um programa.
- Procure o ficheiro executável
python.exe
(normalmente, encontra-se emC:/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
).
- Clique em OK para guardar a tarefa.
Automatize o script para ser executado continuamente no Mac (através de tarefas cron):
- Abra o Terminal.
- Escreva
crontab -e
e prima Enter. Adicione uma nova linha no final do ficheiro:
* * * * * /usr/bin/python /Users/YourName/Downloads/Sophos-Central-SIEM-Integration/siem.py
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.