Coletar registros de acesso do IBM Security Verify
Este documento descreve como coletar registros do IBM Security Verify Access. O analisador extrai campos comuns, como carimbos de data/hora, nomes de host e descrições, usando padrões Grok. Em seguida, ele usa a análise de XML para informações detalhadas do evento incorporadas no campo de descrição, mapeando os dados extraídos para o modelo de dados unificado (UDM, na sigla em inglês) para a representação de eventos de segurança padronizados.
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 administrativo ao IBM Security Verify Access (ISVA).
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 BindPlane para ingerir 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 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: ibm_security_verify 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 de cliente real.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 BindPlane para aplicar as mudanças.
No Linux, para reiniciar o agente BindPlane, execute o seguinte comando:
sudo systemctl restart bindplane-agent
No Windows, para reiniciar o agente BindPlane, use o console Services ou digite o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Personalizar o formato do registro
- Para editar o arquivo de configuração
WebSEAL
, use a interface de gerenciamento local (LMI) do dispositivo. - Na LMI, acesse Gerenciamento de proxy reverso.
- Clique em Gerenciar > Configuração > Editar arquivo de configuração. Você pode usar o editor para editar diretamente o arquivo de configuração
WebSEAL
. - Acesse logging[stanza], procure
syntax requests = {yes|no}
e clique em Sim. - Acesse o parâmetro
gmt-time
e edite-o da seguinte forma:gmt-time = yes
. Substitua o request-log-format pelo seguinte:
request-log-format = ibmsva: %h %l "%u" %t "%r" %s %b %T %j %{X-Forwarded-For}i %a %A %H %p %m %U %v %d %q
Confira a explicação a seguir de cada diretiva:
ibmsva:
Identifica registros do dispositivo SVA%h
: host remoto%l
: nome de logon remoto%u
: usuário remoto%t
: hora e data no formato CLF%r
: primeira linha da solicitação%s
: status da resposta%b
: bytes na resposta (excluindo cabeçalhos HTTP)%T
: tempo para atender a solicitação (segundos)%j
: nome da junção%X-Forwarded-For
: Endereço IP encaminhado%a
: endereço IP remoto%A
: endereço IP local%H
: protocolo de solicitação%p
: porta%m
: método de solicitação (GET, POST, HEAD)%U
: URL solicitado%v
: nome do servidor%d
: identificador da transação%q
: string de consulta
Configurar o encaminhamento de syslog no ISVA
- Faça login na interface de gerenciamento local da ISVA.
- Acesse Monitor > Registros > Encaminhamento remoto de Syslog.
- Clique em Adicionar.
- Especifique os detalhes do servidor syslog remoto.
- Servidor: o endereço IP ou o nome do host do servidor syslog (Bindplane).
- Porta: a porta em que o servidor syslog está detectando solicitações (Bindplane).
- Protocolo: selecione UDP ou TCP (dependendo da configuração do syslog/Bindplane).
- Formato: selecione Syslog.
- Clique em Salvar.
Como configurar as origens de registro para um servidor de registro remoto
- Selecione o servidor syslog remoto para enviar os registros.
- Clique em Origens.
- Clique em Adicionar.
Especifique os detalhes da origem do registro e clique em OK.
- Nome: selecione WebSEAL.
- Nome da instância: selecione a instância WebSEAL.
- Arquivo de registro: nome do arquivo de registro de origem.
- Opcional: Tag: a tag a ser adicionada às entradas de registro enviadas.
- Unidade: todas as mensagens são enviadas com o código de unidade especificado (lista de códigos disponíveis).
- Gravidade: a gravidade das entradas de registro enviadas.
- Todas as mensagens serão enviadas com o nível de gravidade especificado.
Clique em Salvar.
Tabela de mapeamento do UDM
Campo de registro | Mapeamento do UDM | Lógica |
---|---|---|
ação | read_only_udm.security_result.action_details | Extraídos do campo XML "/event/originator/action" quando o campo "description" contém "event". |
app | read_only_udm.target.application | Extraídos usando o padrão grok do campo "message". |
auth_details | read_only_udm.security_result.detection_fields.value | Extraídos do campo XML "/event/accessor/principal/@auth" quando o campo "description" contém "event". A chave está definida como "Auth". |
authntype | read_only_udm.security_result.detection_fields.value | Extraídos do campo XML "/event/authntype" quando o campo "description" contém "event". A chave está definida como "Authntype". |
dados | read_only_udm.metadata.description | Se o campo "data" não estiver vazio, o valor dele vai substituir o valor atual de "read_only_udm.metadata.description". |
description | read_only_udm.metadata.description | Extraídos usando o padrão grok do campo "message". Se o campo "description" contiver "event", ele será analisado como XML para extrair outros campos. |
event_id | read_only_udm.metadata.product_log_id | Extraídos do campo XML "/event/originator/event_id" quando o campo "description" contém "event". |
nome do host | read_only_udm.principal.hostname, read_only_udm.principal.asset.hostname | Extraídos usando o padrão grok do campo "message". |
id | read_only_udm.metadata.product_log_id | Extraídos usando o padrão grok do campo "message". |
local | read_only_udm.principal.location.name | Extraídos do campo XML "/event/originator/location" quando o campo "description" contém "event". |
resultado | read_only_udm.security_result.detection_fields.value | Extraídos do campo XML "/event/outcome" quando o campo "description" contém "event". A chave está definida como "Resultado". |
outcome_reason | read_only_udm.security_result.summary | Extraídos do campo XML "/event/outcome/@reason" quando o campo "description" contém "event". Também é usado para determinar o valor de "read_only_udm.security_result.action": defina como "BLOCK" se "outcome_reason" contiver "fail" (sem distinção entre maiúsculas e minúsculas). Caso contrário, defina como "ALLOW". |
outcome_status | read_only_udm.security_result.detection_fields.value | Extraídos do campo XML "/event/outcome/@status" quando o campo "description" contém "event". A chave está definida como "Status do resultado". |
originator_blade | read_only_udm.security_result.detection_fields.value | Extraídos do campo XML "/event/originator/@blade" quando o campo "description" contém "event". A chave está definida como "Originator Blade". |
originator_component | read_only_udm.security_result.detection_fields.value | Extraídos do campo XML "/event/originator/component" quando o campo "description" contém "event". A chave é definida como "Componente de origem". |
originator_instance | read_only_udm.security_result.detection_fields.value | Extraídos do campo XML "/event/originator/@instance" quando o campo "description" contém "event". A chave está definida como "Originator Instance". |
session_id | read_only_udm.network.session_id | Extraídos do campo XML "/event/accessor/session_id" quando o campo "description" contém "event". |
target_url | read_only_udm.target.url | Extraídos do campo XML "/event/target/url" quando o campo "description" contém "event". |
thread_id | read_only_udm.security_result.detection_fields.value | Extraídos usando o padrão grok do campo "message". A chave é definida como "ID da linha de execução". |
timestamp | read_only_udm.metadata.event_timestamp | Extraídos usando o padrão grok do campo "message". Formatado usando o filtro "data" com base na presença e no formato do campo "fuso horário". |
time_stamp | read_only_udm.metadata.event_timestamp | Extraídos do campo XML "/event/date" quando o campo "description" contém "event". Formatado usando o filtro "data". |
timezone | Usado em conjunto com o campo "carimbo de data/hora" para formatar o campo "read_only_udm.metadata.event_timestamp" usando o filtro "data". | |
url | read_only_udm.target.url | Extraídos usando o padrão grok do campo "message". |
usuário | read_only_udm.principal.user.userid | Extraídos do campo XML "/event/accessor/principal" quando o campo "description" contém "event". |
user_location | read_only_udm.principal.ip, read_only_udm.principal.asset.ip | Extraídos do campo XML "/event/accessor/user_location" quando o campo "description" contém "event". Se "user_location_type" contiver "ip" (sem distinção entre maiúsculas e minúsculas), ele será analisado como um endereço IP e mapeado para "read_only_udm.principal.ip" e "read_only_udm.principal.asset.ip". |
user_location_type | Usado para determinar se "user_location" precisa ser analisado como um endereço IP. | |
N/A | read_only_udm.metadata.vendor_name | Defina como "IBM_SECURITY_VERIFY". |
N/A | read_only_udm.metadata.product_name | Defina como "IBM_SECURITY_VERIFY". |
N/A | read_only_udm.metadata.event_type | Inicialmente definido como "STATUS_UPDATE". Mudado para "USER_LOGIN" se os campos "user" e "hostname" forem extraídos. |
N/A | read_only_udm.extensions.auth.type | Defina como "SSO" se os campos "user" e "hostname" forem extraídos. |
N/A | read_only_udm.network.application_protocol | Defina como "HTTP" se o campo "message" contiver "HttpServletRequest". |
N/A | read_only_udm.metadata.log_type | Definido como "IBM_SECURITY_VERIFY", extraído dos metadados do registro. |
Alterações
2024-05-13
- O analisador foi atualizado para oferecer suporte a registros no formato XML.
2023-01-25
- Parser recém-criado.