Coletar registros do BMC AMI Defender
Este documento explica como ingerir registros do BMC AMI Defender no Google Security Operations usando o agente do Bindplane.
O BMC AMI Datastream para z/OS é um programa de agente de mainframe que monitora a atividade do sistema z/OS e coleta, processa e entrega registros do System Management Facility (SMF) a sistemas SIEM distribuídos em tempo real. O agente reformata registros SMF do RACF, ACF2, Top Secret, TCP/IP, CICS, IMS e outros eventos de sistema e aplicativos z/OS como mensagens syslog compatíveis com RFC 3164 e os transmite por protocolos UDP, TCP ou TLS.
Antes de começar
Verifique se você tem os pré-requisitos a seguir:
- Uma instância do Google SecOps
- Windows Server 2016 ou mais recente ou host Linux com
systemdpara o agente do Bindplane - Conectividade de rede entre o host do agente Bindplane e a partição lógica do z/OS que executa o BMC AMI Datastream
- 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.
- BMC AMI Datastream para z/OS versão 6.1 ou mais recente instalado e em execução na partição lógica z/OS
- Acesso para editar arquivos de parâmetros no conjunto de dados amihlq.PARM no z/OS. Normalmente, isso exige acesso ao TSO/ISPF ou autoridade de envio de job em lote.
- Autoridade para modificar a configuração do BMC AMI Datastream (normalmente exige acesso RACF READ aos conjuntos de dados de parâmetros)
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 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
Instale o agente do Bindplane no 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" /quietAguarde a conclusão da instalação.
Execute o seguinte comando para confirmar a instalação:
sc query observiq-otel-collectorO serviço vai aparecer como EM EXECUÇÃO.
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.shAguarde a conclusão da instalação.
Execute o seguinte comando para confirmar a instalação:
sudo systemctl status observiq-otel-collectorO serviço vai aparecer como ativo (em execução).
Outros recursos de instalação
Para mais opções de instalação e solução de problemas, consulte o guia de instalação do agente do Bindplane.
Configurar o agente do Bindplane para ingerir syslog e enviar ao Google SecOps
Localizar o arquivo de configuração
Linux:
sudo nano /etc/bindplane-agent/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
Editar o arquivo de configuração
Substitua todo o conteúdo de
config.yamlpela seguinte configuração:receivers: tcplog: listen_address: "0.0.0.0:1514" exporters: chronicle/bmc_datastream: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: 'your-customer-id-here' endpoint: malachiteingestion-pa.googleapis.com log_type: BMC_AMI_DEFENDER raw_log_field: body service: pipelines: logs/datastream_to_chronicle: receivers: - tcplog exporters: - chronicle/bmc_datastreamSubstitua os seguintes marcadores de posição:
Configuração do receptor:
listen_address: endereço IP e porta a serem detectados:0.0.0.0:1514para detectar a atividade em todas as interfaces na porta 1514 (recomendado para Linux não root)0.0.0.0:514para detectar em todas as interfaces na porta syslog padrão (requer root no Linux)- Endereço IP específico para detectar em uma interface
Configuração do exportador:
creds_file_path: caminho completo para o arquivo de autenticação de ingestão:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
customer_id: seucustomer ID. Para mais detalhes, consulte Receber o ID de cliente do Google SecOps.endpoint: URL do endpoint regional:- EUA:
malachiteingestion-pa.googleapis.com - Europa:
europe-malachiteingestion-pa.googleapis.com - Ásia:
asia-southeast1-malachiteingestion-pa.googleapis.com - Consulte a lista completa em Endpoints regionais.
- EUA:
log_type:BMC_AMI_DEFENDER
Exemplo de configuração para Syslog UDP
Se você preferir o transporte UDP (menor latência, fire-and-forget):
receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/bmc_datastream: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: 'a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6' endpoint: malachiteingestion-pa.googleapis.com log_type: BMC_AMI_DEFENDER raw_log_field: body service: pipelines: logs/datastream_to_chronicle: receivers: - udplog exporters: - chronicle/bmc_datastream
Salve o arquivo de configuração.
Depois de editar, salve o arquivo:
- Linux: pressione
Ctrl+O,EntereCtrl+X. - Windows: clique em Arquivo > Salvar.
Reinicie o agente do Bindplane para aplicar as mudanças
Para reiniciar o agente do Bindplane no Linux:
Execute este comando:
sudo systemctl restart observiq-otel-collectorVerifique se o serviço está em execução:
sudo systemctl status observiq-otel-collectorVerifique se há erros nos registros:
sudo journalctl -u observiq-otel-collector -f
Para reiniciar o agente do Bindplane em Windows:
Escolha uma das seguintes opções:
Prompt de comando ou PowerShell como administrador:
net stop observiq-otel-collector && net start observiq-otel-collectorConsole de serviços:
- Pressione
Win+R, digiteservices.msce pressione Enter. - Localize o Coletor do OpenTelemetry da observIQ.
- Clique com o botão direito do mouse e selecione Reiniciar.
- Pressione
Verifique se o serviço está em execução:
sc query observiq-otel-collectorVerifique se há erros nos registros:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
Configurar o encaminhamento de syslog do BMC AMI Defender
Edite o arquivo de parâmetros usando TSO/ISPF
- Faça login no TSO/ISPF na partição lógica z/OS em que o BMC AMI Datastream está instalado.
- No Menu de opções principal do ISPF, digite 2 para selecionar EDITAR.
No Painel de edição - entrada, insira o seguinte:
- Biblioteca ISPF: insira o nome do conjunto de dados de parâmetro no formato
'amihlq.PARM', em que amihlq é o qualificador de alto nível escolhido durante a instalação (por exemplo,'PROD.CZAGENT.PARM'). - Membro: insira o membro
$$$CONFG.
- Biblioteca ISPF: insira o nome do conjunto de dados de parâmetro no formato
Press Enter to open the member for editing.
Configure the SIEM type
- In the
$$$CONFGe localize a seção Chaves para definir o tipo de SIEM. Remova o comentário de um tipo de SIEM excluindo o ponto e vírgula inicial da linha apropriada:
- Para o formato syslog padrão, remova o comentário de:
SWITCH ON(RFC3164) - Para o formato de evento comum, remova o comentário de:
SWITCH ON(CEF) - Para o formato JSON, remova o comentário:
SWITCH ON(JSON) - Para o formato LEEF do IBM QRadar, remova o comentário:
SWITCH ON(LEEF) - Para o formato Splunk, remova o comentário:
SWITCH ON(Splunk)
- Para o formato syslog padrão, remova o comentário de:
Pressione F3 para salvar e sair do membro.
Configurar o servidor syslog
No Painel de edição de entradas, insira o seguinte:
- Biblioteca ISPF: insira
'amihlq.PARM'(igual a antes). - Membro: insira
$$$SERVR.
- Biblioteca ISPF: insira
Press Enter to open the member for editing.
Locate the section corresponding to your selected SIEM type. For example:
- For RFC3164: Locate the section labeled
; RFC3164 - For CEF: Locate the section labeled
; CEF - TRANS(TCP) Recommended - For JSON: Locate the section labeled
; JSON - TRANS(TCP) Recommended
- For RFC3164: Locate the section labeled
Uncomment the SERVER statement by removing the leading semicolon.
Edit the SERVER statement with the following values:
- Replace
ip.addr.examplewith the IP address of the Bindplane agent host (for example,192.168.1.100). If using TCP (recommended), the statement should look like:
SERVER 192.168.1.100:1514 TRANS(TCP) MAXMSG(2000)If using UDP, the statement should look like:
SERVER 192.168.1.100:514 TRANS(UDP) MAXMSG(2000)
- Replace
If you selected CEF, JSON, or Splunk format and are using TCP transport, locate the OPTIONS statement section and uncomment the FRAMING parameter:
OPTIONS FRAMING(OCTETCOUNT)Press F3 to save and exit the member.
Refresh the BMC AMI Datastream configuration
- From the ISPF Primary Option Menu, enter 6 to select COMMAND.
On the TSO Command Processor screen, enter the following MVS console command:
F czagentname,PARMSReplace
czagentnamewith the name of the BMC AMI Datastream started task (typicallyCZAGENTor the instance name configured during installation).Press Enter to execute the command.
Verify the configuration was refreshed by checking the system log for message CZA0001I indicating the parameter file was successfully processed.
Verify syslog transmission
- From the ISPF Primary Option Menu, enter 6 to select COMMAND.
Enter the following command to display BMC AMI Datastream statistics:
F czagentname,STATSPress Enter to execute the command.
Check the system log for message CZA0350I showing the number of messages sent to the syslog server.
Verify the Bindplane agent is receiving messages by checking the Bindplane agent logs:
- Linux:
sudo journalctl -u observiq-otel-collector -f - Windows: Check
C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log
- Linux:
Alternative: Edit parameter file using batch job
If you do not have TSO/ISPF access, you can edit the parameter files using a batch job:
Create a batch job with the following JCL:
//EDITPARM JOB (ACCT),'EDIT DATASTREAM PARMS', // CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID //STEP1 EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=* //SYSIN DD DUMMY //SYSUT1 DD * SWITCH ON(RFC3164) /* //SYSUT2 DD DSN=amihlq.PARM($$$CONFG),DISP=SHR //STEP2 EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=* //SYSIN DD DUMMY //SYSUT1 DD * SERVER 192.168.1.100:1514 TRANS(TCP) MAXMSG(2000) /* //SYSUT2 DD DSN=amihlq.PARM($$$SERVR),DISP=SHR.Substitua
amihlqpelo qualificador de alto nível da instalação do BMC AMI Datastream.Substitua
192.168.1.100:1514pelo endereço IP e pela porta do host do agente do Bindplane.Envie o job e verifique se a conclusão foi bem-sucedida (código de retorno 0).
Emita o comando MODIFY para atualizar a configuração conforme descrito na seção anterior.
Tabela de mapeamento do UDM
| Campo de registro | Mapeamento do UDM | Lógica |
|---|---|---|
| aceeadsp | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| aceeaudt | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| aceeflg1 | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| aceelogu | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| aceeoper | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| aceepriv | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| aceeracf | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| aceeroa | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| aceespec | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| additional.fields | additional.fields | Outras informações sobre o evento |
| auth | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| auth_audit | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| auth_bypass | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| auth_exit | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| auth_normal | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| auth_oper | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| auth_soft | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| auth_special | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| auth_trusted | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| authinfo | security_result.description | Descrição do resultado de segurança |
| evento | metadata.product_event_type | Tipo de evento específico do produto |
| event_type | metadata.event_type | Tipo de evento (por exemplo, USER_LOGIN, NETWORK_CONNECTION) |
| eventdesc | metadata.description | A descrição do evento |
| grupo | additional.fields | Outras informações sobre o evento |
| nome do host | principal.hostname, principal.asset.hostname | Nome do host do principal, nome do host do recurso |
| jobid | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| jobnm | additional.fields | Outras informações sobre o evento |
| jsauth | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| nome | principal.user.user_display_name | Nome de exibição do usuário |
| pgm | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| privstatd | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| reas_always | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| reas_audit | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| reas_cmdviol | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| reas_globalaudit | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| reas_setropts | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| reas_special | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| reas_user | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| reas_verify | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| rtype | additional.fields | Outras informações sobre o evento |
| saf | additional.fields | Outras informações sobre o evento |
| safd | additional.fields | Outras informações sobre o evento |
| security_result.detection_fields | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| gravidade, | security_result.severity, security_result.severity_details | Gravidade do resultado de segurança, informações detalhadas sobre a gravidade |
| sid | additional.fields | Outras informações sobre o evento |
| timestamp | metadata.event_timestamp | Carimbo de data/hora em que o evento ocorreu |
| tokflg1 | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| tokflg3 | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| tokpriv | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| toksus | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| tokudus | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| userid | principal.user.userid | ID do usuário |
| violação | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| user_warning | security_result.detection_fields | Campos usados para determinar o resultado de segurança |
| worktyped | additional.fields | Outras informações sobre o evento |
| metadata.product_name | Nome do produto | |
| metadata.vendor_name | Nome do fornecedor/empresa |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.