Coletar registros de gerenciamento de segurança da AlgoSec
Este documento explica como transferir os registros de gerenciamento de segurança da AlgoSec para as operações de segurança do Google usando um agente do Bindplane. O analisador extrai os campos, processando registros formatados com CEF e sem CEF. Ele analisa campos comuns, como carimbos de data/hora, endereços IP e detalhes do evento, e os mapeia para o UDM com base no produto (Suite, Firewall Analyzer, FireFlow) e no ID do evento, definindo os metadados e campos de resultados de segurança apropriados. Ele também processa tipos de eventos específicos, como login/saída, alertas administrativos e relatórios de análise, extraindo detalhes relevantes e definindo níveis de gravidade.
Antes de começar
- Verifique se você tem uma instância do Google SecOps.
- Verifique se você está usando o Windows 2016 ou uma versão mais recente ou um host Linux com
systemd
. - 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 AlgoSec Firewall Analyzer, FireFlow e AppViz.
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: ALGOSEC 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 transferência 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 Syslog para o Firewall Analyzer
- Faça login no dispositivo AFA usando SSH.
Acesse o diretório de configuração do syslog-ng:
cd /etc/syslog-ng
Faça backup da configuração atual:
cp syslog-ng.conf syslog-ng.conf.orig
Edite o arquivo de configuração do syslog-ng:
vi syslog-ng.conf
Adicione as linhas a seguir para definir o servidor syslog remoto:
destination d_remote { udp("<bindplane-server-ip>" port(514)); }; log { source(s_sys); destination(d_remote); };
- Substitua
<bindplane-server-ip>
pelo endereço IP do agente do Bindplane.
- Substitua
Salve e saia do editor.
Reinicie o serviço syslog-ng para aplicar as mudanças:
service syslog-ng restart
Opcional: verifique a configuração do Syslog:
- Acesse Administração > Configurações do servidor Syslog.
- Clique em Testar conectividade.
Configurar o Syslog para o FireFlow
- Faça login na máquina FireFlow como root.
Abra o arquivo
/etc/syslog.conf
para edição.vi /etc/syslog.conf
Adicione a seguinte linha ao arquivo:
local0.*@<BindplaneAgent>
.- Substitua
<BindplaneAgent>
pelo endereço IP do servidor do agente do Bindplane.
- Substitua
Configurar o Syslog para o AppViz
- Faça login no dispositivo AppViz por SSH.
Acesse o diretório de configuração do syslog-ng:
cd /etc/syslog-ng
Faça backup da configuração atual:
cp syslog-ng.conf syslog-ng.conf.orig
Edite o arquivo de configuração do syslog-ng:
vi syslog-ng.conf
Adicione o seguinte para definir o servidor syslog remoto:
destination d_remote { udp("<bindplane-server-ip>" port(514)); }; log { source(s_sys); destination(d_remote); };
- Substitua
<bindplane-server-ip>
pelo endereço IP do agente do Bindplane.
- Substitua
Salve e saia do editor.
Reinicie o serviço syslog-ng para aplicar as mudanças:
service syslog-ng restart
Verifique a configuração do Syslog:
- Na interface do AppViz, acesse Administration > Syslog Server Settings.
- Clique em Testar conectividade.
Configurar o Syslog para eventos de login e logout
- Faça login no dispositivo ASMS por SSH.
Acesse o diretório de configuração do syslog-ng:
cd /etc/syslog-ng
Faça backup da configuração atual:
cp syslog-ng.conf syslog-ng.conf.orig
Edite o arquivo de configuração do syslog-ng:
vi syslog-ng.conf
Adicione o seguinte para definir o servidor syslog remoto:
destination d_remote { udp("<bindplane-server-ip>" port(514)); }; log { source(s_sys); destination(d_remote); };
- Substitua
<bindplane-server-ip>
pelo endereço IP do servidor syslog.
- Substitua
Salve e saia do editor.
Reinicie o serviço syslog-ng para aplicar as mudanças:
service syslog-ng restart
Tabela de mapeamento do UDM
Campo de registro | Mapeamento do UDM | Lógica |
---|---|---|
by_user |
principal.user.user_display_name |
O valor do campo by_user do registro bruto é atribuído a esse campo do UDM. |
collection_time |
metadata.event_timestamp |
Os campos de segundos e nanos são combinados para criar um carimbo de data/hora. |
comm |
target.process.command_line |
O valor do campo comm extraído do campo desc usando grok é atribuído a esse campo do UDM. |
datetime |
metadata.event_timestamp |
A data e a hora são extraídas do registro bruto e usadas para preencher o carimbo de data/hora do evento. |
desc |
metadata.description |
O valor do campo desc do registro bruto é atribuído a esse campo do UDM quando nenhuma outra descrição está disponível. |
dest_ip |
target.ip |
O valor do campo dest_ip do registro bruto é atribuído a esse campo do UDM. |
dest_port |
target.port |
O valor do campo dest_port do registro bruto é atribuído a esse campo do UDM. |
details |
security_result.summary |
O valor do campo details do registro bruto é atribuído a esse campo do UDM. |
device |
principal.asset.hostname |
O valor do campo device do registro bruto é atribuído a esse campo do UDM. |
dst_ip |
target.ip |
O valor do campo dst_ip do registro bruto é atribuído a esse campo do UDM. |
dst_port |
target.port |
O valor do campo dst_port do registro bruto é atribuído a esse campo do UDM. |
event_id |
metadata.product_event_type |
O valor do campo event_id do registro bruto é atribuído a esse campo do UDM. Ele também é usado na lógica do analisador para determinar o metadata.event_type e outros campos. |
event_name |
metadata.product_event_type |
O valor do campo event_name do registro bruto é atribuído a esse campo do UDM. |
firewall |
target.hostname |
O valor do campo firewall do registro bruto é atribuído a esse campo do UDM. |
host |
principal.hostname |
O valor do campo host do registro bruto é atribuído a esse campo do UDM. |
host_type |
principal.asset.category |
O valor do campo host_type do registro bruto é atribuído a esse campo do UDM. |
iporhost |
principal.ip / principal.hostname / target.ip / target.hostname / observer.ip / observer.hostname |
Se o valor for um endereço IP, ele será mapeado para principal.ip , target.ip ou observer.ip , dependendo da origem do registro e do tipo de evento. Se for um nome de host, ele será mapeado para principal.hostname , target.hostname ou observer.hostname . |
IP |
principal.ip |
O valor do campo IP do registro bruto é atribuído a esse campo do UDM. |
kv_data |
security_result.summary |
O valor do campo kv_data do registro bruto é atribuído a esse campo do UDM. |
log_type |
metadata.log_type |
Fixado em ALGOSEC . |
metric |
security_result.action_details |
O valor do campo metric do registro bruto é atribuído a esse campo do UDM. |
msg |
security_result.summary / security_result.description |
O valor do campo msg do registro bruto é usado para preencher o resumo ou a descrição do resultado de segurança, dependendo do contexto. Ele também é usado para extrair os campos risk_level , risk_count , risk_code e risk_title . |
pid |
target.process.pid |
O valor do campo pid extraído do campo desc usando grok é atribuído a esse campo do UDM. |
product |
metadata.product_name |
O valor do campo product do registro bruto é atribuído a esse campo do UDM. |
report |
security_result.description |
O valor do campo report do registro bruto é incluído na descrição do resultado de segurança. |
report_data.Device IP |
target.ip |
O valor do campo Device IP dos dados JSON analisados é atribuído a esse campo do UDM. |
report_data.Highest Risk Level |
security_result.description |
O valor do campo Highest Risk Level dos dados JSON analisados é incluído na descrição do resultado de segurança. Ele também é usado para determinar a gravidade do resultado de segurança. |
report_data.Security Rating Score |
security_result.description |
O valor do campo Security Rating Score dos dados JSON analisados é incluído na descrição do resultado de segurança. |
Requestor.Email |
principal.user.email_addresses |
O valor do campo Email no objeto Requestor dos dados JSON analisados é atribuído a esse campo do UDM. |
Requestor.Name |
principal.user.user_display_name |
O valor do campo Name no objeto Requestor dos dados JSON analisados é atribuído a esse campo do UDM. |
RequestType |
target.resource.attribute.labels |
O valor do campo RequestType do registro bruto é adicionado como um rótulo ao recurso de destino. |
risk_title |
security_result.summary |
O valor do campo risk_title do registro bruto é atribuído a esse campo do UDM. |
src_ip |
principal.ip |
O valor do campo src_ip do registro bruto é atribuído a esse campo do UDM. |
src_port |
principal.port |
O valor do campo src_port do registro bruto é atribuído a esse campo do UDM. |
status |
security_result.description / security_result.action_details |
O valor do campo status do registro bruto é incluído na descrição do resultado de segurança ou nos detalhes da ação, dependendo do contexto. Ele também é usado para determinar a gravidade do resultado de segurança. |
target_app |
target.application |
O valor do campo target_app do registro bruto é atribuído a esse campo do UDM. |
TemplateName |
metadata.description |
O valor do campo TemplateName do registro bruto é atribuído a esse campo do UDM. |
url |
security_result.url_back_to_product |
O valor do campo url do registro bruto é atribuído a esse campo do UDM. |
user |
principal.user.userid |
O valor do campo user do registro bruto é atribuído a esse campo do UDM. |
vendor |
metadata.vendor_name |
O valor do campo vendor do registro bruto é atribuído a esse campo do UDM. |
version |
metadata.product_version |
O valor do campo version do registro bruto é atribuído a esse campo do UDM. |
WorkFlow |
target.resource.attribute.labels |
O valor do campo WorkFlow do registro bruto é adicionado como um rótulo ao recurso de destino. |
(Parser Logic) | extensions.auth.type |
Fixado em MACHINE . |
(Parser Logic) | security_result.action |
Determinado com base no event_id e em outros campos. Normalmente, é definido como ALLOW ou BLOCK . |
(Parser Logic) | security_result.category |
Fixado em POLICY_VIOLATION para eventos do Firewall Analyzer. |
(Parser Logic) | security_result.description |
Construído com base em outros campos, fornecendo contexto e detalhes sobre o evento. |
(Parser Logic) | security_result.severity |
Determinado com base nos campos event_id , msg e outros. Normalmente, é definido como LOW , MEDIUM ou HIGH . |
(Parser Logic) | metadata.event_type |
Determinado com base no event_id e em outros campos. Os exemplos incluem USER_LOGIN , USER_LOGOUT , USER_RESOURCE_ACCESS , GENERIC_EVENT , STATUS_UNCATEGORIZED , SCAN_HOST , NETWORK_CONNECTION e STATUS_UPDATE . |
(Parser Logic) | is_alert |
Defina como true se security_result.severity for HIGH . |
(Parser Logic) | is_significant |
Defina como true se security_result.severity for HIGH . |
Alterações
2022-11-27
Melhoria:
- O formato CEF analisado e os registros não analisados relacionados ao grok foram adicionados com um bloco condicional específico do evento para processá-los.
- Também adicionamos uma tag de exclusão para excluir registros com formato incorreto.
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.