McAfee Web Gateway 로그 수집

다음에서 지원:

이 문서에서는 Bindplane 에이전트를 사용하여 McAfee Web Gateway 로그를 Google Security Operations에 수집하는 방법을 설명합니다. 파서는 SYSLOG + KV (CEF), JSON, 원시 형식의 로그에서 필드를 추출합니다. grok 및 csv 필터를 사용하여 다양한 로그 구조를 파싱하고 필드 이름을 정규화합니다. 그런 다음 추출된 필드를 통합 데이터 모델 (UDM) 스키마에 매핑하여 다양한 특이 사례와 데이터 불일치를 처리하여 통합 출력을 생성합니다.

시작하기 전에

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

  • Google SecOps 인스턴스
  • Windows 2016 이상 또는 systemd가 있는 Linux 호스트
  • 프록시 뒤에서 실행하는 경우 방화벽 포트가 열려 있음
  • McAfee Web Gateway에 대한 액세스 권한

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

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

Google SecOps 고객 ID 가져오기

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

Bindplane 에이전트 설치

Windows 설치

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

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

Linux 설치

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

    sudo sh -c `$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)` install_unix.sh
    

추가 설치 리소스

추가 설치 옵션은 설치 가이드를 참고하세요.

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

  1. 구성 파일에 액세스합니다.
    • config.yaml 파일을 찾습니다. 일반적으로 Linux에서는 /etc/bindplane-agent/ 디렉터리에 있고 Windows에서는 설치 디렉터리에 있습니다.
    • 텍스트 편집기 (예: nano, vi, 메모장)를 사용하여 파일을 엽니다.
  2. 다음과 같이 config.yaml 파일을 수정합니다.

    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: MCAFEE_WEBPROXY
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. 인프라에 필요한 대로 포트와 IP 주소를 바꿉니다.

  4. <customer_id>를 실제 고객 ID로 바꿉니다.

  5. Google SecOps 수집 인증 파일 가져오기 섹션에서 인증 파일이 저장된 경로로 /path/to/ingestion-authentication-file.json를 업데이트합니다.

Bindplane 에이전트를 다시 시작하여 변경사항 적용

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

    sudo systemctl restart bindplane-agent
    
  • Windows에서 Bindplane 에이전트를 다시 시작하려면 서비스 콘솔을 사용하거나 다음 명령어를 입력하면 됩니다.

    net stop BindPlaneAgent && net start BindPlaneAgent
    

McAfee Web Gateway에서 Syslog 구성

  1. McAfee Web Gateway 웹 UI에 로그인합니다.
  2. 정책 > 규칙 집합으로 이동합니다.
  3. 로그 핸들러를 클릭한 다음 기본값 규칙 세트를 펼치고 중첩된 CEF Syslog 규칙 세트를 선택합니다.
  4. Send to Syslog(Syslog로 전송) 규칙을 사용 설정합니다.
  5. 변경사항 저장을 클릭합니다.
  6. 구성 > 어플라이언스 > 로그 파일 관리자 > 설정으로 이동합니다.
  7. 감사 로그를 syslog에 쓰기를 선택합니다.
  8. 구성 > 파일 편집기로 이동합니다.
  9. 파일 트리에서 rsyslog.conf를 선택합니다.
  10. 다음과 같이 파일을 수정합니다.
    • *.info;mail.none;authpriv.none;cron.none /var/log/messages과 유사한 줄을 찾습니다.
    • 이 줄에 데몬을 추가하고 경로 정보 앞에 대시(-)를 삽입합니다. *.info;daemon.!=info;mail.none;authpriv.none;cron.none -/var/log/messages
  11. 파일 하단에 새 줄을 추가하여 정보 메시지를 Bindplane 에이전트 IP 주소로 전송합니다.

    • UDP를 통한 syslog의 경우:

      daemon.info;auth.=info @<bindplane-server-ip>:<bindplane-port>
      
    • TCP를 통한 syslog의 경우:

      daemon.info;auth.=info @@<bindplane-server-ip>:<bindplane-port>
      

UDM 매핑 테이블

로그 필드 UDM 매핑 논리
application_name principal.application KV 형식의 application_name 필드 또는 JSON 형식의 user_agent_product에서 직접 매핑됩니다.
auth_user principal.user.userid KV 형식의 auth_user 필드에서 직접 매핑됩니다.
block_reason security_result.summary JSON 및 CSV JSON 형식의 block_reason 필드, 원시 형식의 _block_reason, KV 형식의 block_reason에서 직접 매핑됩니다.
block_res security_result.action KV 형식의 block_res 필드에서 매핑됩니다. block_resDENIED이거나 Block을 포함하는 경우 작업은 BLOCK입니다. block_res0이거나 Allow을 포함하는 경우 작업은 ALLOW입니다. 50, 51, 52, 53, 58, 59, 81, 80, 82, 83, 84, 110, 111와 같은 특수 값은 security_result.category를 결정하는 데 사용됩니다.
bytes_from_client network.sent_bytes KV 형식의 bytes_from_client 필드, 원시 형식의 sr_bytes, JSON 및 CSV JSON 형식의 client_to_server_bytes에서 직접 매핑됩니다.
bytes_to_client network.received_bytes KV 형식의 bytes_to_client 필드, 원시 형식의 rs_bytes, JSON 및 CSV JSON 형식의 server_to_client_bytes에서 직접 매핑됩니다.
categories security_result.category_details KV 형식의 categories 필드, 원시 형식의 _category, JSON 및 CSV JSON 형식의 category에서 직접 매핑됩니다.
client_ip principal.ip, intermediary.ip JSON 형식의 client_ip 필드에서 직접 매핑됩니다.
clientIP principal.ip CEF 형식의 clientIP 필드에서 직접 매핑됩니다.
csmethod network.http.method 원시 형식의 csmethod 필드에서 직접 매핑됩니다.
day metadata.event_timestamp 타임스탬프의 일부로, KV 형식의 time_stamp 필드에서 추출됩니다.
destination_ip target.ip JSON 형식의 destination_ip 필드에서 직접 매핑됩니다.
destination_port target.port JSON 형식의 destination_port 필드에서 직접 매핑됩니다.
domain target.hostname, target.url 원시 형식의 domain 필드에서 직접 매핑됩니다. uri이 있는 경우 target.url를 구성하는 데 사용됩니다.
header intermediary.hostname 로그 메시지의 시작 부분에서 추출됩니다. intermediary.hostname를 추출하는 데 사용됩니다.
host target.hostname KV 형식의 host 필드에서 직접 매핑됩니다.
hostname principal.hostname JSON 형식의 hostname 필드에서 직접 매핑됩니다.
hour metadata.event_timestamp 타임스탬프의 일부로, KV 형식의 time_stamp 필드에서 추출됩니다.
http_action network.http.method JSON 형식의 http_action 필드에서 직접 매핑됩니다.
http_status_code network.http.response_code JSON 및 CSV JSON 형식의 http_status_code 필드 또는 원시 및 KV 형식의 status_code에서 직접 매핑됩니다.
kv_entry.application_name principal.application KV 항목 내의 application_name 필드에서 직접 매핑됩니다.
kv_entry.auth_user principal.user.userid KV 항목 내의 auth_user 필드에서 직접 매핑됩니다.
kv_entry.block_reason security_result.summary KV 항목 내의 block_reason 필드에서 직접 매핑됩니다.
kv_entry.block_res security_result.action, security_result.category KV 항목 내의 block_res 필드에서 매핑됩니다. 작업 및 카테고리를 결정하는 로직은 최상위 block_res 필드와 동일합니다.
kv_entry.bytes_from_client network.sent_bytes KV 항목 내의 bytes_from_client 필드에서 직접 매핑됩니다.
kv_entry.bytes_to_client network.received_bytes KV 항목 내의 bytes_to_client 필드에서 직접 매핑됩니다.
kv_entry.categories security_result.category_details KV 항목 내의 categories 필드에서 직접 매핑됩니다.
kv_entry.host target.hostname KV 항목 내의 host 필드에서 직접 매핑됩니다.
kv_entry.method network.http.method KV 항목 내의 method 필드에서 직접 매핑됩니다.
kv_entry.rep_level security_result.severity_details KV 항목 내의 rep_level 필드에서 직접 매핑됩니다.
kv_entry.server_ip target.ip KV 항목 내의 server_ip 필드에서 직접 매핑됩니다.
kv_entry.status_code network.http.response_code KV 항목 내의 status_code 필드에서 직접 매핑됩니다.
kv_entry.time_stamp metadata.event_timestamp KV 항목 내의 time_stamp 필드에서 직접 매핑됩니다.
kv_entry.url target.url KV 항목 내의 url 필드에서 직접 매핑됩니다.
kv_entry.url_port target.port KV 항목 내의 url_port 필드에서 직접 매핑됩니다.
kv_entry.user_agent network.http.parsed_user_agent KV 항목 내의 user_agent 필드에서 직접 매핑된 후 구조화된 객체로 파싱됩니다.
last_rule security_result.rule_name JSON 형식의 last_rule 필드에서 직접 매핑됩니다.
loc principal.location.country_or_region tgt_ip_or_location에서 추출한 loc 필드에서 직접 매핑됩니다.
location principal.location.country_or_region JSON 형식의 location 필드에서 직접 매핑됩니다.
log.file.path principal.process.file.full_path JSON 형식의 log.file.path 필드에서 직접 매핑됩니다.
message Various 원시 로그 메시지입니다. 형식 (원시, JSON, KV, CEF)에 따라 다르게 파싱됩니다.
method network.http.method KV 및 원시 형식의 method 필드 또는 JSON 형식의 http_action에서 직접 매핑되거나 CEF 데이터에서 파생됩니다. 값이 GET, POST, HEAD, OPTIONS, PUT, CONNECT 중 하나인 경우 metadata.event_typeNETWORK_HTTP로 설정됩니다. 값이 - 또는 CERTVERIFY이면 metadata.event_typeNETWORK_CONNECTION로 설정됩니다.
mins metadata.event_timestamp 타임스탬프의 일부로, KV 형식의 time_stamp 필드에서 추출됩니다.
month metadata.event_timestamp 타임스탬프의 일부로, KV 형식의 time_stamp 필드 또는 CEF 형식의 rt 필드에서 추출됩니다.
monthday metadata.event_timestamp 로그 메시지의 시작 부분에서 추출한 타임스탬프의 일부입니다.
protocol network.application_protocol 원시 형식의 protocol 필드 또는 JSON 형식의 uri_scheme에서 직접 매핑되거나 KV 형식의 url 필드에서 파생됩니다.
query target.url 원시 형식의 query 필드에서 직접 매핑됩니다. url 필드에 추가됩니다.
rep_level security_result.severity_details KV 형식의 rep_level 필드, JSON 형식의 reputation 필드 또는 원시 형식의 _risk 필드에서 직접 매핑됩니다. security_result.severity를 결정하는 데 사용됩니다.
request target.url CEF 형식의 request 필드에서 직접 매핑됩니다.
requestClientApplication network.http.user_agent CEF 형식의 requestClientApplication 필드에서 직접 매핑됩니다.
requestContext network.http.referral_url CEF 형식의 requestContext 필드에서 직접 매핑됩니다.
requestMethod network.http.method CEF 형식의 requestMethod 필드에서 직접 매핑됩니다.
requested_host target.url JSON 형식의 requested_host 필드에서 직접 매핑됩니다. requested_path도 있는 경우 target.url를 구성하는 데 사용됩니다.
requested_path target.url JSON 형식의 requested_path 필드에서 직접 매핑됩니다. requested_host에 추가되어 target.url을 형성합니다.
request_timestamp metadata.event_timestamp JSON 형식의 request_timestamp 필드에서 직접 매핑됩니다.
result security_result.action, security_result.category JSON 및 CSV JSON 형식의 result 필드 또는 KV 형식의 block_res에서 직접 매핑됩니다. security_result.actionsecurity_result.category을 결정하는 데 사용됩니다.
rt metadata.event_timestamp CEF 형식의 rt 필드에서 직접 매핑됩니다.
secs metadata.event_timestamp 타임스탬프의 일부로, KV 형식의 time_stamp 필드에서 추출됩니다.
server_ip target.ip KV 형식의 server_ip 필드에서 직접 매핑됩니다.
source_ip principal.ip JSON, CSV JSON, 원시, KV 형식의 source_ip 필드, CEF 형식의 src 필드, 원시 형식의 src_ip 필드에서 직접 매핑됩니다.
src principal.ip CEF 형식의 src 필드에서 직접 매핑됩니다.
status_code network.http.response_code 원시 형식의 status_code 필드에서 직접 매핑됩니다.
summary security_result.summary CSV 형식의 summary 필드 또는 JSON 형식의 block_reason에서 직접 매핑됩니다.
system principal.platform JSON 형식의 system 필드에서 직접 매핑됩니다. 대문자로 변환되었습니다.
target_ip target.ip 원시 형식의 target_ip 필드 또는 CEF 형식의 dst에서 직접 매핑됩니다.
tgtport target.port 원시 형식의 tgtport 필드에서 직접 매핑됩니다.
time metadata.event_timestamp 로그 메시지의 시작 부분, CEF 형식의 rt 필드 또는 KV 형식의 time_stamp 필드에서 추출된 타임스탬프의 일부입니다.
timestamp metadata.event_timestamp JSON 형식의 @timestamp 필드에서 직접 매핑됩니다.
timezone metadata.event_timestamp 타임스탬프의 일부로, KV 형식의 time_stamp 필드에서 추출됩니다.
uri target.url 원시 형식의 uri 필드에서 직접 매핑됩니다. target.url를 구성하는 데 사용됩니다.
uri_scheme network.application_protocol JSON 형식의 uri_scheme 필드에서 직접 매핑됩니다. 대문자로 변환되었습니다.
url target.url 원시, KV, JSON 형식의 url 필드에서 직접 매핑되거나 원시 형식의 domain, uri, query, JSON 형식의 requested_host, requested_path, CEF 형식의 request에서 구성됩니다.
url_port target.port KV 형식의 url_port 필드에서 직접 매핑됩니다.
user principal.user.userid JSON 형식의 user 필드 또는 JSON 형식의 username, KV 형식의 auth_user, 원시 형식의 suser에서 직접 매핑됩니다.
user_agent network.http.parsed_user_agent 원시 및 KV 형식의 user_agent 필드 또는 JSON 형식의 user_agent_comment, CEF 형식의 requestClientApplication에서 직접 매핑되거나 JSON 형식의 agent.typeagent.version에서 구성됩니다. 구조화된 객체로 파싱됩니다.
user_agent_comment network.http.parsed_user_agent JSON 형식의 user_agent_comment 필드에서 직접 매핑됩니다.
user_agent_product principal.application JSON 형식의 user_agent_product 필드에서 직접 매핑됩니다.
username principal.user.userid JSON 형식의 username 필드에서 직접 매핑됩니다.
year metadata.event_timestamp 타임스탬프의 일부로, KV 형식의 time_stamp 필드 또는 CEF 형식의 rt 필드에서 추출됩니다.
해당 사항 없음 metadata.event_type 파서가 method 필드를 기반으로 결정합니다. NETWORK_HTTP, NETWORK_CONNECTION, GENERIC_EVENT 또는 STATUS_UPDATE일 수 있습니다.
해당 사항 없음 metadata.log_type MCAFEE_WEBPROXY로 하드코딩되었습니다.
해당 사항 없음 metadata.product_name MCAFEE_WEBPROXY로 하드코딩되었습니다.
해당 사항 없음 metadata.vendor_name MCAFEE로 하드코딩되었습니다.
해당 사항 없음 network.direction OUTBOUND로 하드코딩되었습니다.
해당 사항 없음 security_result.action block_reason 또는 result 필드를 기반으로 파서에 의해 결정됩니다. ALLOW 또는 BLOCK일 수 있습니다.
해당 사항 없음 security_result.category 파서가 result 필드를 기반으로 결정합니다. NETWORK_CATEGORIZED_CONTENT, NETWORK_DENIAL_OF_SERVICE, MAIL_SPAM, AUTH_VIOLATION, SOFTWARE_MALICIOUS, NETWORK_SUSPICIOUS, NETWORK_MALICIOUS일 수 있습니다.
해당 사항 없음 security_result.severity 파서가 risk 필드를 기반으로 결정합니다. LOW, MEDIUM, HIGH일 수 있습니다.

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