Forcepoint Web Security 로그 수집

다음에서 지원:

이 문서에서는 Bindplane 에이전트를 사용하여 Forcepoint Web Security 로그를 Google Security Operations로 수집하는 방법을 설명합니다.

Forcepoint Web Security는 웹 액세스, 보안 이벤트, 인증, 정책 시행을 위해 CEF (Common Event Format)로 syslog 메시지를 생성하는 웹 프록시 및 보안 게이트웨이입니다. 파서는 CEF 및 syslog 형식 로그에서 필드를 추출하여 통합 데이터 모델 (UDM)에 매핑합니다.

시작하기 전에

다음 기본 요건이 충족되었는지 확인합니다.

  • Google SecOps 인스턴스
  • Windows Server 2016 이상 또는 systemd가 설치된 Linux 호스트
  • Bindplane 에이전트와 Forcepoint Web Security 간의 네트워크 연결
  • 프록시 뒤에서 실행하는 경우 Bindplane 에이전트 요구사항에 따라 방화벽 포트가 열려 있는지 확인합니다.
  • Forcepoint Security Manager 또는 어플라이언스 관리 인터페이스에 대한 관리 액세스 권한

Google SecOps 수집 인증 파일 가져오기

  1. Google SecOps 콘솔에 로그인합니다.
  2. SIEM 설정 > 수집 에이전트로 이동합니다.
  3. 수집 인증 파일을 다운로드합니다.
  4. Bindplane 에이전트가 설치될 시스템에 파일을 안전하게 저장합니다.

Google SecOps 고객 ID 가져오기

  1. Google SecOps 콘솔에 로그인합니다.
  2. SIEM 설정 > 프로필로 이동합니다.
  3. 조직 세부정보 섹션에서 고객 ID를 복사하여 저장합니다.

Bindplane 에이전트 설치

다음 안내에 따라 Windows 또는 Linux 운영체제에 Bindplane 에이전트를 설치합니다.

Windows 설치

  1. 명령 프롬프트 또는 PowerShell을 관리자로 엽니다.
  2. 다음 명령어를 실행합니다.

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. 설치가 완료될 때까지 기다립니다.

  4. 다음을 실행하여 설치를 확인합니다.

    sc query observiq-otel-collector
    

    서비스가 실행 중으로 표시되어야 합니다.

Linux 설치

  1. 루트 또는 sudo 권한으로 터미널을 엽니다.
  2. 다음 명령어를 실행합니다.

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. 설치가 완료될 때까지 기다립니다.

  4. 다음을 실행하여 설치를 확인합니다.

    sudo systemctl status observiq-otel-collector
    

    서비스가 active (running)으로 표시되어야 합니다.

추가 설치 리소스

추가 설치 옵션 및 문제 해결은 Bindplane 에이전트 설치 가이드를 참고하세요.

syslog를 수집하여 Google SecOps로 전송하도록 Bindplane 에이전트 구성

TCP (권장) 또는 UDP를 통해 syslog 메시지를 수신하도록 Bindplane 에이전트를 구성할 수 있습니다.

구성 파일 찾기

  • Linux:

    sudo nano /etc/bindplane-agent/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

구성 파일 설정

config.yaml의 전체 내용을 선택한 프로토콜의 구성으로 바꿉니다.

  • 옵션 A: TCP 구성 (권장)

    receivers:
        tcplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/forcepoint_webproxy:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: '<customer_id>'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: FORCEPOINT_WEBPROXY
            raw_log_field: body
    
    service:
        pipelines:
            logs/forcepoint_tcp_to_chronicle:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/forcepoint_webproxy
    
  • 옵션 B: UDP 구성

    receivers:
        udplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/forcepoint_webproxy:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: '<customer_id>'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: FORCEPOINT_WEBPROXY
            raw_log_field: body
    
    service:
        pipelines:
            logs/forcepoint_udp_to_chronicle:
                receivers:
                    - udplog
                exporters:
                    - chronicle/forcepoint_webproxy
    

구성 매개변수

다음 자리표시자를 바꿉니다.

  • 수신기 구성:

    • listen_address: 리슨할 IP 주소 및 포트입니다.
      • 0.0.0.0: 모든 인터페이스에서 수신 대기 (권장)
      • 포트 514는 표준 syslog 포트입니다 (Linux에서 루트 필요, 비루트의 경우 1514 사용).
  • 내보내기 도구 구성:

    • creds_file_path: 수집 인증 파일의 전체 경로입니다.
      • Linux: /etc/bindplane-agent/ingestion-auth.json
      • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • customer_id: Google SecOps 콘솔에서 복사한 고객 ID
    • endpoint: 리전 엔드포인트 URL:
      • 미국: malachiteingestion-pa.googleapis.com
      • 유럽: europe-malachiteingestion-pa.googleapis.com
      • 아시아: asia-southeast1-malachiteingestion-pa.googleapis.com
      • 전체 목록은 리전 엔드포인트를 참고하세요.

구성 파일 저장

  • 수정 후 파일을 저장합니다.
    • Linux: Ctrl+O, Enter, Ctrl+X 순서로 누릅니다.
    • Windows: 파일 > 저장을 클릭합니다.

변경사항을 적용하려면 Bindplane 에이전트를 다시 시작하세요.

  • Linux에서 Bindplane 에이전트를 다시 시작하려면 다음 명령어를 실행합니다.

    sudo systemctl restart observiq-otel-collector
    
    1. 서비스가 실행 중인지 확인합니다.

      sudo systemctl status observiq-otel-collector
      
    2. 로그에서 오류를 확인합니다.

      sudo journalctl -u observiq-otel-collector -f
      
  • Windows에서 Bindplane 에이전트를 다시 시작하려면 다음 옵션 중 하나를 선택합니다.

    • 관리자 권한으로 명령 프롬프트 또는 PowerShell:

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • 서비스 콘솔:

      1. Win+R 키를 누르고 services.msc을 입력한 다음 Enter 키를 누릅니다.
      2. observIQ OpenTelemetry Collector를 찾습니다.
      3. 마우스 오른쪽 버튼을 클릭하고 다시 시작을 선택합니다.
      4. 서비스가 실행 중인지 확인합니다.

        sc query observiq-otel-collector
        
      5. 로그에서 오류를 확인합니다.

        type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
        

Forcepoint Web Security에서 syslog 전달 구성

Forcepoint Web Security를 구성하여 로그를 CEF (Common Event Format) 형식으로 Bindplane 에이전트에 전달합니다.

Forcepoint Security Manager 사용

  1. 관리자 사용자 인증 정보로 Forcepoint Security Manager에 로그인합니다.
  2. 설정 > 로깅으로 이동합니다.
  3. 왼쪽 탐색에서 로그 서버를 선택합니다.
  4. 추가를 클릭하여 새 로그 서버 구성을 만듭니다.
  5. 다음 구성 세부정보를 제공합니다.
    • 서버 유형: 시스템로그 서버 또는 CEF 서버를 선택합니다.
    • 이름: 설명이 포함된 이름을 입력합니다 (예: Google Security Operations Bindplane CEF).
    • 호스트: Bindplane 에이전트 IP 주소 또는 호스트 이름을 입력합니다.
    • 포트: Bindplane 에이전트 포트 번호를 입력합니다 (예: 514).
    • 프로토콜: Bindplane 구성과 일치하는 프로토콜을 선택합니다.
      • Bindplane에서 tcplog 수신기를 구성한 경우 TCP를 선택합니다 (권장됨).
      • Bindplane에서 udplog 수신기를 구성한 경우 UDP를 선택합니다.
    • 형식: CEF (Common Event Format)를 선택합니다.
    • 시설: Local0 (또는 사용 가능한 다른 시설)을 선택합니다.
    • 심각도: 정보를 선택합니다 (모든 로그 수준을 캡처).
  6. 로그 카테고리 또는 이벤트 유형에서 전달할 이벤트를 선택합니다.
    • 웹 액세스 로그 (트랜잭션 로그)
    • 보안 이벤트 (위협 감지)
    • 인증 이벤트 (사용자 로그인/로그아웃)
    • 시스템 이벤트 (시스템 및 구성 변경사항)
    • 또는 모든 이벤트를 선택하여 사용 가능한 모든 로그 유형을 전달합니다.
  7. 선택사항: 추가 설정을 구성합니다.
    • 배치 크기: 실시간 전달의 경우 1로 설정하고 일괄 처리의 경우 더 높게 설정합니다.
    • 메시지 형식: CEF 형식이 선택되어 있는지 확인합니다.
    • 사용자 정보 포함: 로그에 사용자 ID를 포함하려면 사용 설정합니다.
  8. 연결 테스트를 클릭하여 Bindplane 에이전트와의 연결을 확인합니다.
  9. 저장을 클릭하여 구성을 적용합니다.
  10. 배포를 클릭하여 모든 Forcepoint Web Security 게이트웨이에 구성을 푸시합니다.

Forcepoint Web Security 어플라이언스 사용 (직접 구성)

어플라이언스에서 직접 구성하는 경우 다음 단계를 따르세요.

  1. Forcepoint Web Security Appliance 관리 인터페이스에 로그인합니다.
  2. 시스템 > 로그 서버로 이동합니다.
  3. 추가 또는 수정을 클릭하여 로그 서버를 만들거나 수정합니다.
  4. 다음 구성 세부정보를 제공합니다.
    • 서버 주소: Bindplane 에이전트 IP 주소를 입력합니다.
    • 포트: 514 (또는 맞춤 포트)을 입력합니다.
    • 프로토콜: Bindplane 구성과 일치하도록 TCP 또는 UDP를 선택합니다.
    • 형식: CEF 또는 Common Event Format을 선택합니다.
    • Facility: Local0을 선택합니다.
  5. 로그 유형에서 전달할 로그를 선택합니다.
    • 액세스 로그
    • 보안 로그
    • 관리자 로그
  6. 적용 또는 저장을 클릭합니다.
  7. 여러 기기를 사용하는 경우 각 기기에서 이 구성을 반복합니다.

UDM 매핑 테이블

로그 필드 UDM 매핑 논리
action security_result.summary action_msg가 비어 있지 않으면 security_result.summary에 매핑됩니다. 그렇지 않고 action이 비어 있지 않으면 security_result.summary에 매핑됩니다. 그렇지 않고 act이 비어 있지 않으면 security_result.summary에 매핑됩니다.
action_msg security_result.summary action_msg가 비어 있지 않으면 security_result.summary에 매핑됩니다. 그렇지 않고 action이 비어 있지 않으면 security_result.summary에 매핑됩니다. 그렇지 않고 act이 비어 있지 않으면 security_result.summary에 매핑됩니다.
app target.application destinationServiceName가 비어 있지 않으면 app_name에 매핑됩니다. 그렇지 않고 app가 비어 있지 않고 http 또는 HTTP를 포함하지 않으면 app_name에 매핑됩니다. 마지막으로 app_nametarget.application에 매핑됩니다.
bytes_in network.received_bytes in가 비어 있지 않으면 bytes_in에 매핑됩니다. 마지막으로 bytes_innetwork.received_bytes에 매핑됩니다.
bytes_out network.sent_bytes out가 비어 있지 않으면 bytes_out에 매핑됩니다. 마지막으로 bytes_outnetwork.sent_bytes에 매핑됩니다.
cat security_result.category_details cat가 비어 있지 않으면 category에 매핑됩니다. 마지막으로 categorysecurity_result.category_details에 매핑됩니다.
category_no security_result.detection_fields.value category_no가 비어 있지 않으면 키 Category Numbersecurity_result.detection_fields.value에 매핑됩니다.
cn1 security_result.detection_fields.value cn1가 비어 있지 않으면 키 Disposition Numbersecurity_result.detection_fields.value에 매핑됩니다.
ContentType target.file.mime_type contentType가 비어 있지 않으면 ContentType에 매핑됩니다. 마지막으로 ContentTypetarget.file.mime_type에 매핑됩니다.
cs1 target_role.description cs1target_role.description에 매핑됩니다.
cs2 security_result.category_details cs2이 비어 있지 않고 0이 아닌 경우 Dynamic Category: 프리픽스와 함께 security_result.category_details에 매핑됩니다.
cs3 target.file.mime_type cs3target.file.mime_type에 매핑됩니다.
description metadata.description description가 비어 있지 않으면 metadata.description에 매핑됩니다.
destinationServiceName target.application destinationServiceName가 비어 있지 않으면 app_name에 매핑됩니다. 마지막으로 app_nametarget.application에 매핑됩니다.
deviceFacility metadata.product_event_type product_eventdeviceFacility가 비어 있지 않으면 -와 연결되고 metadata.product_event_type에 매핑됩니다. 그렇지 않으면 product_eventmetadata.product_event_type에 매핑됩니다.
disposition security_result.detection_fields.value disposition가 비어 있지 않으면 키 Disposition Numbersecurity_result.detection_fields.value에 매핑됩니다.
dst target.ip dst이 비어 있지 않고 dvchost이 비어 있으면 dst_ip에 매핑됩니다. 마지막으로 dst_iptarget.ip에 매핑됩니다.
dst_host target.hostname dst이 비어 있지 않고 dvchost이 비어 있으면 dst_host에 매핑됩니다. 마지막으로 dst_hosttarget.hostname에 매핑됩니다.
dst_ip target.ip dst이 비어 있지 않고 dvchost이 비어 있으면 dst_ip에 매핑됩니다. 마지막으로 dst_iptarget.ip에 매핑됩니다.
dst_port target.port dst이 비어 있지 않고 dvchost이 비어 있으면 dst_port에 매핑됩니다. 마지막으로 dst_porttarget.port에 매핑됩니다.
duration network.session_duration.seconds duration이 비어 있지 않고 0이 아니면 network.session_duration.seconds에 매핑됩니다.
dvchost intermediary.ip dvchost가 비어 있지 않으면 int_ip에 매핑됩니다. 마지막으로 int_ip가 유효한 IP 주소인 경우 intermediary.ip에 매핑되고, 그렇지 않으면 intermediary.hostname에 매핑됩니다.
file_path target.file.full_path file_path가 비어 있지 않으면 target.file.full_path에 매핑됩니다.
host principal.ip host가 비어 있지 않으면 src에 매핑됩니다. 마지막으로 srcprincipal.ip에 매핑됩니다.
http_method network.http.method requestMethod가 비어 있지 않으면 http_method에 매핑됩니다. 그렇지 않고 method이 비어 있지 않으면 http_method에 매핑됩니다. 마지막으로 http_methodnetwork.http.method에 매핑됩니다.
http_proxy_status_code network.http.response_code http_response이 비어 있거나 0 또는 -이고 http_proxy_status_code이 비어 있지 않으면 network.http.response_code에 매핑됩니다.
http_response network.http.response_code http_response이 비어 있지 않고 0도 아니고 -도 아니면 network.http.response_code에 매핑됩니다.
http_user_agent network.http.user_agent http_user_agent이 비어 있지 않고 -이 아닌 경우 network.http.user_agent에 매핑됩니다.
in network.received_bytes in가 비어 있지 않으면 bytes_in에 매핑됩니다. 마지막으로 bytes_innetwork.received_bytes에 매핑됩니다.
int_host intermediary.hostname int_ip가 비어 있지 않고 int_host이 비어 있지 않으며 int_ip와 다른 경우 intermediary.hostname에 매핑됩니다.
int_ip intermediary.ip dvchost가 비어 있지 않으면 int_ip에 매핑됩니다. 마지막으로 int_ip가 유효한 IP 주소인 경우 intermediary.ip에 매핑되고, 그렇지 않으면 intermediary.hostname에 매핑됩니다.
level target_role.name level이 비어 있지 않고 role이 비어 있으면 role에 매핑됩니다. 마지막으로 roletarget_role.name에 매핑됩니다.
log_level security_result.severity severity1이거나 log_levelinfo이 포함되거나 messagenotice이 포함되면 security_result.severityINFORMATIONAL로 설정됩니다. severity7이면 security_result.severityHIGH로 설정됩니다.
loginID principal.user.userid loginID가 비어 있지 않으면 user에 매핑됩니다. 마지막으로 user가 비어 있지 않고 -이 아니며 LDAP를 포함하지 않으면 principal.user.userid에 매핑됩니다.
method network.http.method requestMethod가 비어 있지 않으면 http_method에 매핑됩니다. 그렇지 않고 method이 비어 있지 않으면 http_method에 매핑됩니다. 마지막으로 http_methodnetwork.http.method에 매핑됩니다.
NatRuleId security_result.detection_fields.value NatRuleId가 비어 있지 않으면 키 NatRuleId와 함께 security_result.detection_fields.value에 매핑됩니다.
out network.sent_bytes out가 비어 있지 않으면 bytes_out에 매핑됩니다. 마지막으로 bytes_outnetwork.sent_bytes에 매핑됩니다.
pid target.process.pid pid가 비어 있지 않으면 target.process.pid에 매핑됩니다.
policy target_role.description Policy가 비어 있지 않으면 policy에 매핑됩니다. policy이 비어 있지 않고 -이 아니면 target_role.description에 매핑됩니다.
Policy target_role.description Policy가 비어 있지 않으면 policy에 매핑됩니다. policy이 비어 있지 않고 -이 아니면 target_role.description에 매핑됩니다.
product_event metadata.product_event_type product가 비어 있지 않으면 product_event에 매핑됩니다. product_eventdeviceFacility가 비어 있지 않으면 -와 연결되고 metadata.product_event_type에 매핑됩니다. 그렇지 않으면 product_eventmetadata.product_event_type에 매핑됩니다.
proxyStatus-code network.http.response_code http_response이 비어 있거나 0 또는 -이고 http_proxy_status_code이 비어 있으며 proxyStatus-code이 비어 있지 않으면 network.http.response_code에 매핑됩니다.
refererUrl network.http.referral_url refererUrl이 비어 있지 않고 -이 아니면 network.http.referral_url에 매핑됩니다.
requestClientApplication network.http.user_agent requestMethod가 비어 있지 않으면 http_user_agent에 매핑됩니다. 마지막으로 http_user_agentnetwork.http.user_agent에 매핑됩니다.
requestMethod network.http.method requestMethod가 비어 있지 않으면 http_method에 매핑됩니다. 마지막으로 http_methodnetwork.http.method에 매핑됩니다.
role target_role.name level이 비어 있지 않고 role이 비어 있으면 role에 매핑됩니다. 마지막으로 roletarget_role.name에 매핑됩니다.
RuleID security_result.rule_id RuleID가 비어 있지 않으면 security_result.rule_id에 매핑됩니다.
serverStatus-code network.http.response_code http_response이 비어 있거나 0 또는 -이고 http_proxy_status_code이 비어 있으며 proxyStatus-code이 비어 있지 않으면 network.http.response_code에 매핑됩니다.
severity security_result.severity severity1이거나 log_levelinfo이 포함되거나 messagenotice이 포함되면 security_result.severityINFORMATIONAL로 설정됩니다. severity7이면 security_result.severityHIGH로 설정됩니다.
spt principal.port spt가 비어 있지 않으면 src_port에 매핑됩니다. 마지막으로 src_portprincipal.port에 매핑됩니다.
src principal.ip src_host가 비어 있지 않으면 source_ip_temp에 매핑됩니다. source_ip_temp가 유효한 IP 주소이고 src가 비어 있으면 src에 매핑됩니다. host가 비어 있지 않으면 src에 매핑됩니다. 마지막으로 srcprincipal.ip에 매핑됩니다.
src_host principal.hostname src_host가 비어 있지 않으면 source_ip_temp에 매핑됩니다. source_ip_temp가 유효한 IP 주소가 아닌 경우 principal.hostname에 매핑됩니다. source_ip_temp가 유효한 IP 주소이고 src가 비어 있으면 src에 매핑됩니다. 마지막으로 srcprincipal.ip에 매핑됩니다.
src_port principal.port src_port가 비어 있지 않으면 principal.port에 매핑됩니다.
suser principal.user.userid loginID가 비어 있지 않으면 user에 매핑됩니다. suser가 비어 있지 않으면 user에 매핑됩니다. 마지막으로 user가 비어 있지 않고 -이 아니며 LDAP를 포함하지 않으면 principal.user.userid에 매핑됩니다.
url target.url url가 비어 있지 않으면 target.url에 매핑됩니다.
user principal.user.userid loginID가 비어 있지 않으면 user에 매핑됩니다. suser가 비어 있지 않으면 user에 매핑됩니다. 그렇지 않고 usrName이 비어 있지 않으면 user에 매핑됩니다. 마지막으로 user가 비어 있지 않고 -이 아니며 LDAP를 포함하지 않으면 principal.user.userid에 매핑됩니다.
usrName principal.user.userid loginID가 비어 있지 않으면 user에 매핑됩니다. suser가 비어 있지 않으면 user에 매핑됩니다. 그렇지 않고 usrName이 비어 있지 않으면 user에 매핑됩니다. 마지막으로 user가 비어 있지 않고 -이 아니며 LDAP를 포함하지 않으면 principal.user.userid에 매핑됩니다.
when metadata.event_timestamp when이 비어 있지 않으면 파싱되어 metadata.event_timestamp에 매핑됩니다.
해당 사항 없음 metadata.log_type FORCEPOINT_WEBPROXY 값이 metadata.log_type에 하드코딩됩니다.
해당 사항 없음 metadata.product_name Forcepoint Webproxy 값이 metadata.product_name에 하드코딩됩니다.
해당 사항 없음 metadata.vendor_name Forcepoint 값이 metadata.vendor_name에 하드코딩됩니다.
해당 사항 없음 network.application_protocol dst_port80이면 network.application_protocolHTTP로 설정됩니다. dst_port443이면 network.application_protocolHTTPS로 설정됩니다.
해당 사항 없음 principal.user.group_identifiers user이 비어 있지 않고 -이 아니며 LDAP을 포함하는 경우 사용자 문자열의 OU 부분이 추출되어 principal.user.group_identifiers에 매핑됩니다.
해당 사항 없음 principal.user.user_display_name user이 비어 있지 않고 -이 아니며 LDAP을 포함하는 경우 사용자 문자열의 사용자 이름 부분이 추출되어 principal.user.user_display_name에 매핑됩니다.
해당 사항 없음 security_result.action action_msg, action 또는 act가 비어 있지 않으면 값에 따라 sec_actionALLOW 또는 BLOCK로 설정됩니다. 마지막으로 sec_actionsecurity_result.action에 매핑됩니다.
해당 사항 없음 security_result.detection_fields.key disposition 또는 cn1를 매핑할 때 Disposition Number 값이 security_result.detection_fields.key에 하드코딩됩니다. NatRuleId을 매핑할 때 NatRuleId 값이 security_result.detection_fields.key에 하드 코딩됩니다. category_no를 매핑할 때 Category Number 값이 security_result.detection_fields.key에 하드 코딩됩니다.

도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.