Coletar registros do Delinea Secret Server
Este documento explica como coletar registros do Secret Server da Delinea (antiga Thycotic). O analisador transforma registros brutos em um formato estruturado de acordo com o UDM do Google Security Operations. Primeiro, ele extrai campos principais, como carimbos de data/hora, tipos de eventos e informações do usuário. Depois, usa a lógica condicional com base no tipo de evento específico para mapear os dados nos campos apropriados da UDM, enriquecendo os dados para análise no Google SecOps.
Antes de começar
- Verifique se você tem uma instância do Google Security Operations.
- Use o Windows 2016 ou uma versão mais recente ou um host Linux com
systemd
. - Se você estiver executando por trás de um proxy, verifique se as portas do firewall estão abertas.
- Verifique se você tem acesso privilegiado à Delinea.
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.
- Baixe o arquivo de autenticação de ingestão. Salve o arquivo com segurança no sistema em que o agente do Bindplane será instalado.
Receber o ID do 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 root 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 ingerir Syslog e enviar ao Google SecOps
Acesse o arquivo de configuração:
- Localize o arquivo
config.yaml
. Normalmente, ele fica 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 Bloco de Notas).
- Localize o arquivo
Edite o arquivo
config.yaml
da seguinte forma:receivers: udplog: # Replace with your specific IP and port listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip # Path to the ingestion authentication file creds: '/path/to/your/ingestion-auth.json' # Your Chronicle customer ID customer_id: 'your_customer_id' endpoint: malachiteingestion-pa.googleapis.com ingestion_labels: log_type: SYSLOG namespace: thycotic 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 do 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 arquivo de autenticação de ingestão 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 Bindplane Agent no Windows, use o console Serviços ou digite o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configurar o Delinea Secret Server para enviar registros usando o Syslog
- Faça login no Delinea Secret Server com credenciais de administrador.
- Acesse Administrador > Configuração.
- Clique em Editar.
- Marque a caixa de seleção Ativar o registro em Syslog/CEF e especifique os seguintes detalhes:
- Servidor Syslog/CEF: insira o endereço IP do Bindplane.
- Protocolo Syslog/CEF: selecione UDP ou TCP (dependendo da configuração do Bindplane).
- Porta Syslog/CEF: digite o número da porta que o Bindplane está configurado para detectar.
- Clique em Salvar.
Mapeamento do UDM
Campo de registro | Mapeamento da UDM | Lógica |
---|---|---|
Account_Domain | event1.idm.read_only_udm.principal.domain | O valor é extraído do campo "Account_Domain" no campo "msg" do registro bruto. |
Por usuário | event1.idm.read_only_udm.principal.user.userid | O valor é extraído do campo "Por usuário" no campo "msg" do registro bruto. |
ID do contêiner | event1.idm.read_only_udm.principal.asset.asset_id | O valor é extraído do campo "Container Id" no campo "msg" do registro bruto e tem o prefixo "container_id:". |
Nome do contêiner | event1.idm.read_only_udm.principal.resource.name | O valor é extraído do campo "Container name" no campo "msg" do registro bruto. |
cs2 | event1.idm.read_only_udm.additional.fields[].value.string_value | O valor é extraído do campo "cs2" no campo "msg" do registro bruto. |
cs3 | event1.idm.read_only_udm.target.file.full_path | O valor é extraído do campo "cs3" no campo "msg" do registro bruto. |
cs4 | event1.idm.read_only_udm.principal.user.user_display_name | O valor é extraído do campo "cs4" no campo "msg" do registro bruto. |
Detalhes | event1.idm.read_only_udm.additional.fields[].value.string_value | O valor é extraído do campo "Details" no campo "msg" do registro bruto. |
fname | event1.idm.read_only_udm.target.file.full_path | O valor é extraído do campo "fname" no campo "msg" do registro bruto. |
Host | event1.idm.read_only_udm.principal.hostname, event1.idm.read_only_udm.principal.asset.hostname | O valor é extraído do campo "Host" no campo "msg" do registro bruto. |
Nome do item | event1.idm.read_only_udm.target.user.userid | O valor é extraído do campo "Nome do item" no campo "msg" do registro bruto. |
event1.idm.read_only_udm.additional.fields[].key | O valor é codificado como "fname". | |
event1.idm.read_only_udm.additional.fields[].key | O valor é codificado como "Grupo ou usuário". | |
event1.idm.read_only_udm.additional.fields[].key | O valor é codificado como "Detalhes". | |
event1.idm.read_only_udm.additional.fields[].key | O valor é codificado como "type_id". | |
event1.idm.read_only_udm.extensions.auth.type | O valor é codificado como "MACHINE". | |
event1.idm.read_only_udm.metadata.description | O valor é extraído do campo "thycotic_event", que é extraído do registro bruto usando um padrão grok. | |
event1.idm.read_only_udm.metadata.event_timestamp.seconds | O valor é derivado do campo "rt", se presente, ou do campo "ts". Os dois campos são extraídos do registro bruto usando padrões grok. | |
event1.idm.read_only_udm.metadata.event_type | O valor é determinado com base no campo "thycotic_event" e em outras condições. Por exemplo, se "thycotic_event" for "USER - LOGIN", o tipo de evento será definido como "USER_LOGIN". | |
event1.idm.read_only_udm.metadata.log_type | O valor é fixado como "THYCOTIC". | |
event1.idm.read_only_udm.metadata.product_event_type | O valor é extraído do campo "thycotic_event", que é extraído do registro bruto usando um padrão grok. | |
event1.idm.read_only_udm.metadata.product_log_id | O valor é retirado do campo "action_id", que é extraído do registro bruto usando um padrão grok. | |
event1.idm.read_only_udm.metadata.product_name | O valor é retirado do campo "device_product", que é extraído do registro bruto usando um padrão grok. Se o campo estiver vazio, o valor será codificado como "Secret Server". | |
event1.idm.read_only_udm.metadata.product_version | O valor é retirado do campo "device_version", que é extraído do registro bruto usando um padrão grok. | |
event1.idm.read_only_udm.metadata.vendor_name | O valor é codificado como "Thycotic". | |
event1.idm.read_only_udm.network.ip_protocol | O valor é definido como "TCP" se o campo "input.type" for "tcp". | |
event1.idm.read_only_udm.observer.application | O valor é extraído do campo "agent.type", se presente. Caso contrário, ele é codificado como "Secret Server". | |
event1.idm.read_only_udm.observer.asset_id | O valor é definido como "ID do agente:" concatenado com o campo "agent.id". | |
event1.idm.read_only_udm.observer.hostname | O valor é extraído do campo "agent.hostname", se presente, ou do campo "server". | |
event1.idm.read_only_udm.observer.platform_version | O valor é extraído do campo "agent.version". | |
event1.idm.read_only_udm.observer.user.userid | O valor é extraído do campo "agent.name". | |
event1.idm.read_only_udm.principal.asset.asset_id | O valor é definido como "ID:" concatenado com o campo "host.id". | |
event1.idm.read_only_udm.principal.asset.hardware.cpu_platform | O valor é extraído do campo "host.architecture". | |
event1.idm.read_only_udm.principal.asset.hostname | O valor é extraído do campo "server", se presente, ou do campo "host.hostname". | |
event1.idm.read_only_udm.principal.asset.ip | O valor é extraído do campo "src", se presente, ou do campo "src_ip". | |
event1.idm.read_only_udm.principal.hostname | O valor é extraído do campo "host.hostname", se presente, ou do campo "server". | |
event1.idm.read_only_udm.principal.ip | O valor é extraído do campo "src", se presente, ou do campo "src_ip" ou "host.ip". | |
event1.idm.read_only_udm.principal.mac | O valor é extraído do campo "host.mac". | |
event1.idm.read_only_udm.principal.platform | O valor é definido como "LINUX" se o campo "host_os_platform" for "centos". Caso contrário, ele é definido como o valor em maiúsculas do campo "host_os_platform". | |
event1.idm.read_only_udm.principal.platform_patch_level | O valor é extraído do campo "host.os.kernel". | |
event1.idm.read_only_udm.principal.platform_version | O valor é extraído do campo "host.os.version". | |
event1.idm.read_only_udm.principal.port | O valor é extraído do campo "src_port", que é extraído do campo "log.source.address" usando um padrão grok. | |
event1.idm.read_only_udm.principal.user.user_display_name | O valor é extraído do campo "cs4" no campo "msg" do registro bruto. | |
event1.idm.read_only_udm.principal.user.userid | O valor é extraído do campo "suser" no campo "msg" do registro bruto ou do campo "Por usuário" se "thycotic_event" for "USER - LOGIN", "USER - LOGOUT", "USER - LOGINFAILURE" ou "USER - EDIT". | |
event1.idm.read_only_udm.security_result.action | O valor é extraído do campo "Action" no campo "msg" do registro bruto. Também pode ser definido como "ALLOW" ou "BLOCK" com base no valor de "thycotic_event". | |
event1.idm.read_only_udm.security_result.description | O valor é extraído do campo "temp_message", que contém a parte restante do campo "msg" após a extração de outros campos. | |
event1.idm.read_only_udm.security_result.severity | O valor é determinado com base no campo "syslog_severity". Por exemplo, se "syslog_severity" contiver "error" ou "warning", a gravidade será definida como "HIGH". Se "thycotic_event" for "System Log", a gravidade será definida como "INFORMATIONAL". | |
event1.idm.read_only_udm.security_result.severity_details | O valor é extraído do campo "syslog_severity". | |
event1.idm.read_only_udm.target.file.full_path | O valor é criado concatenando os campos "cs3" e "fname" com um separador "/" se os dois campos estiverem presentes. Se apenas um campo estiver presente, o valor será extraído dele. | |
event1.idm.read_only_udm.target.resource.product_object_id | O valor é extraído do campo "type_id". | |
event1.idm.read_only_udm.target.user.userid | O valor é extraído do campo "item_name" no campo "msg" do registro bruto ou do campo "Item Name" se "thycotic_event" for "USER - LOGIN", "USER - LOGOUT", "USER - LOGINFAILURE" ou "USER - EDIT". | |
events.timestamp.seconds | O valor é derivado do campo "rt", se presente, ou do campo "ts". Os dois campos são extraídos do registro bruto usando padrões grok. | |
rt | event1.idm.read_only_udm.metadata.event_timestamp.seconds | O valor é extraído do campo "rt" no campo "msg" do registro bruto e usado para definir o carimbo de data/hora do evento. |
src | event1.idm.read_only_udm.principal.asset.ip, event1.idm.read_only_udm.principal.ip | O valor é extraído do campo "src" no campo "msg" do registro bruto. |
src_ip | event1.idm.read_only_udm.principal.asset.ip, event1.idm.read_only_udm.principal.ip | O valor é extraído do campo "src_ip", que é extraído do campo "log.source.address" usando um padrão grok. |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.