Coletar registros do ServerIron da Brocade
Esse analisador extrai campos das mensagens syslog do Brocade ServerIron usando a correspondência de expressão regular e os mapeia para o modelo de dados unificado (UDM). Ele processa vários formatos de registro, incluindo status de rede, autenticação de usuário e eventos de segurança. O analisador realiza conversões e enriquecimentos de tipos de dados quando necessário.
Antes de começar
- Verifique se você tem uma instância do Google Security Operations.
- Verifique se você está usando o Windows 2016 ou uma versão mais recente ou um host Linux com systemd.
- Se estiver executando por trás de um proxy, verifique se as portas do firewall estão abertas.
- Verifique se você tem acesso privilegiado à instância do Brocade ServerIron.
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.
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
- Para a instalação do Windows, execute o seguinte script:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
- Para a instalação do Linux, execute o seguinte script:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
- Outras opções de instalação podem ser encontradas neste guia de instalação.
Configurar o agente BindPlane para ingerir o Syslog e enviar ao Google SecOps
- Acesse a máquina em que o BindPlane está instalado.
Edite o arquivo
config.yaml
da seguinte forma:receivers: tcplog: # Replace the below port <54525> and IP <0.0.0.0> with your specific values listen_address: "0.0.0.0:54525" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the creds location below according the placement of the credentials file you downloaded creds: '{ json file for creds }' # Replace <customer_id> below with your actual ID that you copied customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # You can apply ingestion labels below as preferred ingestion_labels: log_type: SYSLOG namespace: Brocade_ServerIron raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - tcplog exporters: - chronicle/chronicle_w_labels
Reinicie o agente do BindPlane para aplicar as mudanças:
sudo systemctl restart bindplane
Configurar a exportação de syslog do Brocade ServerIron ADX
Faça login no dispositivo ADX e entre no modo de configuração global:
enable configure terminal
Ativar a geração de registros do Syslog:
logging on
Especifique o endereço IP ou o nome do host e a porta do servidor syslog, incluindo o protocolo desejado (Bindplane):
logging host <syslog-server-ip> [udp | tcp] port <port-number>
Exemplo para TCP na porta 54525:
logging host 10.10.10.10 tcp port 54525
Opcional: defina a Facility Syslog (local0 a local7):
logging facility local0
Defina o nível mínimo de gravidade dos registros a serem enviados ao servidor syslog:
logging trap <severity-level>
Salve a configuração:
write memory
Tabela de mapeamento do UDM
Campo de registro | Mapeamento do UDM | Lógica |
---|---|---|
%{GREEDYDATA} | metadata.description | O campo %{GREEDYDATA} é mapeado para metadata.description quando corresponde ao padrão "-- %{GREEDYDATA} --". |
%{GREEDYDATA:auth_result} | security_result.description | O campo %{GREEDYDATA:auth_result} é concatenado com o campo %{GREEDYDATA:desc} para formar o security_result.description quando o %{GREEDYDATA:desc} está presente. |
%{GREEDYDATA:desc} | security_result.description | O campo %{GREEDYDATA:desc} é usado para preencher o campo security_result.description. Ele pode ser concatenado com outros campos, dependendo do formato do registro bruto. |
%{GREEDYDATA:login_to} | security_result.description | O campo %{GREEDYDATA:login_to} é concatenado com o campo %{GREEDYDATA:desc} para formar o security_result.description quando o campo %{GREEDYDATA:desc} está presente. |
%{GREEDYDATA:user} | target.user.userid | O campo %{GREEDYDATA:user} é mapeado para target.user.userid. |
%{HOST:principal_host} | principal.hostname | O campo %{HOST:principal_host} é mapeado para principal.hostname. |
%{HOST:target_host} | target.hostname | O campo %{HOST:target_host} é mapeado para target.hostname. |
%{INT:http_port} | additional.fields.value.string_value | O campo %{INT:http_port} é mapeado para additional.fields.value.string_value com a chave "Porta HTTP". |
%{INT:target_port} | target.port | O campo %{INT:target_port} é mapeado para target.port e convertido em um número inteiro. |
%{INT:telnet_port} | additional.fields.value.string_value | O campo %{INT:telnet_port} é mapeado para additional.fields.value.string_value com a chave "Porta Telnet". |
%{INT:tftp_port} | additional.fields.value.string_value | O campo %{INT:tftp_port} é mapeado para additional.fields.value.string_value com a chave "TFTP Port". |
%{IP:principal_ip} | principal.ip | O campo %{IP:principal_ip} é mapeado para principal.ip. |
%{IP:target_ip} | target.ip | O campo %{IP:target_ip} é mapeado para target.ip. |
%{IPV4:principal_ip} | principal.ip | O campo %{IPV4:principal_ip} é mapeado para principal.ip. |
%{IPV4:target_ip} | target.ip | O campo %{IPV4:target_ip} é mapeado para target.ip. |
%{MAC:principal_mac} | principal.mac | O campo %{MAC:principal_mac} é mapeado para principal.mac depois de ser convertido para o formato [0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}. |
%{USERNAME:target_host} | target.hostname | O campo %{USERNAME:target_host} é mapeado para target.hostname. |
%{USERNAME:user} | target.user.userid | O campo %{USERNAME:user} é mapeado para target.user.userid. |
%{WORD:auth_result} | security_result.description | O campo %{WORD:auth_result} é concatenado com o campo %{GREEDYDATA:desc} para formar security_result.description quando %{GREEDYDATA:desc} está presente. |
%{WORD:proto} | network.application_protocol | O campo %{WORD:proto} é mapeado para network.application_protocol quando o valor é 'SSH'. |
timestamp | metadata.event_timestamp | O campo de carimbo de data/hora é analisado a partir dos dados brutos do registro usando um padrão grok e convertido em um objeto de carimbo de data/hora. |
extensions.auth.type | O valor será definido como "MACHINE" se o campo proto não estiver vazio e o campo auth_action for "logout" ou "login". | |
metadata.description | O campo é preenchido com o valor de "metadata_description" se ele não estiver vazio. | |
metadata.event_type | O campo é preenchido com base nos valores de outros campos usando a lógica condicional: - STATUS_STARTUP: se target_port_status for "up". : STATUS_SHUTDOWN: se target_port_status for "down". - USER_LOGOUT: se proto não estiver vazio e auth_action for "logout". - USER_LOGIN: se proto não estiver vazio e auth_action for "login". : STATUS_UPDATE, se metadata_description corresponder a "state changed". - GENERIC_EVENT: se nenhuma das condições acima for atendida. |
|
metadata.log_type | O valor é fixado em "BROCADE_SERVERIRON". | |
metadata.product_name | O valor é fixado em "ServerIron". | |
metadata.vendor_name | O valor é fixado em "Brocade". | |
security_result.action | O valor será definido como "BLOCK" se o campo "desc" contiver "fail" ou se o campo "auth_result" contiver "fail" ou "rejected". |
Alterações
2022-01-13
- Parser adicionado recentemente.