Coletar registros do NGINX

Compatível com:

Esse analisador NGINX processa registros formatados em JSON e syslog. Ele extrai campos de vários formatos de registro e os normaliza no formato UDM. O analisador enriquece o evento com metadados para gerenciamento de servidor e atividade de rede, incluindo logins de usuários e solicitações HTTP. Ele também processa a lógica para eventos SSH e preenche os campos do UDM com base nos dados extraídos.

Antes de começar

Verifique se você tem os seguintes pré-requisitos:

  • Instância do Google SecOps
  • O NGINX está em execução e gerando registros
  • Acesso raiz à máquina host do NGINX

Receber o arquivo de autenticação de ingestão do Google SecOps

  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 transferência. Salve o arquivo com segurança no sistema em que o 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 do cliente na seção Detalhes da organização.

Instalar o agente do Bindplane

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
    

Instalação do Linux

  1. Abra um terminal com privilégios de raiz 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
    

Outros recursos de instalação

Configurar o agente do Bindplane para processar o Syslog e enviar ao Google SecOps

  1. Acesse o arquivo de configuração:

    1. 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.
    2. Abra o arquivo usando um editor de texto (por exemplo, nano, vi ou Notepad).
  2. 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: 'NGINX'
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. Substitua a porta e o endereço IP conforme necessário na sua infraestrutura.

  4. Substitua <customer_id> pelo ID real do cliente.

  5. 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
    

Identificar o local dos arquivos de registro do NGINX

  1. Normalmente, os registros do NGINX são armazenados em:
    • Registros de acesso: /var/log/nginx/access.log
    • Registros de erros: /var/log/nginx/error.log
  2. Acesse o host NGINX usando credenciais administrativas.
  3. Execute o comando a seguir e procure o caminho para os registros no host NGINX:

    sudo cat /etc/nginx/nginx.conf | grep log
    

Configurar o NGINX para encaminhar registros ao Bindplane

  1. Abra o arquivo de configuração do NGINX (por exemplo, /etc/nginx/nginx.conf):

    sudo vi /etc/nginx/nginx.conf
    
  2. Edite a configuração, substituindo <BINDPLANE_SERVER> e <BINDPLANE_PORT> pelos seus valores:

    http {
        access_log syslog:server=<BINDPLANE_SERVER>:<BINDPLANE_PORT>,facility=local7,tag=nginx_access;
        error_log syslog:server=<BINDPLANE_SERVER>:<BINDPLANE_PORT>,facility=local7,tag=nginx_error;
    }
    
  3. Reinicie o NGINX para aplicar as mudanças:

    sudo systemctl reload nginx
    

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
_Internal_WorkspaceResourceId target.resource.product_object_id Mapeadas diretamente
Computer principal.asset.hostname Mapeadas diretamente
Facility additional.fields[facility] Mapeadas diretamente
HostName principal.asset.hostname Mapeado diretamente se src_ip não estiver presente
ProcessName principal.application Mapeadas diretamente
SeverityLevel security_result.severity Mapeado para INFORMATIONAL se o valor for info
SourceSystem principal.asset.platform Mapeado para LINUX se o valor corresponder a Linux
SyslogMessage Vários campos Analisado usando grok para extrair time, method, target_path, protocol, response_code, referral_url, user_agent, target_ip, target_host e cache
TenantId additional.fields[TenantId] Mapeadas diretamente
acct principal.user.user_id Mapeado diretamente se não estiver vazio ou ?
addr principal.asset.ip Mapeadas diretamente
audit_epoch metadata.event_timestamp Convertido em carimbo de data/hora usando o formato UNIX. Os nanossegundos são extraídos da mensagem de registro original.
cache additional.fields[cache] Mapeadas diretamente
collection_time.nanos metadata.event_timestamp.nanos Usado para nanossegundos do carimbo de data/hora do evento, se disponível
collection_time.seconds metadata.event_timestamp.seconds Usado para segundos do carimbo de data/hora do evento, se disponível
data Vários campos A principal fonte de dados, analisada de maneira diferente com base no formato de registro (Syslog, JSON ou outro)
exe target.process.command_line Mapeamento direto após a remoção de barras invertidas e aspas
hostname principal.asset.hostname OU principal.asset.ip Se for um endereço IP, ele será mapeado para principal.asset.ip. Caso contrário, será mapeado para principal.asset.hostname.
msg metadata.description Mapeado diretamente como a descrição
node target.asset.hostname Mapeadas diretamente
pid target.process.pid Mapeadas diretamente
protocol network.application_protocol Mapeado para HTTP se o valor corresponder a HTTP
referral_url network.http.referral_url Mapeado diretamente se não estiver vazio ou -
res security_result.action_details Mapeadas diretamente
response_code network.http.response_code Mapeado diretamente e convertido em número inteiro
ses network.session_id Mapeadas diretamente
src_ip principal.asset.ip Mapeadas diretamente
target_host target.asset.hostname Mapeadas diretamente
target_ip target.asset.ip Mapeado diretamente, depois de converter a representação de string em uma matriz JSON e extrair IPs individuais
target_path target.url Mapeadas diretamente
time metadata.event_timestamp Analisado para extrair o carimbo de data/hora usando o formato dd/MMM/yyyy:HH:mm:ss Z
user_agent network.http.user_agent Mapeado diretamente se não estiver vazio ou -
metadata.event_type Inicialmente definido como GENERIC_EVENT e, em seguida, potencialmente substituído com base em outros campos, como terminal e protocol. O padrão é USER_UNCATEGORIZED se o padrão principal do grok não corresponder. Defina como NETWORK_HTTP se protocol for HTTP e target_ip estiver presente, e STATUS_UPDATE se protocol for HTTP, mas target_ip não estiver presente
metadata.log_type Defina como NGINX
metadata.product_name Defina como NGINX
metadata.vendor_name Defina como NGINX
network.ip_protocol Defina como TCP se terminal for sshd ou ssh ou se o padrão principal do grok não corresponder
principal.asset_id Defina como GCP.GCE:0001 se terminal for sshd ou ssh. Definido como GCP.GCE:0002 se o padrão principal do grok não corresponder
extensions.auth.type Defina como MACHINE se terminal for sshd ou ssh

Alterações

2022-09-10

  • Criou um analisador padrão e excluiu o analisador específico do cliente
  • Versão inicial do analisador

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