Coletar registros do NGINX
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
- 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: 'NGINX' 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
Identificar o local dos arquivos de registro do NGINX
- 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
- Registros de acesso:
- Acesse o host NGINX usando credenciais administrativas.
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
Abra o arquivo de configuração do NGINX (por exemplo,
/etc/nginx/nginx.conf
):sudo vi /etc/nginx/nginx.conf
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; }
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.