Coletar registros LDAP do servidor de diretório do Red Hat

Compatível com:

Neste documento, explicamos como ingerir registros LDAP do Red Hat Directory Server no Google Security Operations usando o agente do Bindplane.

O Red Hat Directory Server é um serviço de diretório LDAP de nível empresarial baseado em padrões abertos que oferece gerenciamento centralizado de identidade de usuários, autenticação e controle de acesso para ambientes Linux e UNIX. O servidor do diretório armazena registros de acesso, erro, auditoria, falha de auditoria e segurança no diretório /var/log/dirsrv/slapd-instance_name/, registrando conexões de clientes, operações LDAP, mudanças de configuração, operações com falha e ocorrências de segurança, como tentativas de autenticação e problemas de autorização.

Antes de começar

Verifique se você tem os pré-requisitos a seguir:

  • Uma instância do Google SecOps
  • Um host Linux com systemd
  • Conectividade de rede entre o agente do Bindplane e o host do servidor do diretório Red Hat
  • 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.
  • Acesso root ou sudo ao host do Red Hat Directory Server
  • Red Hat Directory Server 11 ou mais recente instalado e em execução
  • O serviço rsyslog instalado e em execução no host do servidor de diretório

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 descontinuada em 20 de julho de 2027.
  1. Faça login no consoleGoogle Cloud e selecione o projeto 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 um 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 Linux de acordo com as instruções a seguir.

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 o syslog e enviar ao Google SecOps

Localize o arquivo de configuração.

  • Linux:

    sudo nano /opt/observiq-otel-collector/config.yaml
    

Editar o arquivo de configuração

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

    receivers:
      udplog:
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/redhat_ds:
        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: '<customer_id>'
        endpoint: chronicle.googleapis.com
        log_type: REDHAT_DIRECTORY_SERVER
        raw_log_field: body
    
    service:
      pipelines:
        logs/redhat_ds:
          receivers:
            - udplog
          exporters:
            - chronicle/redhat_ds
    

Parâmetros de configuração

Substitua os seguintes marcadores de posição:

  • Configuração do receptor:

    • udplog: o tipo de receptor com base no protocolo:
      • udplog para syslog UDP
      • tcplog para syslog TCP
      • syslog para syslog RFC 3164/5424
    • 0.0.0.0: endereço IP para detectar:
      • 0.0.0.0 para ouvir em todas as interfaces (recomendado)
      • Endereço IP específico para detectar em uma interface
    • 514: número da porta para detectar (por exemplo, 514, 1514, 6514)
  • Configuração do exportador:

    • <customer_id>: ID do cliente da etapa anterior
    • 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.
    • Ajuste o creds_file_path para o caminho do arquivo de chave JSON da conta de serviço (Opção 1), dependendo da plataforma:
      • Linux: /opt/observiq-otel-collector/ingestion-auth.json

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/redhat_ds:
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: REDHAT_DIRECTORY_SERVER
        raw_log_field: body
    

Salvar o arquivo de configuração

  • Depois de editar, salve o arquivo:
    • Linux: pressione Ctrl+O, depois Enter e, em seguida, Ctrl+X.

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 observiq-otel-collector
    
    1. Verifique se o serviço está em execução:

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

      sudo journalctl -u observiq-otel-collector -f
      

Ativar o registro de auditoria e de falha de auditoria no Red Hat Directory Server

Por padrão, o Red Hat Directory Server ativa o registro de acesso, erro e segurança, mas desativa o registro de auditoria e falha de auditoria. Ative esses registros para capturar todas as mudanças de diretório e operações com falha.

  1. Abra um terminal com privilégios de root ou sudo no host do servidor do diretório.
  2. Ative o registro de auditoria executando o seguinte comando:

    dsconf -D "cn=Directory Manager" instance_name config replace nsslapd-auditlog-logging-enabled=on
    
  3. Ative o registro de falhas de auditoria executando o seguinte comando:

    dsconf -D "cn=Directory Manager" instance_name config replace nsslapd-auditfaillog-logging-enabled=on
    
  4. Verifique se todos os tipos de registro estão ativados:

    dsconf -D "cn=Directory Manager" instance_name config get nsslapd-accesslog-logging-enabled nsslapd-errorlog-logging-enabled nsslapd-auditlog-logging-enabled nsslapd-auditfaillog-logging-enabled nsslapd-securitylog-logging-enabled
    
  5. Verifique se os arquivos de registro existem no diretório de registros:

    ls -la /var/log/dirsrv/slapd-instance_name/
    

Opcional: ativar a geração de registros usando o console da Web

  1. Faça login no console da Web do Red Hat Directory Server.
  2. Selecione a instância.
  3. Acesse Servidor > Geração de registros.
  4. Selecione o tipo de registro que você quer ativar (por exemplo, Registro de auditoria).
  5. Ative o botão de alternância de geração de registros para o tipo de registro selecionado.
  6. Clique em Salvar configurações de registro.

Configurar o rsyslog para encaminhar registros do servidor do diretório ao agente do Bindplane

O Red Hat Servidor do Diretório grava registros em arquivos em /var/log/dirsrv/slapd-instance_name/ em vez de diretamente no syslog. Use o módulo rsyslog imfile para monitorar esses arquivos de registro e encaminhar as entradas para o agente do Bindplane.

  1. Crie um novo arquivo de configuração rsyslog para o encaminhamento de registros do servidor do diretório:

    sudo nano /etc/rsyslog.d/rhds-forward.conf
    
  2. Adicione o seguinte conteúdo ao arquivo de configuração:

    # Load the imfile module to read log files
    module(load="imfile" PollingInterval="10")
    
    # Monitor the access log
    input(type="imfile"
        File="/var/log/dirsrv/slapd-instance_name/access"
        Tag="dirsrv-access"
        Severity="info"
        Facility="local6")
    
    # Monitor the error log
    input(type="imfile"
        File="/var/log/dirsrv/slapd-instance_name/errors"
        Tag="dirsrv-errors"
        Severity="err"
        Facility="local6")
    
    # Monitor the audit log
    input(type="imfile"
        File="/var/log/dirsrv/slapd-instance_name/audit"
        Tag="dirsrv-audit"
        Severity="info"
        Facility="local6")
    
    # Monitor the security log
    input(type="imfile"
        File="/var/log/dirsrv/slapd-instance_name/security"
        Tag="dirsrv-security"
        Severity="info"
        Facility="local6")
    
    # Forward all Directory Server logs to the Bindplane agent
    local6.* @BINDPLANE_IP:514
    
  3. Verifique a sintaxe de configuração do rsyslog:

    sudo rsyslogd -N1
    
  4. Reinicie o serviço rsyslog para aplicar as alterações:

    sudo systemctl restart rsyslog
    
  5. Verifique se os registros do servidor de diretório estão sendo encaminhados verificando os registros do agente Bindplane:

    sudo journalctl -u observiq-otel-collector -f
    

Tabela de mapeamento de UDM

Campo de registro Mapeamento de UDM Lógica
attrs_label about.labels Mesclado
cn_label about.labels Mesclado
conn_label about.labels Mesclado
csn_label about.labels Mesclado
err_label about.labels Mesclado
etime_label about.labels Mesclado
fd_label about.labels Mesclado
filter_label about.labels Mesclado
label about.labels Mesclado
method_label about.labels Mesclado
msgid_label about.labels Mesclado
name_label about.labels Mesclado
nentries_label about.labels Mesclado
offset_label about.labels Mesclado
op_label about.labels Mesclado
optime_label about.labels Mesclado
org_label about.labels Mesclado
ou_label about.labels Mesclado
scope_label about.labels Mesclado
slot_label about.labels Mesclado
tag_label about.labels Mesclado
targetop_label about.labels Mesclado
version_label about.labels Mesclado
wtime_label about.labels Mesclado
desc metadata.description Mapeado diretamente
creationDate metadata.event_timestamp Analisado como UNIX_MS
recordDate metadata.event_timestamp Analisado como UNIX_MS
time metadata.event_timestamp Analisado como dd/MMM/yyyy:HH:mm:ss Z
ts metadata.event_timestamp Analisado como MMM d HH:mm:ss
operation metadata.product_event_type Mapeado diretamente
mrId metadata.product_log_id Mapeado diretamente
properties._ecs_agent_version metadata.product_version Mapeado diretamente
host principal.asset.hostname Mapeado diretamente
oid principal.asset.product_object_id Mapeado diretamente
host principal.hostname Mapeado diretamente
client_ip principal.ip Mesclado
namespace principal.namespace Mapeado diretamente
user principal.user.userid Mapeado diretamente
sec_result security_result Mesclado
properties._hostname target.asset.hostname Mapeado diretamente
properties.host target.asset.hostname Mapeado diretamente
properties._hostname target.hostname Mapeado diretamente
properties.host target.hostname Mapeado diretamente
target_ip target.ip Mesclado
properties.country target.location.country_or_region Mapeado diretamente
properties._file_path target.process.file.full_path Mapeado diretamente
properties._file_size target.process.file.size Renomeado/mapeado
discipline_label target.resource.attribute.labels Mesclado
document_type_label target.resource.attribute.labels Mesclado
environment_label target.resource.attribute.labels Mesclado
hostgroup_label target.resource.attribute.labels Mesclado
platform_label target.resource.attribute.labels Mesclado
product_label target.resource.attribute.labels Mesclado
project_label target.resource.attribute.labels Mesclado
base target.user.group_identifiers Mesclado
dn target.user.group_identifiers Mesclado
N/A metadata.event_type Constante: NETWORK_CONNECTION
N/A metadata.product_name Constante: REDHAT_DIRECTORY_SERVER
N/A metadata.vendor_name Constante: REDHAT
N/A target.platform Constante: LINUX
properties._file_inode event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
properties._file_offset event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
conn event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
op event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
err event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
tag event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
nentries event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
wtime event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
optime event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
etime event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
csn event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
cn event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
ou event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
filter event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
attrs event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
scope event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
o event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
targetop event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
msgid event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
method event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
version event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
fd event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
slot event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
name event.idm.read_only_udm.additional.fields Mapeado do registro de alterações
properties.discipline" ,"properties.document_type" ,"properties.environment" ,"properties.hostgroup" ,"properties.platform" ,"properties.product target.resource.attribute.labels Mapeado do registro de mudanças

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.