Coletar registros do Sophos AV
Este documento explica como coletar registros do Sophos AV usando o Bindplane. O analisador transforma registros JSON em um modelo de dados unificado (UDM). Ele extrai campos de estruturas JSON aninhadas, mapeia-os para campos da 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 AV.
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
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
Instale o agente do Bindplane no seu sistema operacional Windows ou Linux de acordo com as instruções a seguir.
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_AV' 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 da API do token fornecido é exibido.
- 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 |
---|---|---|
customer_id | target.resource.id | Mapeamento direto |
data.customer_id | target.resource.id | Mapeamento direto |
data.dhost | principal.hostname | Mapeamento direto |
data.end | timestamp | Mapeamento direto |
data.endpoint_id | principal.resource.id | Mapeamento direto |
data.group | security_result.category_details | Mapeamento direto |
data.id | principal.resource.id | Mapeamento direto |
data.location | principal.hostname | Mapeamento direto |
data.name | metadata.description | Mapeamento direto |
data.rt | timestamp | Mapeamento direto |
data.severity | security_result.severity | Mapeamento direto |
data.source | principal.user.user_display_name | Mapeamento direto |
data.source_info.ip | principal.ip | Mapeamento direto |
data.suser | principal.user.userid | Mapeamento direto |
data.threat | security_result.rule_name | Mapeamento direto quando data.group é "POLICY" |
data.type | metadata.product_event_type | Mapeamento direto |
data.user_id | principal.user.userid | Mapeamento direto |
data.when | timestamp | Mapeamento direto |
dhost | principal.hostname | Mapeamento direto |
end | timestamp | Mapeamento direto |
endpoint_id | principal.resource.id | Mapeamento direto |
grupo | security_result.category_details | Mapeamento direto |
ID | principal.resource.id | Mapeamento direto |
local | principal.hostname | Mapeamento direto |
nome | metadata.description | Mapeamento direto |
rt | timestamp | Mapeamento direto |
gravidade, | security_result.severity | Mapeamento direto |
source | principal.user.user_display_name | Mapeamento direto |
source_info.ip | principal.ip | Mapeamento direto |
suser | principal.user.userid | Mapeamento direto |
tipo | metadata.product_event_type | Mapeamento direto |
user_id | principal.user.userid | Mapeamento direto |
quando | timestamp | Mapeamento direto |
- | is_alert | O campo "is_alert" é definido como "true" para eventos com "severity" de "medium" ou "high", ou quando o campo "type" indica um evento que merece um alerta, como "Event::Endpoint::UpdateRebootRequired". |
- | is_significant | O campo "is_significant" é definido como "true" para eventos com "severity" de "medium" ou "high". |
- | metadata.description | O campo de descrição é preenchido com o valor do campo "name" do registro bruto. |
- | metadata.event_timestamp | O campo "event_timestamp" é preenchido com o valor do campo "end", "rt" ou "when" do registro bruto. |
- | metadata.event_type | O campo "event_type" é derivado do campo "type" no registro bruto, mapeando tipos de eventos específicos da Sophos para tipos de eventos da UDM do Chronicle. |
- | metadata.log_type | O campo "log_type" é definido como "SOPHOS_AV" para todos os eventos. |
- | metadata.product_event_type | O campo "product_event_type" é preenchido com o valor do campo "type" do registro bruto. |
- | metadata.product_name | O campo "product_name" é definido como "Sophos Anti-Virus" para todos os eventos. |
- | metadata.vendor_name | O campo "vendor_name" é definido como "Sophos" para todos os eventos. |
- | network.direction | O campo "direction" é definido como "OUTBOUND" para todos os eventos "NETWORK_CONNECTION". |
- | network.ip_protocol | O campo "ip_protocol" é definido como "TCP" para eventos "NETWORK_CONNECTION" em que o campo "target.url" está presente. |
- | principal.hostname | O campo "hostname" é preenchido com o valor do campo "dhost" ou "location" do registro bruto. |
- | principal.ip | O campo "ip" é preenchido com o valor do campo "source_info.ip" do registro bruto. |
- | principal.resource.id | O campo "id" é preenchido com o valor do campo "id" ou "endpoint_id" do registro bruto. |
- | principal.user.user_display_name | O campo "user_display_name" é preenchido com o valor do campo "suser" ou "source" do registro bruto. |
- | principal.user.userid | O campo "userid" é preenchido com o valor do campo "suser", "user_id" ou "data.suser" do registro bruto. |
- | security_result.action | O campo de ação é derivado do campo "data.name" no registro bruto, mapeando ações específicas da Sophos para ações do UDM do Chronicle. |
- | security_result.category_details | O campo "category_details" é preenchido com o valor do campo "group" do registro bruto. |
- | security_result.rule_name | O campo "rule_name" é extraído do campo "data.name" no registro bruto, procurando especificamente padrões como "Policy non-compliance: [rule_name]" ou "Rule names: [rule_name]". |
- | security_result.severity | O campo de gravidade é preenchido com o valor do campo "severity" do registro bruto, convertendo-o para o nível de gravidade correspondente do UDM do Chronicle. |
- | security_result.summary | O campo de resumo é preenchido com o valor do campo "name" do registro bruto quando o tipo de evento é "GENERIC_EVENT" ou "STATUS_HEARTBEAT". |
- | target.application | O campo "application" é preenchido com o valor do campo "data.name" do log bruto quando o tipo de evento é "NETWORK_CONNECTION" e a descrição menciona um aplicativo bloqueado. |
- | target.asset_id | O campo "asset_id" é preenchido com o valor do campo "data.endpoint_id" do registro bruto quando o tipo de evento é "NETWORK_CONNECTION" e a descrição menciona um ID do recurso. |
- | target.file.full_path | O campo "full_path" é extraído do campo "data.name" no registro bruto, procurando especificamente padrões como "Source path: [full_path]". |
- | target.file.size | O campo "size" é extraído do campo "data.name" no registro bruto, procurando especificamente padrões como "File size: [size]". |
- | target.hostname | O campo "hostname" é preenchido com o valor do campo "data.dhost" do registro bruto quando o tipo de evento é "NETWORK_CONNECTION" e a descrição menciona um nome de host de destino. |
- | target.process.file.full_path | O campo "full_path" é extraído do campo "data.name" no registro bruto, procurando especificamente padrões como "Controlled application [action]: [full_path]". |
- | target.resource.id | O campo "id" é preenchido com o valor do campo "customer_id" do registro bruto. |
- | target.resource.name | O campo "Nome" é preenchido com valores específicos com base no tipo de evento. Para "SETTING_CREATION" e "SETTING_MODIFICATION", ele é definido como "Registro do dispositivo" e "Proteção em tempo real", respectivamente. Para "SCAN_UNCATEGORIZED", ele é preenchido com o valor do campo "data.name" do registro bruto. |
- | target.resource.type | O campo "type" é preenchido com valores específicos com base no tipo de evento. Para "SETTING_CREATION" e "SETTING_MODIFICATION", ele é definido como "SETTING". Para "SCAN_UNCATEGORIZED", ela é definida como "Scan". Para "SCAN_NETWORK", ele é definido como "Device". |
- | target.url | O campo "url" é extraído do campo "data.name" no registro bruto, procurando especificamente padrões como "'[url]' bloqueado". |
- | target.user.userid | O campo "userid" é preenchido com o valor do campo "data.user_id" do registro bruto quando o tipo de evento é "USER_CREATION". |
- | timestamp | O campo de carimbo de data/hora é preenchido com o valor do campo "end", "rt" ou "when" do registro bruto. |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.