Coletar registros do Sophos Central
Este documento explica como coletar registros do Sophos Central usando o Bindplane. O analisador transforma os registros JSON em um modelo de dados unificado (UDM). Ele extrai campos de estruturas JSON aninhadas, as mapeia para campos do UDM e realiza a categorização de eventos com base no campo type, enriquecendo os dados com detalhes e ações específicos para diferentes tipos de eventos do Sophos Central.
Antes de começar
- Verifique se você tem uma instância do Google Security Operations.
- Verifique se você está usando o Windows 2016 ou uma versão mais recente ou um host Linux com
systemd
. - Verifique se você tem outra máquina Windows ou Linux capaz de executar o Python continuamente.
- Se estiver executando por trás de um proxy, verifique se as portas do firewall estão abertas.
- Verifique se você tem acesso privilegiado ao Sophos XG Firewall.
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.
- Faça o download do arquivo de autenticação de transferência. Salve o arquivo com segurança no sistema em que o BindPlane será instalado.
Receber o ID de 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 raiz 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 processar o Syslog e enviar ao Google SecOps
Acesse o arquivo de configuração:
- Localize o arquivo
config.yaml
. Normalmente, ele está 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 Notepad).
- 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: '/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 ingestion_labels: log_type: SYSLOG namespace: sophos_central raw_log_field: body 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 real do cliente.Atualize
/path/to/ingestion-authentication-file.json
para o caminho em que o arquivo de autenticação foi salvo na seção Receber o 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 Services ou digite o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configurar o acesso à API 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 token.
- Insira um nome de token e clique em Salvar. O resumo do token da API para o token fornecido é exibido.
- Na seção Resumo do token de API, clique em Copiar para copiar o URL de acesso à API e os cabeçalhos.
Instalar o Python na máquina extra
- Abra o navegador da Web e acesse o site do Python.
- Clique em Fazer o download do Python para seu sistema operacional (Windows ou Mac).
Instale o Python.
- No Windows:
- Execute o instalador.
- Marque a caixa Add Python to PATH.
- Clique em Instalar agora.
No Mac:
- O Python pode já estar instalado. Caso contrário, você pode instalar a versão mais recente usando o terminal.
Abra o Terminal e digite o seguinte comando:
python --version
- No Windows:
Fazer o download do script de integração do Sophos
- Acesse a página do GitHub para o repositório do GitHub da integração do SIEM do Sophos Central.
- Clique no botão verde Code > Download ZIP.
- Extraia o arquivo ZIP.
Configurar o script
- Encontre e abra o arquivo
config.ini
com um editor de texto. - 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 servidor syslog.
- Host: insira o endereço IP do Bindplane.
- Port: insira o número da porta do Bindplane.
- Protocolo: insira UDP. Você também pode usar TCP ou TLS, dependendo da sua configuração.
- Salve o arquivo.
Executar o script
Acesse a pasta do script.
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 que ele seja executado continuamente no Windows (usando o Agendador de tarefas):
- Para abrir o Agendador de tarefas, digite Agendador de tarefas no menu "Iniciar".
- Clique em Criar tarefa.
- Na guia Geral:
- Nomeie sua tarefa, por exemplo,
Sophos Central Log Export
.
- Nomeie sua tarefa, por exemplo,
- Na guia Gatilhos:
- Clique em Nova 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:\PythonXX\python.exe
). - No campo Adicionar argumentos, digite o caminho do script. Por exemplo,
C:\Users\YourName\Downloads\Sophos-Central-SIEM-Integration\siem.py
.
- Clique em OK para salvar a tarefa.
Automatize o script para que ele seja executado continuamente no Mac (usando o Cron Jobs):
- Abra o Terminal.
- Digite
crontab -e
e pressione Enter. Adicione uma nova linha no final do arquivo:
* * * * * /usr/bin/python /Users/YourName/Downloads/Sophos-Central-SIEM-Integration/siem.py
Salve e saia do editor.
Tabela de mapeamento do UDM
Campo de registro | Mapeamento do UDM | Lógica |
---|---|---|
customer_id | target.resource.id | Mapeado diretamente do campo customer_id . |
data.core_remedy_items.items.0.descriptor | target.process.file.full_path | Mapeado diretamente do campo data.core_remedy_items.items.0.descriptor . |
data.source_info.ip | principal.ip principal.asset.ip |
Mapeado diretamente do campo data.source_info.ip . |
description | metadata.description | Mapeado diretamente do campo description quando metadata.event_type é GENERIC_EVENT . |
dhost | principal.hostname principal.asset.hostname |
Mapeado diretamente do campo dhost . |
duid | security_result.detection_fields.value | Mapeado diretamente do campo duid . |
end | metadata.event_timestamp | Analisado no formato RFC 3339 e mapeado para o campo event_timestamp . |
endpoint_id | target.asset_id | Mapeado como Device endpoint Id: {endpoint_id} . |
endpoint_type | security_result.about.labels.value | Mapeado diretamente do campo endpoint_type . |
grupo | security_result.category_details | Mapeado diretamente do campo group . |
nome | security_result.description security_result.summary |
Mapeado diretamente do campo name . Se as flags is_alert ou is_significant estiverem definidas, elas serão mapeadas para security_result.summary . |
is_alert | Defina como true para valores específicos de type que indicam um alerta. Caso contrário, o padrão será false . |
|
is_significant | Definido como true para valores específicos de type que indicam um evento significativo. Caso contrário, o padrão é false . |
|
metadata.event_type | Determinado com base no campo type e em outra lógica no analisador. Os valores possíveis incluem: FILE_OPEN, SCAN_HOST, SETTING_MODIFICATION, STATUS_HEARTBEAT, SETTING_CREATION, NETWORK_CONNECTION, SCAN_PROCESS, SCAN_UNCATEGORIZED, USER_CREATION, USER_UNCATEGORIZED, STATUS_UPDATE. |
|
metadata.log_type | Defina como SOPHOS_CENTRAL . |
|
metadata.product_event_type | Mapeado diretamente do campo type . |
|
metadata.product_name | Defina como Sophos Central . |
|
metadata.vendor_name | Defina como Sophos . |
|
network.direction | Defina como OUTBOUND para valores específicos de type que indicam conexões de rede de saída. |
|
network.ip_protocol | Defina como TCP para valores específicos de type que indicam conexões de rede TCP. |
|
security_result.action | Determinado com base no campo action extraído do campo name usando padrões grok. Os valores possíveis incluem: ALLOW, BLOCK, ALLOW_WITH_MODIFICATION, UNKNOWN_ACTION. |
|
security_result.detection_fields.key | Definido como duid quando o campo duid está presente. |
|
security_result.rule_name | Extraídos do campo name usando padrões grok para valores específicos de type . |
|
security_result.severity | Mapeado do campo severity com o seguinte mapeamento: baixo -> BAIXO, médio -> MÉDIO, alto/crítico -> ALTO. |
|
target.application | Extraídos do campo name usando padrões grok para valores específicos de type . |
|
target.asset.hostname | Mapeado do campo dhost para valores específicos de type . |
|
target.file.full_path | Extraídos do campo name usando padrões grok para valores específicos de type ou mapeados diretamente de data.core_remedy_items.items.0.descriptor ou core_remedy_items.items.0.descriptor . |
|
target.file.size | Extraídos do campo name usando padrões grok e convertidos em uinteger para valores específicos de type . |
|
target.hostname | Mapeado do campo dhost para valores específicos de type . |
|
target.resource.name | Define valores específicos com base no campo type ou extraídos do campo name usando padrões grok. |
|
target.resource.type | Defina valores específicos com base no campo type . |
|
target.user.userid | Mapeado do campo suser depois de extrair o nome de usuário usando padrões grok. |
|
target.url | Extraídos do campo name usando padrões grok para valores específicos de type . |
|
source_info.ip | principal.ip principal.asset.ip |
Mapeado diretamente do campo source_info.ip . |
suser | principal.user.userid target.user.userid |
Extraídos do campo suser usando padrões grok para remover prefixos de host. |
tipo | metadata.product_event_type | Mapeado diretamente do campo type . |
Alterações
2025-01-30
Melhoria:
- Foi adicionado suporte para analisar registros JSON não analisados.
2025-01-08
Melhoria:
url
,action
escan_name
foram adicionados a statedata para analisar registros não analisados.user_id
foi mapeado paraprincipal.user.userid
.
2024-09-05
Melhoria:
- Foi adicionado suporte para analisar registros JSON não analisados.
location
foi mapeado paraprincipal.cloud.availability_zone
.
2024-05-17
Melhoria:
- Mapeamento de
data.core_remedy_items.items.0.descriptor
ecore_remedy_items.items.0.descriptor
paratarget.process.file.full_path
.
2024-05-14
Correção de bugs:
- O mapeamento de
target.user.userid
foi alterado deduid
parasuser
. duid
foi mapeado parasecurity_result.detection_fields
.
2022-12-27
- Parser recém-criado.
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.