Coletar registros do proxy Forcepoint

Compatível com:

Neste documento, explicamos como transferir os registros do Forcepoint Proxy para as operações de segurança do Google usando o Bindplane. O analisador primeiro limpa a mensagem de registro de entrada e extrai pares de chave-valor usando padrões grok e expressões regulares. Em seguida, ele mapeia os campos extraídos para o modelo de dados unificado (UDM, na sigla em inglês) com base em condições e valores de campo específicos, processando vários formatos de registro e casos extremos para garantir a representação consistente dos dados.

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 ao Proxy da Forcepoint.

Receber o arquivo de autenticação de ingestão do Google SecOps

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Agentes de coleta.
  3. 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

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Perfil.
  3. Copie e salve o ID do cliente na seção Detalhes da organização.

Instalar o agente do Bindplane

Instalação do Windows

  1. Abra o Prompt de Comando ou o PowerShell como administrador.
  2. Execute este 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 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

Configurar o agente do Bindplane para processar o Syslog e enviar ao Google SecOps

  1. Acesse o arquivo de configuração:

    1. 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.
    2. Abra o arquivo usando um editor de texto (por exemplo, nano, vi ou Notepad).
  2. Edite o arquivo 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
            customer_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 real do cliente.

  5. 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 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 agente do Bindplane no Windows, use o console Services ou digite o seguinte comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configurar o Forcepoint Web Security Suite

  1. Faça login no console do Forcepoint.
  2. Acesse Web > Configurações > Geral.
  3. Clique em Integração com SIEM.
  4. Marque a caixa de seleção Ativar a integração do SIEM para este servidor de políticas.
  5. Informe os seguintes detalhes de configuração:
    • Endereço IP ou nome do host: insira o endereço IP do agente do Bindplane.
    • Número da porta: insira 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 Salvar e implantar.

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
ação security_result.summary Se action_msg não estiver vazio, ele será mapeado para security_result.summary. Caso contrário, se a ação não estiver vazia, ela será mapeada para security_result.summary. Caso contrário, se o ato não estiver vazio, ele será mapeado para security_result.summary.
action_msg security_result.summary Se action_msg não estiver vazio, ele será mapeado para security_result.summary. Caso contrário, se a ação não estiver vazia, ela será mapeada para security_result.summary. Caso contrário, se o ato não estiver vazio, ele será mapeado para security_result.summary.
app target.application Se destinationServiceName não estiver vazio, ele será mapeado para app_name. Caso contrário, se o app não estiver vazio e não contiver http ou HTTP, ele será associado a app_name. Por fim, app_name é mapeado para target.application.
bytes_in network.received_bytes Se o campo "in" não estiver vazio, ele será mapeado para "bytes_in". Por fim, bytes_in é associado a network.received_bytes.
bytes_out network.sent_bytes Se out não estiver vazio, ele será mapeado para bytes_out. Por fim, bytes_out é mapeado para network.sent_bytes.
gato security_result.category_details Se cat não estiver vazio, ele será mapeado para "category". Por fim, a categoria é mapeada para security_result.category_details.
cn1 security_result.detection_fields.value Se cn1 não estiver vazio, ele será mapeado para security_result.detection_fields.value com a chave Disposition Number.
ContentType target.file.mime_type Se contentType não estiver vazio, ele será mapeado para ContentType. Por fim, ContentType é mapeado para target.file.mime_type.
cs1 target_role.description cs1 é mapeado para target_role.description.
cs2 security_result.category_details Se cs2 não estiver vazio e não for 0, ele será mapeado para security_result.category_details com o prefixo Dynamic Category:.
cs3 target.file.mime_type cs3 é mapeado para target.file.mime_type.
description metadata.description Se a descrição não estiver vazia, ela será mapeada para metadata.description.
destinationServiceName target.application Se destinationServiceName não estiver vazio, ele será mapeado para app_name. Por fim, app_name é mapeado para target.application.
deviceFacility metadata.product_event_type Se product_event e deviceFacility não estiverem vazios, eles serão concatenados com - e mapeados para metadata.product_event_type. Caso contrário, o product_event é mapeado para metadata.product_event_type.
disposition security_result.detection_fields.value Se disposition não estiver vazio, ele será mapeado para security_result.detection_fields.value com a chave Disposition Number.
dst target.ip Se dst não estiver vazio e dvchost estiver vazio, ele será 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, ele será mapeado para dst_host. Por fim, dst_host é mapeado para target.hostname.
dst_ip target.ip Se dst não estiver vazio e dvchost estiver vazio, ele será 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, ele será mapeado para dst_port. Por fim, dst_port é associado a target.port.
duration network.session_duration.seconds Se a duração não estiver vazia e não for 0, ela será mapeada para network.session_duration.seconds.
dvchost intermediary.ip Se dvchost não estiver vazio, ele será associado a int_ip. Por fim, int_ip é mapeado para intermediary.ip se for um endereço IP válido. Caso contrário, ele será mapeado para intermediary.hostname.
file_path target.file.full_path Se file_path não estiver vazio, ele será mapeado para target.file.full_path.
host principal.ip Se o host não estiver vazio, ele será mapeado para src. Por fim, o src é mapeado para principal.ip.
http_method network.http.method Se o requestMethod não estiver vazio, ele será mapeado para http_method. Caso contrário, se o método não estiver vazio, ele será mapeado para http_method. Por fim, 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, ele será mapeado para network.http.response_code.
http_response network.http.response_code Se http_response não estiver vazio e não for 0 nem -, ele será 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 -, ele será mapeado para network.http.user_agent.
em network.received_bytes Se o campo "in" não estiver vazio, ele será mapeado para "bytes_in". Por fim, bytes_in é associado a 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, ele será mapeado para intermediary.hostname.
int_ip intermediary.ip Se dvchost não estiver vazio, ele será associado a int_ip. Por fim, int_ip é mapeado para intermediary.ip se for um endereço IP válido. Caso contrário, ele será mapeado para intermediary.hostname.
level target_role.name Se o nível não estiver vazio e o papel estiver vazio, ele será mapeado para o papel. Por fim, o papel é mapeado 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 será definido como INFORMATIONAL. Se a gravidade for 7, security_result.severity será definido como HIGH.
loginID principal.user.userid Se o loginID não estiver vazio, ele será mapeado para o usuário. Por fim, se o user não estiver vazio e não for -, nem conter LDAP, ele será mapeado para principal.user.userid.
método network.http.method Se o requestMethod não estiver vazio, ele será mapeado para http_method. Caso contrário, se o método não estiver vazio, ele será mapeado para http_method. Por fim, http_method é mapeado para network.http.method.
NatRuleId security_result.detection_fields.value Se NatRuleId não estiver vazio, ele será mapeado para security_result.detection_fields.value com a chave NatRuleId.
out network.sent_bytes Se out não estiver vazio, ele será mapeado para bytes_out. Por fim, bytes_out é mapeado para network.sent_bytes.
pid target.process.pid Se o pid não estiver vazio, ele será mapeado para target.process.pid.
política target_role.description Se a política não estiver vazia, ela será mapeada para a política. Se a política não estiver vazia e não for -, ela será mapeada para target_role.description.
Política target_role.description Se a política não estiver vazia, ela será mapeada para a política. Se a política não estiver vazia e não for -, ela será mapeada para target_role.description.
product_event metadata.product_event_type Se o produto não estiver vazio, ele será mapeado para "product_event". Se product_event e deviceFacility não estiverem vazios, eles serão concatenados com - e mapeados para metadata.product_event_type. Caso contrário, o 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, ele será mapeado para network.http.response_code.
refererUrl network.http.referral_url Se o refererUrl não estiver vazio e não for -, ele será mapeado para network.http.referral_url.
requestClientApplication network.http.user_agent Se o requestMethod não estiver vazio, ele será associado a http_user_agent. Por fim, http_user_agent é mapeado para network.http.user_agent.
requestMethod network.http.method Se o requestMethod não estiver vazio, ele será mapeado para http_method. Por fim, http_method é mapeado para network.http.method.
papel target_role.name Se o nível não estiver vazio e o papel estiver vazio, ele será mapeado para o papel. Por fim, o papel é mapeado para target_role.name.
RuleID security_result.rule_id Se RuleID não estiver vazio, ele será associado a 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, ele será 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 será definido como INFORMATIONAL. Se a gravidade for 7, security_result.severity será definido como HIGH.
spt principal.port Se spt não estiver vazio, ele será mapeado para src_port. Por fim, src_port é mapeado para principal.port.
src principal.ip Se src_host não estiver vazio, ele será mapeado para source_ip_temp. Se source_ip_temp for um endereço IP válido e src estiver vazio, ele será mapeado para src. Se o host não estiver vazio, ele será mapeado para src. Por fim, o src é mapeado para principal.ip.
src_host principal.hostname Se src_host não estiver vazio, ele será mapeado para source_ip_temp. Se o source_ip_temp não for um endereço IP válido, ele será mapeado para principal.hostname. Se source_ip_temp for um endereço IP válido e src estiver vazio, ele será mapeado para src. Por fim, o src é mapeado para principal.ip.
src_port principal.port Se src_port não estiver vazio, ele será mapeado para principal.port.
suser principal.user.userid Se o loginID não estiver vazio, ele será mapeado para o usuário. Se o suser não estiver vazio, ele será mapeado para o usuário. Por fim, se o user não estiver vazio e não for -, nem conter LDAP, ele será mapeado para principal.user.userid.
url target.url Se o URL não estiver vazio, ele será mapeado para target.url.
usuário principal.user.userid Se o loginID não estiver vazio, ele será mapeado para o usuário. Se o suser não estiver vazio, ele será mapeado para o usuário. Caso contrário, se usrName não estiver vazio, ele será mapeado para o usuário. Por fim, se o user não estiver vazio e não for -, nem conter LDAP, ele será mapeado para principal.user.userid.
usrName principal.user.userid Se o loginID não estiver vazio, ele será mapeado para o usuário. Se o suser não estiver vazio, ele será mapeado para o usuário. Caso contrário, se usrName não estiver vazio, ele será mapeado para o usuário. Por fim, se o user não estiver vazio e não for -, nem conter LDAP, ele será mapeado para principal.user.userid.
quando metadata.event_timestamp Se o valor de "when" não estiver em branco, ele será analisado e mapeado para metadata.event_timestamp.
metadata.log_type O valor FORCEPOINT_WEBPROXY é codificado em metadata.log_type.
metadata.product_name O valor Forcepoint Webproxy é codificado em metadata.product_name.
metadata.vendor_name O valor Forcepoint é codificado em metadata.vendor_name.
network.application_protocol Se dst_port for 80, network.application_protocol será definido como HTTP. Se dst_port for 443, network.application_protocol será definido como HTTPS.
principal.user.group_identifiers Se o usuário não estiver vazio e não for - e contiver LDAP, a parte da unidade organizacional da string de usuário será extraída e mapeada para principal.user.group_identifiers.
principal.user.user_display_name Se o user não estiver vazio e não for - e contiver LDAP, a parte do nome de usuário da string de usuário será 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 será definido como ALLOW ou BLOCK com base nos valores. Por fim, sec_action é mapeado para security_result.action.
security_result.category_details Se cat não estiver vazio, ele será mapeado para "category". Por fim, a categoria é mapeada para security_result.category_details. Se cs2 não estiver vazio e não for 0, ele será mapeado para security_result.category_details com o prefixo Dynamic Category:.
security_result.detection_fields.key O valor Disposition Number é fixado em security_result.detection_fields.key ao mapear a disposição ou cn1. O valor NatRuleId é codificado em segurança_result.detection_fields.key ao mapear NatRuleId. O valor Category Number é codificado em segurança_result.detection_fields.key ao mapear category_no.
security_result.severity Se a gravidade for 1 ou log_level contiver info ou a mensagem contiver notice, security_result.severity será definido como INFORMATIONAL. Se a gravidade for 7, security_result.severity será definido como HIGH.
target_role.description Se a política não estiver vazia, ela será mapeada para a política. Se a política não estiver vazia e não for -, ela será mapeada para target_role.description.
target_role.name Se o nível não estiver vazio e o papel estiver vazio, ele será mapeado para o papel. Por fim, o papel é mapeado para target_role.name.
category_no security_result.detection_fields.value Se category_no não estiver vazio, ele será mapeado para security_result.detection_fields.value com a chave Category Number.

Alterações

2025-01-16

Melhoria:

  • Mapeou security_result.action para BLOCK quando s-action é TCP_DENIED.

2024-10-18

Melhoria:

  • Adicionamos suporte para analisar os registros CSV não analisados.
  • Foi adicionado suporte para excluir registros CSV inválidos.
  • host-url foi mapeado para principal.url.

2024-07-10

Melhoria:

  • Foram adicionados os padrões Grok para novos registros de formato KV.
  • username foi mapeado para principal.user.userid.
  • cs-uri foi mapeado para target.url.
  • Mapeamos cs-uri-query , time-taken , filter-category , cs-uri-path , cs-uri-extension e rs_content_type para additional.fields.
  • Se sc-filter-result for OBSERVED, defina security_result.action como ALLOW. Se sc-filter-result for DENIED, defina security_result.action como BLOCK. Caso contrário, defina security_result.action como ALLOW.
  • cs-auth-group foi mapeado para principal.user_group_identifiers.
  • cs-method foi mapeado para network.http.method.
  • sc-status foi mapeado para response_code.
  • s-action foi mapeado para security_result.detection_fields.
  • srcport foi mapeado para principal.port.
  • dstport foi mapeado para target.port.
  • sc-bytes foi mapeado para network.received_bytes.
  • cs-bytes foi mapeado para network.sent_bytes.
  • cs foi mapeado para security_result.summary.
  • cs_referer foi mapeado para network.http.referral_url.
  • cs-host foi mapeado para target.hostname.

2024-06-10

Melhoria:

  • Adicionamos suporte a registros no formato CSV.

2023-06-12

Melhoria:

  • O padrão Grok foi modificado para analisar registros com falha em que alguns dos valores estão presentes como "-".
  • Adição de verificação de condição para o campo "http_response" antes do mapeamento.

2022-08-11

Melhoria:

  • O grok foi modificado para analisar logs do tipo CEF sem cabeçalho syslog.

2022-05-16

Melhoria:

  • Número de categoria mapeado para security_result.detection_fields.

2022-05-05

Melhoria:

  • Mapeamento adicionado para campos: requestClientApplication para http.user_agent, proxyStatus-code para http.response_code, disposition e cn1 para security_result.detection_fields.
  • O campo "cs2" foi mapeado para "security_result.category_details" se o valor de "cs2Label" for "DynCat".
  • O campo "cs2" foi mapeado para "security_result.detection_fields" se o valor de "cs2Label" for "NatRuleId".

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