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 처리 인증 파일 가져오기
- Google SecOps 콘솔에 로그인합니다.
- SIEM 설정 > 수집 에이전트로 이동합니다.
- 처리 인증 파일을 다운로드합니다. Bindplane 에이전트가 설치될 시스템에 파일을 안전하게 저장합니다.
Google SecOps 고객 ID 가져오기
- Google SecOps 콘솔에 로그인합니다.
- SIEM 설정 > 프로필로 이동합니다.
- 조직 세부정보 섹션에서 고객 ID를 복사하여 저장합니다.
Bindplane 에이전트 설치
Windows 설치
- 관리자 권한으로 명령 프롬프트 또는 PowerShell을 엽니다.
다음 명령어를 실행합니다.
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Linux 설치
- 루트 또는 sudo 권한으로 터미널을 엽니다.
다음 명령어를 실행합니다.
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
추가 설치 리소스
- 추가 설치 옵션은 이 설치 가이드를 참고하세요.
Syslog를 수집하고 Google SecOps로 전송하도록 Bindplane 에이전트 구성
구성 파일에 액세스합니다.
config.yaml
파일을 찾습니다. 일반적으로 Linux의/etc/bindplane-agent/
디렉터리 또는 Windows의 설치 디렉터리에 있습니다.- 텍스트 편집기 (예:
nano
,vi
, 메모장)를 사용하여 파일을 엽니다.
다음과 같이
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
인프라에서 필요에 따라 포트와 IP 주소를 바꿉니다.
<customer_id>
를 실제 고객 ID로 바꿉니다./path/to/ingestion-authentication-file.json
를 Google SecOps 처리 인증 파일 가져오기 섹션에서 인증 파일이 저장된 경로로 업데이트합니다.
Bindplane 에이전트를 다시 시작하여 변경사항 적용
Linux에서 Bindplane 에이전트를 다시 시작하려면 다음 명령어를 실행합니다.
sudo systemctl restart bindplane-agent
Windows에서 Bindplane 에이전트를 다시 시작하려면 서비스 콘솔을 사용하거나 다음 명령어를 입력하면 됩니다.
net stop BindPlaneAgent && net start BindPlaneAgent
syslog를 전달하도록 McAfee ESM 구성
- McAfee ESM 콘솔에 로그인합니다.
- 시스템 속성 > 이벤트 전달로 이동합니다.
- 추가를 클릭하여 새 syslog 전달 규칙을 만듭니다.
- 다음 설정을 구성합니다.
- 이름: 설명이 포함된 이름 (예: Google SecOps 전달)을 입력합니다.
- 대상 IP 주소: Syslog 서버 (또는 Bindplane 에이전트)의 IP를 입력합니다.
- 대상 포트: UDP의 경우 514를 사용합니다 (Syslog 서버/Bindplane 구성에 따라 다른 포트를 지정할 수 있음).
- 프로토콜: UDP를 선택합니다 (Syslog 서버/Bindplane 구성에 따라 TCP 또는 TLS도 선택 가능).
- 형식: CEF (공통 이벤트 형식) 또는 ASCII (McAfee 로그에 권장되는 형식)를 선택합니다.
- 필터: 전달할 이벤트 유형(예: 방화벽 로그, 인증 이벤트, 위협 감지)을 정의합니다.
- 저장을 클릭합니다.
- 변경사항이 적용되도록 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 전문가의 답변을 받으세요.