Coletar registros do CA ACF2

Versão do analisador:2.0

Compatível com:

Neste documento, explicamos como ingerir registros do CA ACF2 no Google Security Operations usando o agente do Bindplane.

O Broadcom ACF2 (Access Control Facility 2) para z/OS é um produto de segurança de mainframe que oferece controle de acesso, autenticação e auditoria para sistemas IBM z/OS. O ACF2 registra ocorrências de segurança nos registros do IBM System Management Facility (SMF) (tipo padrão 230), incluindo tentativas de autenticação, violações de acesso a conjuntos de dados, eventos de acesso a recursos, geração de registros de comandos TSO e modificações no banco de dados. Esses registros do SMF precisam ser encaminhados para o Chronicle usando um agente de terceiros, como o BMC AMI Defender para z/OS.

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 systemd
  • Conectividade de rede entre o agente do Bindplane e o agente do BMC AMI Defender para z/OS
  • Se estiver em execução atrás de um proxy, verifique se as portas do firewall estão abertas de acordo com os requisitos do agente do Bindplane.
  • BMC AMI Defender para z/OS instalado e em execução na LPAR do z/OS em que o ACF2 está ativo
  • Acesso para modificar os arquivos de parâmetros do BMC AMI Defender no conjunto de dados amihlq.CZAGENT.PARM
  • Autoridade para iniciar ou modificar a tarefa iniciada do CZAGENT no z/OS

Receber credenciais do Google SecOps para o agente do BindPlane

Para autenticar o agente do Bindplane no Google SecOps, escolha um dos seguintes métodos:

  • Novas implantações: use a API Chronicle (opção 1).
  • Implantações legadas: continue usando o arquivo de autenticação de ingestão (opção 2) até que a API Ingestion seja desativada em 20 de julho de 2027.
  1. Faça login no console doGoogle Cloud e selecione o projeto do Google Cloud vinculado à sua instância do Google SecOps.
  2. Acesse IAM e administrador > Contas de serviço.
  3. Clique em Criar conta de serviço.
  4. Informe os seguintes detalhes de configuração:
    • Nome da conta de serviço: insira um nome para a conta (por exemplo, bindplane-ingest).
    • Descrição da conta de serviço: insira uma descrição (por exemplo, Bindplane agent log ingestion).
  5. Clique em Criar e continuar.
  6. Na seção Conceder a essa conta de serviço acesso ao projeto, clique em Selecionar um papel e escolha Editor do Chronicle.
  7. Clique em Continuar e depois em Concluído.
  8. Clique na conta de serviço que você criou e acesse a guia Chaves.
  9. Clique em Adicionar chave > Criar nova chave.
  10. Selecione JSON e clique em Criar. O download do arquivo de chave é feito no seu computador.
  11. Salve o arquivo de chave como ingestion-auth.json no diretório do coletor do Bindplane (/opt/observiq-otel-collector/ingestion-auth.json no Linux ou C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json no Windows) ou atualize creds_file_path em config.yaml para corresponder ao caminho em que você o salvou.
  12. Acesse IAM e administrador > Configurações e copie o Número do projeto. Você vai precisar dele para configurar o exportador.

Opção 2: fazer o download do arquivo de autenticação de ingestão (legado)

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Agentes de coleta.
  3. Faça o download do arquivo de autenticação de ingestão.
  4. Salve o arquivo com segurança no sistema em que o agente do Bindplane será instalado.

Receber o ID de cliente do Google SecOps

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Perfil.
  3. Copie e salve o ID de 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

    1. Abra o prompt de comando ou o PowerShell como administrador.
    2. Execute este comando:

      msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
      
    3. Aguarde a conclusão da instalação.

    4. Execute o seguinte comando para confirmar a instalação:

      sc query observiq-otel-collector
      

      O serviço precisa aparecer como RUNNING.

  • Instalação do Linux

    1. Abra um terminal com privilégios de root ou sudo.
    2. Execute este comando:

      sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
      
    3. Aguarde a conclusão da instalação.

    4. Execute o seguinte comando para confirmar a instalação:

      sudo systemctl status observiq-otel-collector
      

      O serviço precisa aparecer como active (running).

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

Localize o arquivo de configuração.

  • Linux:

    sudo nano /opt/observiq-otel-collector/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

Editar o arquivo de configuração

  1. Substitua todo o conteúdo de config.yaml pela seguinte configuração:

    receivers:
      udplog:
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/acf2_logs:
        protocol: https
        # Region of your instance, for example us, europe, asia-southeast1
        location: <LOCATION>
        # Project number of the Google Cloud project linked to the instance
        project: '<PROJECT_NUMBER>'
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: 'YOUR_CUSTOMER_ID'
        endpoint: chronicle.googleapis.com
        log_type: CA_ACF2
        raw_log_field: body
        ingestion_labels:
          env: production
          source: acf2
    
    service:
      pipelines:
        logs/acf2_to_chronicle:
          receivers:
            - udplog
          exporters:
            - chronicle/acf2_logs
    
  2. Substitua os seguintes marcadores de posição:

    • Configuração do receptor:

      • listen_address: defina como 0.0.0.0:514 para detectar todas as interfaces na porta UDP 514.

        • Para sistemas Linux que não são executados como raiz, use a porta 1514 ou uma superior.
        • Corresponda essa porta à configuração da instrução SERVER do BMC AMI Defender
    • Configuração do exportador:

      • creds_file_path: caminho completo para o arquivo de chave JSON da conta de serviço (opção 1):

        • Linux: /opt/observiq-otel-collector/ingestion-auth.json
        • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
      • customer_id: substitua YOUR_CUSTOMER_ID pelo seu customer ID. Para mais detalhes, consulte Receber o ID de cliente do Google SecOps.

      • location: substitua <LOCATION> pela região da sua instância do Google SecOps (por exemplo, us, europe ou asia-southeast1). O exportador prefixa chronicle.googleapis.com com esse valor. Consulte Endpoints regionais para ver a lista completa.

      • project: substitua <PROJECT_NUMBER> pelo número do projeto em IAM e administrador > Configurações.

      • endpoint: mantenha definido como chronicle.googleapis.com.

      • log_type: definido como CA_ACF2 (rótulo de ingestão do Chronicle para registros do ACF2)

      • ingestion_labels: rótulos opcionais para categorizar registros (personalize conforme necessário)

Exportador da API de ingestão legada

  • Se você usar o arquivo de autenticação de ingestão da opção 2, substitua o bloco exporters pelo seguinte. Defina creds_file_path como o caminho para o arquivo de autenticação de ingestão e, se a instância estiver fora dos EUA, substitua malachiteingestion-pa.googleapis.com pelo endpoint regional (por exemplo, europe-malachiteingestion-pa.googleapis.com).

    exporters:
      chronicle/acf2_logs:
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: 'YOUR_CUSTOMER_ID'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: CA_ACF2
        raw_log_field: body
        ingestion_labels:
          env: production
          source: acf2
    

Salvar o arquivo de configuração

Depois de editar, salve o arquivo:

  • Linux: pressione Ctrl+O, depois Enter e, em seguida, Ctrl+X.
  • Windows: clique em Arquivo > Salvar.

Reinicie o agente do Bindplane para aplicar as mudanças:

  • Para reiniciar o agente do Bindplane no Linux:

    1. Execute este comando:

      sudo systemctl restart observiq-otel-collector
      
    2. Verifique se o serviço está em execução:

      sudo systemctl status observiq-otel-collector
      
    3. Verifique se há erros nos registros:

      sudo journalctl -u observiq-otel-collector -f
      
  • Para reiniciar o agente do BindPlane no Windows:

    1. Escolha uma das seguintes opções:

      • Prompt de comando ou PowerShell como administrador:

        net stop observiq-otel-collector && net start observiq-otel-collector
        
      • Console de serviços:

        1. Pressione Win+R, digite services.msc e pressione Enter.
        2. Localize o coletor do OpenTelemetry da observIQ.
        3. Clique com o botão direito do mouse e selecione Reiniciar.
    2. Verifique se o serviço está em execução:

      sc query observiq-otel-collector
      
    3. Verifique se há erros nos registros:

      type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
      

Configurar o BMC AMI Defender para z/OS para encaminhar registros SMF do ACF2

Edite o membro $$$SERVR parameter member

  1. Sign in to the z/OS system using TSO/ISPF or a 3270 emulator.
  2. Navigate to the BMC AMI Defender parameter library:
    1. Enter ISPF at the TSO READY prompt.
    2. Select option 2 (Edit).
    3. In the ISPF Library field, enter the data set name: amihlq.CZAGENT.PARM (replace amihlq with your installation high-level qualifier).
    4. Press Enter.
  3. Edit the $$$SERVR:
    1. Digite E ao lado do membro do parâmetro $$$SERVR member.
    2. Press Enter.
  4. Locate the SERVER statement section (approximately line 40-60).
  5. Uncomment one of the SERVER statements by removing the leading semicolon (;).
  6. Configure the SERVER statement with the Bindplane agent IP address and port:

    SERVER bindplane-host-ip:514 TRANS(UDP) MAXMSG(2000)
    
    • Replace bindplane-host-ip with the IP address of the Bindplane agent host (for example, 192.168.1.100).
    • If using a non-standard port (for example, 1514), specify: bindplane-host-ip:1514.
    • TRANS(UDP) specifies UDP transport protocol (recommended for syslog).
    • MAXMSG(2000) sets the maximum message length to 2000 bytes (ACF2 records may require larger sizes).
  7. Verify the OPTIONS statement for syslog format:

    1. Scroll up to locate the OPTIONS statements (approximately line 10-30).
    2. Ensure one of the following OPTIONS statements is uncommented based on your preferred format:

      OPTIONS IF(RFC 3164) SIEM(RFC 3164) TIMESTAMP INSTNAME(SIEM.Agent)
      
      • RFC 3164: Standard syslog format (recommended for Chronicle)
      • CEF: Common Event Format (alternative)
      • LEEF: Log Event Extended Format (alternative)
      • JSON: JSON format (alternative)
  8. Save the changes:

    1. Press F3 to exit the editor.
    2. Type SAVE when prompted.
    3. Press Enter.

Edit the $$$CONFG para ativar a coleta de registros SMF do ACF2.

  1. Na lista de membros do conjunto de dados amihlq.CZAGENT.PARM, edite o membro $$$CONFG member:

    1. Type E next to the $$$CONFG.

    2. Pressione Enter.
  2. Localize a chave de seleção de registro SMF do ACF2 (pesquise ACF2 ou SMF 230).

  3. Remova a marca de comentário da instrução SELECT para ACF2:

    SELECT IF(ACF2) SMF(ACF2)
    
    • Isso permite a coleta de registros SMF do ACF2 (tipo padrão 230).
    • Se o site usar um tipo de registro SMF diferente para o ACF2, verifique o tipo com o comando: ACF SHOW SYSTEMS no TSO.
  4. Salve as mudanças:

    1. Pressione F3 para sair do editor.
    2. Digite SAVE quando solicitado.
    3. Pressione Enter.
  5. Criar ou editar o membro do parâmetro de instrução SMF ACF2

    1. Na lista de membros do conjunto de dados amihlq.CZAGENT.PARM, verifique se há um membro chamado $$$ACF2 or SMFACF2 exists.
    2. If the member does not exist, create it:

      1. Type C (Create) on the command line.
      2. Enter the member name: $$$ACF2.
      3. Pressione Enter.
    3. Edite o membro e adicione a seguinte instrução SMF ACF2:

      SMF ACF2(230) FACILITY(SECURITY4) SEVERITY(INFORMATIONAL)
      
      • ACF2(230): especifica o tipo de registro SMF para ACF2 (o padrão é 230; verifique com ACF SHOW SYSTEMS).
      • FACILITY(SECURITY4): define o recurso syslog como Security (4).
      • SEVERITY(INFORMATIONAL): define a gravidade padrão como Informativa.

        • As violações de senha ou autoridade inválidas são enviadas automaticamente com a gravidade ERROR.
        • As violações de recursos são enviadas automaticamente com gravidade ERROR.
    4. Se quiser, configure subtipos e gravidades específicos do ACF2:

      SMF ACF2(230) +
        FACILITY(SECURITY4) +
        SEVERITY(INFORMATIONAL) +
        SUBTYPES(P SEV(ERROR)) +
        SUBTYPES(V SEV(ERROR)) +
        SUBTYPES(D SEV(ERROR))
      
      • Subtipo P: eventos de senha ou autoridade inválidos (gravidade ERROR)
      • Subtipo V: violações de recursos (gravidade ERROR)
      • Subtipo D: violações de acesso ao conjunto de dados (gravidade ERROR)
    5. Salve as alterações:

      1. Pressione F3 para sair do editor.
      2. Digite SAVE quando solicitado.
      3. Pressione Enter.
    6. Atualizar o arquivo de parâmetros do BMC AMI Defender

      1. Saia do ISPF e volte ao prompt TSO READY.
      2. Emita o comando MODIFY para recarregar o arquivo de parâmetros:

        F CZAGENT,PARMS
        
        • Substitua CZAGENT pelo nome da tarefa iniciada do BMC AMI Defender, se for diferente.
        • Esse comando recarrega o arquivo de parâmetros sem interromper o agente.
      3. Verifique a configuração conferindo a saída do CZAPRINT:

        1. No ISPF, selecione a opção 3.4 (DSLIST).
        2. Insira o padrão de nome do conjunto de dados: CZAGENT.CZAPRINT (ou sua convenção de nomenclatura específica do site).
        3. Pressione Enter.
        4. Digite B (Procurar) ao lado do conjunto de dados CZAPRINT mais recente.
        5. Pressione Enter.
        6. Procure mensagens que indiquem uma conexão bem-sucedida com o servidor syslog:

          • CZA0070I Connected to server bindplane-host-ip:514
          • CZA0100I SMF ACF2 statement processed
      4. Se a tarefa iniciada do CZAGENT não estiver em execução, inicie-a:

        S CZAGENT
        

      Verificar o encaminhamento de registros do ACF2

      1. Gere ocorrências de segurança de teste do ACF2:

        1. No TSO, tente acessar um conjunto de dados para o qual você não tem permissão.
        2. Tente fazer login com uma senha inválida (use uma conta de teste).
        3. Execute um comando TSO que é registrado pelo ACF2.
      2. Verifique os registros do agente Bindplane para confirmar o recebimento de mensagens syslog do ACF2:

        • Linux:

          sudo journalctl -u observiq-otel-collector -f | grep ACF2
          
        • Windows:

          type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log" | findstr ACF2
          
      3. Faça login no console do Google SecOps e verifique se os registros do ACF2 estão sendo ingeridos:

        1. Acesse Pesquisa > Pesquisa de UDM.
        2. Digite a seguinte consulta:

          metadata.log_type = "CA_ACF2"
          
        3. Verifique se as ocorrências de segurança do ACF2 aparecem nos resultados da pesquisa.

      Tabela de mapeamento de UDM

      Campo de registro Mapeamento de UDM Lógica
      extensions.auth.mechanism O mecanismo de autenticação usado.
      extensions.auth.type O tipo de autenticação.
      soma metadata.description Uma descrição do evento.
      metadata.event_type O tipo de evento.
      event_type, cat metadata.product_event_type O tipo de evento específico do produto.
      product_version metadata.product_version A versão do produto.
      terminal principal.hostname O nome do host associado ao principal.
      nome principal.user.user_display_name O nome de exibição do usuário.
      usrName principal.user.userid O ID do usuário.
      security_result.action A ação realizada pelo sistema de segurança.
      security_result.category A categoria do resultado de segurança.
      classe security_result.category_details Mais detalhes sobre a categoria do resultado de segurança.
      reason security_result.severity O nível de gravidade do resultado de segurança.
      reason security_result.severity_details Informações detalhadas sobre a gravidade.
      logstr security_result.summary Um resumo do resultado de segurança.
      job_id target.application O aplicativo que está sendo segmentado.
      job_group target.group.group_display_name O nome de exibição do grupo.
      target.namespace O namespace do destino.
      dsn target.resource.name O nome do recurso.
      vol target.resource.parent O recurso pai.
      res, dsn target.resource.product_object_id O identificador de objeto específico do produto.
      target.resource.resource_type O tipo de recurso.
      nome target.user.user_display_name O nome de exibição do usuário de destino.
      usrName target.user.userid O ID do usuário de destino.
      product_name metadata.product_name O nome do produto que gerou o evento.
      vendor_name metadata.vendor_name O nome do fornecedor.

      Registro de alterações

      Confira o registro de alterações deste analisador

      Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.