Recolha registos do VSFTPD
Este documento explica como carregar registos do VSFTPD para o Google Security Operations através do Bindplane. O analisador usa padrões grok para extrair campos dos registos, mapeando-os para o UDM. Processa vários tipos de registos, incluindo inícios de sessão, carregamentos, transferências e operações de diretório, enriquecendo os dados com contexto adicional, como informações e ações SSL/TLS (permitir/bloquear). Também realiza transformações específicas para diferentes tipos de mensagens de registo, como a extração de códigos de resposta e descrições, e a conversão de tamanhos de ficheiros em números inteiros.
Antes de começar
Certifique-se de que tem os seguintes pré-requisitos:
- Instância do Google SecOps
- Windows 2016 ou posterior, ou um anfitrião Linux com
systemd
- Se estiver a ser executado através de um proxy, certifique-se de que as portas da firewall estão abertas
- Acesso privilegiado ao anfitrião com VSFTPD
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
Instale o agente do Bindplane no seu sistema operativo Windows ou Linux de acordo com as seguintes instruções.
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 o 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
,vi
ou Bloco de notas).
- Localize o ficheiro
Edite o ficheiro
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_file_path: '/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 log_type: 'VSFTPD' raw_log_field: body ingestion_labels: 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 de cliente real. - Atualize
/path/to/ingestion-authentication-file.json
para 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-agent
Para reiniciar o agente Bindplane no Windows, pode usar a consola Serviços ou introduzir o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configure o Syslog no VSFTPD
- Inicie sessão no anfitrião VSFTPD.
Para instalar o rsyslog no Ubuntu/Debian, execute o seguinte comando:
sudo apt install rsyslog
Para instalar o rsyslog no CentOS/RHEL, execute o seguinte comando:
sudo yum install rsyslog
Edite a configuração do vsftpd para usar o Syslog:
sudo vi /etc/vsftpd.conf
Certifique-se de que os seguintes parâmetros estão definidos:
syslog_enable=YES xferlog_enable=NO log_ftp_protocol=YES
Guardar e sair.
Reinicie o vsftpd:
sudo systemctl restart vsftpd
Edite a configuração do rsyslog para encaminhar os registos para o agente do Bindplane:
sudo nano /etc/rsyslog.d/90-vsftpd.conf
Adicione a seguinte linha para encaminhar registos através de
UDP
(porta predefinida514
):if ($programname == 'vsftpd') then @@BINDPLANE_IP:514
Substitua
BINDPLANE_IP
pelo endereço IP real do agente do Bindplane.- Use
@
para UDP e@@
para TCP.
- Use
Reinicie o rsyslog:
sudo systemctl restart rsyslog
Tabela de mapeamento da UDM
Campo de registo | Mapeamento de UDM | Lógica |
---|---|---|
certificate |
security_result.detection_fields.key : "cert"security_result.detection_fields.value : value of certificate |
O valor do campo certificate está mapeado para um objeto security_result.detection_fields com a chave "cert". |
cipher |
network.tls.cipher |
O valor do campo cipher é mapeado diretamente. |
client_ip |
principal.ip |
O valor do campo client_ip é mapeado diretamente. |
date |
metadata.event_timestamp |
Usado com month , year e time para construir o metadata.event_timestamp . O formato é derivado do campo timestamp no registo não processado, analisado e convertido num objeto de data/hora. |
day |
metadata.event_timestamp |
Usado com month , year e time para construir o metadata.event_timestamp . |
desc |
metadata.description |
O valor do campo desc (extraído do campo type ) é mapeado diretamente. Isto aplica-se às operações "MKDIR", "RMDIR" e "DELETE". |
description |
network.ftp.command security_result.description target.file.full_path |
Se type for "comando FTP", o valor é mapeado para network.ftp.command . Se type for "DEBUG" e não corresponder a padrões SSL específicos, é mapeado para security_result.description . Se type começar por "OK" e não for "OK LOGIN", e o registo descrever uma operação de ficheiro (MKDIR, RMDIR, DELETE), é mapeado para target.file.full_path . |
file_name |
target.file.full_path |
O valor do campo file_name é mapeado diretamente. |
file_size |
network.received_bytes network.sent_bytes |
Se type for "OK DOWNLOAD" ou "FAIL DOWNLOAD", o valor é convertido num número inteiro sem sinal e mapeado para network.received_bytes . Se type for "OK UPLOAD" ou "FAIL UPLOAD", o valor é convertido num número inteiro não assinado e mapeado para network.sent_bytes . Definido como "USER_LOGIN" se type for "OK LOGIN". Definido como "FILE_UNCATEGORIZED" se type estiver relacionado com operações de ficheiros ("OK UPLOAD", "OK DOWNLOAD", "FAIL DOWNLOAD", "OK MKDIR", "OK RMDIR", "OK DELETE", "FAIL UPLOAD"). Definido como "STATUS_UPDATE" para todos os outros valores de type . Está sempre definido como "VSFTPD". Está sempre definido como "VSFTPD". Está sempre definido como "VSFTPD". |
month |
metadata.event_timestamp |
Usado com day , year e time para construir o metadata.event_timestamp . |
pid |
principal.process.pid |
O valor do campo pid é mapeado diretamente. |
response_code |
network.http.response_code |
O valor do campo response_code é convertido num número inteiro e mapeado. |
reused_status |
security_result.detection_fields.key : "reused status"security_result.detection_fields.value : value of reused_status |
O valor do campo reused_status é mapeado para um objeto security_result.detection_fields com a chave "reused status". |
speed |
additional.fields.key : "download_speed" ou "upload_speed"additional.fields.value.string_value : valor de speed |
Se type for "OK DOWNLOAD" ou "FAIL DOWNLOAD", o valor é mapeado para additional.fields com a chave "download_speed". Se type for "OK UPLOAD" ou "FAIL UPLOAD", o valor é mapeado para additional.fields com a chave "upload_speed". |
ssl_shutdown_state |
security_result.detection_fields.key : "SSL Shutdown State"security_result.detection_fields.value : valor de ssl_shutdown_state |
O valor do campo ssl_shutdown_state é mapeado para um objeto security_result.detection_fields com a chave "SSL Shutdown State". |
ssl_version |
network.tls.version |
O valor do campo ssl_version é mapeado diretamente. |
time |
metadata.event_timestamp |
Usado com day , month e year para construir o metadata.event_timestamp . |
type |
metadata.description security_result.action_details |
O valor do campo type está mapeado para metadata.description , exceto quando é "OK LOGIN". Também é mapeado para security_result.action_details quando indica uma ação de permissão ou bloqueio (começa com "OK" ou "FAIL"). |
userid |
principal.user.userid target.user.userid |
Se type for "OK LOGIN", o valor é mapeado para target.user.userid . Caso contrário, é mapeado para principal.user.userid . |
year |
metadata.event_timestamp |
Usado com day , month e time para construir o metadata.event_timestamp . Definido como "NETWORK" se type for "OK LOGIN". Definido como "MACHINE" se type for "OK LOGIN". Definido como "ALLOW" se type começar por "OK". Definido como "BLOCK" se type começar por "FAIL". |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.