Recolha registos do Apache
Este documento explica como carregar registos do Apache para o Google Security Operations através do Bindplane. O código do analisador tenta primeiro analisar a mensagem de registo não processada como JSON. Se isso falhar, usa expressões regulares (padrões grok) para extrair campos da mensagem com base em formatos de registo Apache comuns.
Antes de começar
- Certifique-se de que tem uma instância do Google SecOps.
- Certifique-se de que está a usar o Windows 2016 ou posterior, ou um anfitrião Linux com
systemd. - Se estiver a executar o serviço através de um proxy, certifique-se de que as portas da firewall estão abertas.
- Certifique-se de que tem acesso privilegiado a uma instância do Apache.
Obtenha o ficheiro de autenticação de carregamento do Google SecOps
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Agentes de recolha.
- Transfira o ficheiro de autenticação de carregamento. Guarde o ficheiro de forma segura no sistema onde o Bindplane vai ser instalado.
Obtenha o ID de cliente do Google SecOps
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Perfil.
- Copie e guarde o ID do cliente da secção Detalhes da organização.
Instale o agente do Bindplane
Instalação do Windows
- Abra a Linha de comandos ou o PowerShell como administrador.
Execute o seguinte 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 o seguinte comando:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Recursos de instalação adicionais
- Para ver opções de instalação adicionais, consulte este guia de instalação.
Configure o agente Bindplane para carregar o Syslog e enviá-lo para o Google SecOps
Aceda ao ficheiro de configuração:
- Localize o ficheiro
config.yaml. Normalmente, encontra-se no diretório/etc/bindplane-agent/no Linux ou no diretório de instalação no Windows. - Abra o ficheiro com um editor de texto (por exemplo,
nano,viou Bloco de notas).
- Localize o ficheiro
Edite o ficheiro
config.yamlda 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: 'APACHE' raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labelsSubstitua a porta e o endereço IP conforme necessário na sua infraestrutura.
Substitua
<customer_id>pelo ID de cliente real.Atualize
/path/to/ingestion-authentication-file.jsonpara o caminho onde o ficheiro de autenticação foi guardado na secção Obtenha o ficheiro de autenticação de carregamento do Google SecOps.
Reinicie o agente do Bindplane para aplicar as alterações
Para reiniciar o agente do Bindplane no Linux, execute o seguinte comando:
sudo systemctl restart bindplane-agentPara reiniciar o agente do Bindplane no Windows, pode usar a consola Services ou introduzir o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configure o Syslog no Apache
- Inicie sessão no servidor Ubuntu através de SSH.
Crie um ficheiro em
/etc/rsyslog.d/com o nome02-apache2.conf:vim /etc/rsyslog.d/02-apache2.confAdicione o seguinte código ao ficheiro:
module(load="imfile" PollingInterval="10" statefile.directory="/var/spool/rsyslog") input(type="imfile" File="/var/log/apache2/access.log" Tag="http_access" Severity="info" Facility="local6") Local6.info @<bindplane-agnet-ip>:<vindplane-agent-port> module(load="imfile" PollingInterval="10" statefile.directory="/var/spool/rsyslog") input(type="imfile" File="/var/log/apache2/error.log" Tag="http_error"- Substitua
bindplane-agent-ip>ebindplane-agent-portpelo endereço IP e pela porta configurados para o agente do Bindplane - Se estiver a usar o protocolo TCP, acrescente um
@adicional à linha do anfitrião para que fique com o seguinte aspeto:@@<bindplane-agnet-ip>:<vindplane-agent-port>.
- Substitua
Reinicie os serviços RSyslog:
sudo service rsyslog restart
Tabela de mapeamento da UDM
| Campo de registo | Mapeamento do UDM | Lógica |
|---|---|---|
| bytes | network.received_bytes | Bytes recebidos do cliente. |
| bytes | network.sent_bytes | Bytes enviados para o cliente. |
| bytes_out | network.sent_bytes | Bytes enviados para o cliente. |
| bytes_received | network.received_bytes | Bytes recebidos do cliente. |
| Conteúdo | network.http.method | Método HTTP extraído do campo "Content". |
| Conteúdo | target.url | URL de destino extraído do campo "Conteúdo". |
| bolacha | additional.fields.value.string_value | Valor do campo "cookie". |
| dest_ip | target.ip | Endereço IP do destino. |
| dest_name | target.hostname | Nome do anfitrião do destino. |
| dest_port | target.port | Porta do destino. |
| descrição | metadata.description | Descrição do evento. |
| duration_microseconds | additional.fields.value.string_value | Valor do campo "duration_microseconds". |
| file_full_path | target.file.full_path | Caminho completo do ficheiro de destino. |
| hostname | target.hostname | Nome do anfitrião do destino. |
| http_content_type | additional.fields.value.string_value | Valor do campo "http_content_type". |
| http_host | principal.hostname | Nome do anfitrião do principal. |
| http_method | network.http.method | Método HTTP. |
| http_referrer | network.http.referral_url | URL do referenciador HTTP. |
| http_user_agent | network.http.user_agent | Agente do utilizador HTTP. |
| ID | metadata.id | ID do evento. |
| insertId | metadata.product_log_id | ID do registo do produto. |
| ip | principal.ip | Endereço IP do principal. |
| jsonPayload.cIP | target.ip | Endereço IP do destino. |
| jsonPayload.cPort | target.port | Porta do destino. |
| jsonPayload.csBytes | network.sent_bytes | Bytes enviados para o cliente. |
| jsonPayload.csMethod | network.http.method | Método HTTP. |
| jsonPayload.csMimeType | target.file.mime_type | Tipo MIME do ficheiro de destino. |
| jsonPayload.csReferer | network.http.referral_url | URL do referenciador HTTP. |
| jsonPayload.csURL | target.url | URL de destino. |
| jsonPayload.csUserAgent | network.http.user_agent | Agente do utilizador HTTP. |
| jsonPayload.sHierarchy | additional.fields.value.string_value | Valor do campo "sHierarchy". |
| jsonPayload.sHostname | principal.hostname | Nome do anfitrião do principal. |
| jsonPayload.sIP | principal.ip | Endereço IP do principal. |
| jsonPayload.scBytes | network.received_bytes | Bytes recebidos do cliente. |
| jsonPayload.scHTTPStatus | network.http.response_code | Código da resposta HTTP. |
| jsonPayload.scResultCode | additional.fields.value.string_value | Valor do campo "scResultCode". |
| LastStatus | network.http.response_code | Código da resposta HTTP. |
| log_level | security_result.severity | Gravidade do resultado de segurança. |
| logName | security_result.category_details | Detalhes da categoria do resultado de segurança. |
| método | network.http.method | Método HTTP. |
| pid | principal.process.pid | ID do processo do principal. |
| Porta | target.port | Porta do destino. |
| proto | network.application_protocol | Protocolo de aplicação. |
| referenciador | network.http.referral_url | URL do referenciador HTTP. |
| RemoteHost | principal.ip | Endereço IP do principal. |
| RemoteUser | principal.user.userid | ID do utilizador do principal. |
| resource.labels.instance_id | target.resource.product_object_id | ID do objeto do produto do recurso de destino. |
| resource.labels.project_id | target.resource.attribute.labels.value | Valor da etiqueta "project_id". |
| resource.labels.zone | target.resource.attribute.cloud.availability_zone | Zona de disponibilidade do recurso de destino. |
| resource.type | target.resource.resource_type | Tipo de recurso do destino. |
| resposta | network.http.response_code | Código da resposta HTTP. |
| SizeBytes | network.received_bytes | Bytes recebidos do cliente. |
| src_ip | principal.ip | Endereço IP do principal. |
| src_port | principal.port | Portabilidade do número principal. |
| ssl_cipher | network.tls.cipher | Cifra TLS. |
| ssl_version | network.tls.version_protocol | Protocolo de versão TLS. |
| estado | network.http.response_code | Código da resposta HTTP. |
| alvo | target.url | URL de destino. |
| target_ip | target.ip | Endereço IP do destino. |
| target_port | target.port | Porta do destino. |
| tempo | metadata.event_timestamp | Data/hora do evento. |
| uri_path | target.process.file.full_path | Caminho completo do ficheiro de destino. |
| utilizador | principal.user.userid | ID do utilizador do principal. |
| useragent | network.http.user_agent | Agente do utilizador HTTP. |
| version_protocol | network.tls.version_protocol | Protocolo de versão TLS. |
| Workername | principal.hostname | Nome do anfitrião do principal. |
| x_forwarded_for | Valor do cabeçalho "X-Forwarded-For". | |
| metadata.log_type | O valor é definido como "APACHE" no código do analisador. | |
| metadata.product_name | O valor é definido como "Apache Web Server" no código do analisador. | |
| metadata.vendor_name | O valor é definido como "Apache" no código do analisador. | |
| metadata.event_type | O valor é determinado com base na presença de informações principais e de destino. Se o principal e o destino estiverem presentes, o tipo de evento é definido como "NETWORK_HTTP". Se apenas o principal estiver presente, o tipo de evento é definido como "STATUS_UPDATE". Caso contrário, é definido como "GENERIC_EVENT". | |
| additional.fields.key | A chave está definida como "keep_alive", "duration_microseconds", "cookie", "http_content_type", "sHierarchy", "scResultCode" no código do analisador com base no campo. | |
| target.port | Se o campo "proto" for "HTTP", a porta é definida como 80. Se o campo "proto" for "HTTPS", a porta é definida como 443. Se o campo "proto" for "FTP", a porta é definida como 21. | |
| target.resource.attribute.labels.key | A chave é definida como "project_id" no código do analisador. |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.