McAfee Firewall Enterprise 로그 수집

다음에서 지원:

이 문서에서는 McAfee Firewall Enterprise 로그를 수집하는 방법을 설명합니다. 파서 코드는 먼저 일련의 Grok 패턴을 사용하여 필드를 추출하여 SYSLOG 및 JSON 형식을 모두 처리합니다. 그런 다음 식별된 로그 카테고리에 따라 특정 Grok 패턴과 키-값 추출을 적용하여 데이터를 Google Security Operations UDM 스키마에 매핑합니다.

시작하기 전에

  • Google Security Operations 인스턴스가 있는지 확인합니다.
  • Windows 2016 이상 또는 systemd를 사용하는 Linux 호스트를 사용하고 있는지 확인합니다.
  • 프록시 뒤에서 실행하는 경우 방화벽 포트가 열려 있는지 확인합니다.
  • McAfee ESM에 대한 액세스 권한이 있는지 확인합니다.

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 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: mcafee_esm
          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. /path/to/ingestion-authentication-file.jsonGoogle SecOps 처리 인증 파일 가져오기 섹션에서 인증 파일이 저장된 경로로 업데이트합니다.

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

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

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

    net stop BindPlaneAgent && net start BindPlaneAgent
    

syslog를 전달하도록 McAfee ESM 구성

  1. McAfee ESM 콘솔에 로그인합니다.
  2. 시스템 속성 > 이벤트 전달로 이동합니다.
  3. 추가를 클릭하여 새 syslog 전달 규칙을 만듭니다.
  4. 다음 설정을 구성합니다.
    • 이름: 설명이 포함된 이름 (예: Google SecOps 전달)을 입력합니다.
    • 대상 IP 주소: Syslog 서버 (또는 Bindplane 에이전트)의 IP를 입력합니다.
    • 대상 포트: UDP의 경우 514를 사용합니다 (Syslog 서버/Bindplane 구성에 따라 다른 포트를 지정할 수 있음).
    • 프로토콜: UDP를 선택합니다 (Syslog 서버/Bindplane 구성에 따라 TCP 또는 TLS도 선택 가능).
    • 형식: CEF (공통 이벤트 형식) 또는 ASCII (McAfee 로그에 권장되는 형식)를 선택합니다.
    • 필터: 전달할 이벤트 유형(예: 방화벽 로그, 인증 이벤트, 위협 감지)을 정의합니다.
  5. 저장을 클릭합니다.
  6. 변경사항이 적용되도록 McAfee ESM 서비스를 다시 시작합니다.

UDM 매핑 표

로그 필드 UDM 매핑 논리
행위 security_result.action_details 이 값은 파싱된 JSON 페이로드의 'act' 필드에서 가져옵니다.
고양이 security_result.category_details 이 값은 파싱된 JSON 페이로드의 'cat' 필드에서 가져옵니다.
data.AppID target.application 이 값은 파싱된 JSON 페이로드의 'AppID' 필드에서 가져옵니다.
data.Destination_Hostname target.hostname 이 값은 파싱된 JSON 페이로드의 'Destination_Hostname' 필드에서 가져옵니다.
data.Destination_UserID target.user.windows_sid 이 값은 파싱된 JSON 페이로드의 'Destination_UserID' 필드에서 가져옵니다.
data.DomainID target.administrative_domain 이 값은 파싱된 JSON 페이로드의 'DomainID' 필드에서 가져옵니다.
data.dst_ip target.ip 이 값은 파싱된 JSON 페이로드의 'dst_ip' 필드에서 가져옵니다.
data.dst_mac target.mac 이 값은 파싱된 JSON 페이로드의 'dst_mac' 필드에서 가져옵니다.
data.dst_port target.port 이 값은 파싱된 JSON 페이로드의 'dst_port' 필드에서 가져와 정수로 변환됩니다.
data.HostID target.hostname 이 값은 파싱된 JSON 페이로드의 'HostID' 필드에서 가져옵니다.
data.norm_sig.name 이 필드는 값을 기반으로 이벤트 유형을 결정합니다.
data.PID target.process.pid 값은 파싱된 JSON 페이로드의 'PID' 필드에서 가져옵니다.
data.Process_Name target.process.command_line 값은 파싱된 JSON 페이로드의 'Process_Name' 필드에서 가져옵니다.
data.severity security_result.severity 이 값은 파싱된 JSON 페이로드의 'severity' 필드에서 가져와서 정수로 변환한 후 값에 따라 LOW (1~32), MEDIUM (33~65), HIGH (66~100)의 UDM 심각도 수준에 매핑됩니다.
data.sig.name security_result.description 이 값은 파싱된 JSON 페이로드의 'sig.name' 필드에서 가져옵니다.
data.Source_Logon_ID about.labels.value 이 값은 파싱된 JSON 페이로드의 'Source_Logon_ID' 필드에서 가져옵니다.
data.Source_UserID principal.user.windows_sid 이 값은 파싱된 JSON 페이로드의 'Source_UserID' 필드에서 가져옵니다.
data.src_ip principal.ip 이 값은 파싱된 JSON 페이로드의 'src_ip' 필드에서 가져옵니다.
data.src_mac principal.mac 이 값은 파싱된 JSON 페이로드의 'src_mac' 필드에서 가져옵니다.
data.src_port principal.port 이 값은 파싱된 JSON 페이로드의 'src_port' 필드에서 가져와 정수로 변환됩니다.
data.UserIDDst target.user.userid 이 값은 파싱된 JSON 페이로드의 'UserIDDst' 필드에서 가져옵니다.
data.UserIDSrc principal.user.userid 이 값은 파싱된 JSON 페이로드의 'UserIDSrc' 필드에서 가져옵니다.
deviceExternalId about.asset.asset_id 이 값은 파싱된 JSON 페이로드의 'deviceExternalId' 필드에서 가져와 제품 이름과 결합하여 고유한 애셋 ID를 만듭니다.
deviceTranslatedAddress about.nat_ip 이 값은 파싱된 JSON 페이로드의 'deviceTranslatedAddress' 필드에서 가져옵니다.
dst target.ip 이 값은 파싱된 JSON 페이로드의 'dst' 필드에서 가져옵니다.
dpt target.port 이 값은 파싱된 JSON 페이로드의 'dpt' 필드에서 가져와 정수로 변환됩니다.
eventId additional.fields.value.string_value 이 값은 파싱된 JSON 페이로드의 'eventId' 필드에서 가져옵니다.
externalId metadata.product_log_id 값은 파싱된 JSON 페이로드의 'externalId' 필드에서 가져옵니다.
호스트 이름 principal.hostname 값은 grok 패턴으로 추출된 'hostname' 필드에서 가져옵니다.
log_category metadata.log_type 값은 grok 패턴으로 추출된 'log_category' 필드에서 가져옵니다.
log_type metadata.product_event_type 값은 grok 패턴으로 추출된 'log_type' 필드에서 가져옵니다.
메시지 이 필드는 로그 카테고리에 따라 다양한 필드를 추출하기 위해 파싱됩니다.
nitroURL 이 필드는 UDM의 IDM 객체에 매핑되지 않습니다.
pid principal.process.pid 값은 grok 패턴으로 추출된 'pid' 필드에서 가져옵니다.
process_id about.process.pid 값은 grok 패턴으로 추출된 'process_id' 필드에서 가져옵니다.
proto network.ip_protocol 값은 파싱된 JSON 페이로드의 'proto' 필드에서 가져와 해당 IP 프로토콜에 매핑됩니다.
rhost principal.ip 이 값은 grok 패턴으로 추출된 'rhost' 필드에서 가져와 IP 주소로 파싱됩니다.
shost principal.hostname 이 값은 파싱된 JSON 페이로드의 'shost' 필드에서 가져옵니다.
sntdom principal.administrative_domain 이 값은 파싱된 JSON 페이로드의 'sntdom' 필드에서 가져옵니다.
spt principal.port 값은 파싱된 JSON 페이로드의 'spt' 필드에서 가져와 정수로 변환됩니다.
src principal.ip 이 값은 파싱된 JSON 페이로드의 'src' 필드에서 가져옵니다.
시간 타임스탬프 값은 grok 패턴으로 추출된 'time' 필드에서 가져와 타임스탬프로 파싱됩니다.
유형 metadata.product_event_type 값은 kv 필터에 의해 추출된 'type' 필드에서 가져옵니다.
uid principal.user.userid 값은 kv 필터에 의해 추출된 'uid' 필드에서 가져옵니다.
metadata.event_type metadata.event_type 값은 로그의 이벤트 이름 및 기타 필드를 기반으로 설정됩니다. 이벤트 유형을 결정하는 로직은 다음과 같습니다. - 이벤트 이름에 'TCP'가 포함된 경우 이벤트 유형이 'NETWORK_CONNECTION'으로 설정됩니다. - 이벤트 이름에 'Mail'이 포함된 경우 이벤트 유형이 'EMAIL_TRANSACTION'으로 설정됩니다. - 이벤트 이름에 'HTTP' 또는 'http'가 포함된 경우 이벤트 유형이 'NETWORK_HTTP'로 설정됩니다. - 이벤트 이름에 'User Accessed' 또는 'denied by access-list'가 포함된 경우 이벤트 유형이 'USER_RESOURCE_ACCESS'로 설정됩니다. - 이벤트 이름에 'Data Source Idle'이 포함된 경우 이벤트 유형이 'STATUS_UPDATE'로 설정됩니다. - 이벤트 이름에 'Comm with snowflex'가 포함된 경우 이벤트 유형이 'SERVICE_UNSPECIFIED'로 설정됩니다. - 이벤트 이름에 '계정이 로그온됨'이 포함된 경우 이벤트 유형이 'USER_LOGIN'으로 설정됩니다. - 이벤트 이름에 '서비스 객체의 초기화 상태'가 포함된 경우 이벤트 유형이 'GENERIC_EVENT'로 설정됩니다. - 위의 조건 중 어느 것도 충족되지 않으면 이벤트 유형이 'GENERIC_EVENT'로 설정됩니다.
metadata.vendor_name metadata.vendor_name 값은 'MCAFEE'로 설정됩니다.
network.direction network.direction 파싱된 JSON 페이로드의 'deviceDirection' 필드가 0이면 값이 'INBOUND'로 설정됩니다. 그 외의 경우에는 'OUTBOUND'로 설정됩니다.
security_result.severity security_result.severity 값은 파싱된 JSON 페이로드의 'cef_event_severity' 필드가 1이면 'LOW'로, 2이면 'MEDIUM'로, 3이면 'HIGH'로, 9이면 'CRITICAL'로 설정됩니다.

변경사항

2024-03-21

  • 파서를 새로 만들었습니다.

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