Recolha registos do proxy Forcepoint

Compatível com:

Este documento explica como carregar registos do proxy Forcepoint para o Google Security Operations através do Bindplane. O analisador primeiro limpa a mensagem de registo de entrada e extrai pares de chave-valor através de padrões grok e expressões regulares. Em seguida, mapeia os campos extraídos para o modelo de dados unificado (UDM) com base em condições e valores de campos específicos, processando vários formatos de registos e casos extremos para garantir uma representação de dados consistente.

Antes de começar

  • Certifique-se de que tem uma instância do Google Security Operations.
  • 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 ao proxy Forcepoint.

Obtenha o ficheiro de autenticação de carregamento do Google SecOps

  1. Inicie sessão na consola Google SecOps.
  2. Aceda a Definições do SIEM > Agentes de recolha.
  3. 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

  1. Inicie sessão na consola Google SecOps.
  2. Aceda a Definições do SIEM > Perfil.
  3. Copie e guarde o ID do cliente da secção Detalhes da organização.

Instale o agente do Bindplane

Instalação do Windows

  1. Abra a Linha de comandos ou o PowerShell como administrador.
  2. Execute o seguinte comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Instalação do Linux

  1. Abra um terminal com privilégios de raiz ou sudo.
  2. 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

Configure o agente Bindplane para carregar o Syslog e enviá-lo para o Google SecOps

  1. Aceda ao ficheiro de configuração:

    1. 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.
    2. Abra o ficheiro com um editor de texto (por exemplo, nano, vi ou Bloco de notas).
  2. 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: '/path/to/ingestion-authentication-file.json'
            # Replace with your actual customer ID from Step 2
       <     custom>er_id: customer_id
            endpoint: malachiteingestion-pa.googleapis.com
            # Add optional ingestion labels for better organization
            ingestion_labels:
                log_type: FORCEPOINT_WEBPROXY
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. Substitua a porta e o endereço IP conforme necessário na sua infraestrutura.

  4. Substitua <customer_id> pelo ID de cliente real.

  5. 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 do Bindplane no Windows, pode usar a consola Services ou introduzir o seguinte comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configure o Forcepoint Web Security Suite

  1. Inicie sessão na consola do Forcepoint.
  2. Aceda a Web > Definições > Geral.
  3. Clique em Integração de SIEM.
  4. Selecione a caixa de verificação Ativar a integração do SIEM para este servidor de políticas.
  5. Indique os seguintes detalhes de configuração:
    • Endereço IP ou nome de anfitrião: introduza o endereço IP do agente do Bindplane.
    • Número da porta: introduza o número da porta configurado no agente do Bindplane; por exemplo, 514.
    • Protocolo de transporte: selecione o protocolo UDP.
    • Formato SIEM: selecione Syslog/CEF (Arcsight).
  6. Clique em OK.
  7. Clique em Guardar e implementar.

Tabela de mapeamento da UDM

Campo de registo Mapeamento de UDM Lógica
ação security_result.summary Se action_msg não estiver vazio, é mapeado para security_result.summary. Caso contrário, se a ação não estiver vazia, é mapeada para security_result.summary. Caso contrário, se act não estiver vazio, é mapeado para security_result.summary.
action_msg security_result.summary Se action_msg não estiver vazio, é mapeado para security_result.summary. Caso contrário, se a ação não estiver vazia, é mapeada para security_result.summary. Caso contrário, se act não estiver vazio, é mapeado para security_result.summary.
app target.application Se destinationServiceName não estiver vazio, é mapeado para app_name. Caso contrário, se app não estiver vazio e não contiver http nem HTTP, é mapeado para app_name. Por último, app_name é mapeado para target.application.
bytes_in network.received_bytes Se in não estiver vazio, é mapeado para bytes_in. Por fim, bytes_in é mapeado para network.received_bytes.
bytes_out network.sent_bytes Se out não estiver vazio, é mapeado para bytes_out. Por fim, bytes_out é mapeado para network.sent_bytes.
gato security_result.category_details Se cat não estiver vazio, é mapeado para a categoria. Por fim, a categoria é mapeada para security_result.category_details.
cn1 security_result.detection_fields.value Se cn1 não estiver vazio, é mapeado para security_result.detection_fields.value com a chave Disposition Number.
ContentType target.file.mime_type Se contentType não estiver vazio, é mapeado para ContentType. Por último, ContentType é mapeado para target.file.mime_type.
cs1 target_role.description cs1 está mapeado para target_role.description.
cs2 security_result.category_details Se cs2 não estiver vazio e não for 0, é mapeado para security_result.category_details com o prefixo Dynamic Category:.
cs3 target.file.mime_type cs3 está mapeado para target.file.mime_type.
descrição metadata.description Se a descrição não estiver vazia, é mapeada para metadata.description.
destinationServiceName target.application Se destinationServiceName não estiver vazio, é mapeado para app_name. Por último, app_name é mapeado para target.application.
deviceFacility metadata.product_event_type Se product_event e deviceFacility não estiverem vazios, são concatenados com - e mapeados para metadata.product_event_type. Caso contrário, product_event é mapeado para metadata.product_event_type.
disposição security_result.detection_fields.value Se a disposição não estiver vazia, é mapeada para security_result.detection_fields.value com a chave Disposition Number.
dst target.ip Se dst não estiver vazio e dvchost estiver vazio, é mapeado para dst_ip. Por fim, dst_ip é mapeado para target.ip.
dst_host target.hostname Se dst não estiver vazio e dvchost estiver vazio, é mapeado para dst_host. Por último, dst_host é mapeado para target.hostname.
dst_ip target.ip Se dst não estiver vazio e dvchost estiver vazio, é mapeado para dst_ip. Por fim, dst_ip é mapeado para target.ip.
dst_port target.port Se dst não estiver vazio e dvchost estiver vazio, é mapeado para dst_port. Por último, dst_port é mapeado para target.port.
duração network.session_duration.seconds Se a duração não estiver vazia e não for 0, é mapeada para network.session_duration.seconds.
dvchost intermediary.ip Se dvchost não estiver vazio, é mapeado para int_ip. Por fim, int_ip é mapeado para intermediary.ip se for um endereço IP válido. Caso contrário, é mapeado para intermediary.hostname.
file_path target.file.full_path Se file_path não estiver vazio, é mapeado para target.file.full_path.
anfitrião principal.ip Se o anfitrião não estiver vazio, é mapeado para src. Por último, src é mapeado para principal.ip.
http_method network.http.method Se requestMethod não estiver vazio, é mapeado para http_method. Caso contrário, se o método não estiver vazio, é mapeado para http_method. Por último, http_method é mapeado para network.http.method.
http_proxy_status_code network.http.response_code Se http_response estiver vazio ou 0 ou -, e http_proxy_status_code não estiver vazio, é mapeado para network.http.response_code.
http_response network.http.response_code Se http_response não estiver vazio, não for 0 nem -, é mapeado para network.http.response_code.
http_user_agent network.http.user_agent Se http_user_agent não estiver vazio e não for -, é mapeado para network.http.user_agent.
em network.received_bytes Se in não estiver vazio, é mapeado para bytes_in. Por fim, bytes_in é mapeado para network.received_bytes.
int_host intermediary.hostname Se int_ip não estiver vazio e int_host não estiver vazio e for diferente de int_ip, é mapeado para intermediary.hostname.
int_ip intermediary.ip Se dvchost não estiver vazio, é mapeado para int_ip. Por fim, int_ip é mapeado para intermediary.ip se for um endereço IP válido. Caso contrário, é mapeado para intermediary.hostname.
nível target_role.name Se o nível não estiver vazio e a função estiver vazia, é mapeado para a função. Por fim, a função é mapeada para target_role.name.
log_level security_result.severity Se a gravidade for 1 ou log_level contiver info ou a mensagem contiver notice, security_result.severity é definido como INFORMATIONAL. Se a gravidade for 7, security_result.severity é definida como HIGH.
loginID principal.user.userid Se loginID não estiver vazio, é mapeado para o utilizador. Por último, se o utilizador não estiver vazio, não for - e não contiver LDAP, é mapeado para principal.user.userid.
método network.http.method Se requestMethod não estiver vazio, é mapeado para http_method. Caso contrário, se o método não estiver vazio, é mapeado para http_method. Por último, http_method é mapeado para network.http.method.
NatRuleId security_result.detection_fields.value Se NatRuleId não estiver vazio, é mapeado para security_result.detection_fields.value com a chave NatRuleId.
sair network.sent_bytes Se out não estiver vazio, é mapeado para bytes_out. Por fim, bytes_out é mapeado para network.sent_bytes.
pid target.process.pid Se pid não estiver vazio, é mapeado para target.process.pid.
política target_role.description Se a política não estiver vazia, é mapeada para a política. Se a política não estiver vazia e não for -, é mapeada para target_role.description.
Política target_role.description Se a política não estiver vazia, é mapeada para a política. Se a política não estiver vazia e não for -, é mapeada para target_role.description.
product_event metadata.product_event_type Se o produto não estiver vazio, é mapeado para product_event. Se product_event e deviceFacility não estiverem vazios, são concatenados com - e mapeados para metadata.product_event_type. Caso contrário, product_event é mapeado para metadata.product_event_type.
proxyStatus-code network.http.response_code Se http_response estiver vazio ou 0 ou -, e http_proxy_status_code estiver vazio e proxyStatus-code não estiver vazio, é mapeado para network.http.response_code.
refererUrl network.http.referral_url Se refererUrl não estiver vazio e não for -, é mapeado para network.http.referral_url.
requestClientApplication network.http.user_agent Se requestMethod não estiver vazio, é mapeado para http_user_agent. Por último, http_user_agent é mapeado para network.http.user_agent.
requestMethod network.http.method Se requestMethod não estiver vazio, é mapeado para http_method. Por último, http_method é mapeado para network.http.method.
função target_role.name Se o nível não estiver vazio e a função estiver vazia, é mapeado para a função. Por fim, a função é mapeada para target_role.name.
RuleID security_result.rule_id Se RuleID não estiver vazio, é mapeado para security_result.rule_id.
serverStatus-code network.http.response_code Se http_response estiver vazio ou 0 ou -, e http_proxy_status_code estiver vazio e proxyStatus-code não estiver vazio, é mapeado para network.http.response_code.
gravidade security_result.severity Se a gravidade for 1 ou log_level contiver info ou a mensagem contiver notice, security_result.severity é definido como INFORMATIONAL. Se a gravidade for 7, security_result.severity é definida como HIGH.
spt principal.port Se spt não estiver vazio, é mapeado para src_port. Por fim, src_port é mapeado para principal.port.
src principal.ip Se src_host não estiver vazio, é mapeado para source_ip_temp. Se source_ip_temp for um endereço IP válido e src estiver vazio, é mapeado para src. Se o anfitrião não estiver vazio, é mapeado para src. Por último, src é mapeado para principal.ip.
src_host principal.hostname Se src_host não estiver vazio, é mapeado para source_ip_temp. Se source_ip_temp não for um endereço IP válido, é mapeado para principal.hostname. Se source_ip_temp for um endereço IP válido e src estiver vazio, é mapeado para src. Por último, src é mapeado para principal.ip.
src_port principal.port Se src_port não estiver vazio, é mapeado para principal.port.
suser principal.user.userid Se loginID não estiver vazio, é mapeado para o utilizador. Se suser não estiver vazio, é mapeado para user. Por último, se o utilizador não estiver vazio, não for - e não contiver LDAP, é mapeado para principal.user.userid.
url target.url Se o URL não estiver vazio, é mapeado para target.url.
utilizador principal.user.userid Se loginID não estiver vazio, é mapeado para o utilizador. Se suser não estiver vazio, é mapeado para user. Caso contrário, se usrName não estiver vazio, é mapeado para o utilizador. Por último, se o utilizador não estiver vazio, não for - e não contiver LDAP, é mapeado para principal.user.userid.
usrName principal.user.userid Se loginID não estiver vazio, é mapeado para o utilizador. Se suser não estiver vazio, é mapeado para user. Caso contrário, se usrName não estiver vazio, é mapeado para o utilizador. Por último, se o utilizador não estiver vazio, não for - e não contiver LDAP, é mapeado para principal.user.userid.
quando metadata.event_timestamp Se when não estiver vazio, é analisado e mapeado para metadata.event_timestamp.
metadata.log_type O valor FORCEPOINT_WEBPROXY está codificado nos metadados.log_type.
metadata.product_name O valor Forcepoint Webproxy está codificado nos metadados metadata.product_name.
metadata.vendor_name O valor Forcepoint está codificado nos metadados.vendor_name.
network.application_protocol Se dst_port for 80, network.application_protocol é definido como HTTP. Se dst_port for 443, network.application_protocol é definido como HTTPS.
principal.user.group_identifiers Se o utilizador não estiver vazio, não for - e contiver LDAP, a parte da UO da string de utilizador é extraída e mapeada para principal.user.group_identifiers.
principal.user.user_display_name Se o utilizador não estiver vazio, não for - e contiver LDAP, a parte do nome de utilizador da string do utilizador é extraída e mapeada para principal.user.user_display_name.
security_result.action Se action_msg, action ou act não estiverem vazios, sec_action é definido como ALLOW ou BLOCK com base nos respetivos valores. Por fim, sec_action é mapeado para security_result.action.
security_result.category_details Se cat não estiver vazio, é mapeado para a categoria. Por fim, a categoria é mapeada para security_result.category_details. Se cs2 não estiver vazio e não for 0, é mapeado para security_result.category_details com o prefixo Dynamic Category:.
security_result.detection_fields.key O valor Disposition Number está codificado no campo security_result.detection_fields.key quando mapeia a disposição ou cn1. O valor NatRuleId está codificado no security_result.detection_fields.key quando mapeia NatRuleId. O valor Category Number está codificado em security_result.detection_fields.key quando mapeia category_no.
security_result.severity Se a gravidade for 1 ou log_level contiver info ou a mensagem contiver notice, security_result.severity é definido como INFORMATIONAL. Se a gravidade for 7, security_result.severity é definida como HIGH.
target_role.description Se a política não estiver vazia, é mapeada para a política. Se a política não estiver vazia e não for -, é mapeada para target_role.description.
target_role.name Se o nível não estiver vazio e a função estiver vazia, é mapeado para a função. Por fim, a função é mapeada para target_role.name.
category_no security_result.detection_fields.value Se category_no não estiver vazio, é mapeado para security_result.detection_fields.value com a chave Category Number.

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.