Nutanix Prism 로그 수집
다음에서 지원:
Google SecOps
SIEM
개요
이 파서는 Nutanix Prism 로그를 처리하여 JSON 및 syslog 형식을 모두 처리합니다. 다양한 로그 구조에서 필드를 추출하고 UDM으로 정규화하며 사용자 정보, 네트워크 세부정보, 보안 심각도와 같은 추가 컨텍스트로 데이터를 보강합니다. 또한 파서는 HTTP 메서드 및 로그 수준에 따라 특정 작업을 실행하여 이벤트를 USER_LOGIN, STATUS_UPDATE, GENERIC_EVENT와 같은 UDM 이벤트 유형으로 분류합니다.
시작하기 전에
- Google SecOps 인스턴스가 있는지 확인합니다.
- Nutanix Prism Central에 대한 액세스 권한이 있는지 확인합니다.
- Windows 2012 SP2 이상 또는 systemd가 있는 Linux 호스트가 있는지 확인합니다.
- 프록시 뒤에서 실행하는 경우 방화벽 포트가 열려 있는지 확인합니다.
Google SecOps 처리 인증 파일 가져오기
- Google SecOps 콘솔에 로그인합니다.
- SIEM 설정 > 수집 에이전트로 이동합니다.
- 처리 인증 파일을 다운로드합니다.
Google SecOps 고객 ID 가져오기
- Google SecOps 콘솔에 로그인합니다.
- SIEM 설정 > 프로필로 이동합니다.
- 조직 세부정보 섹션에서 고객 ID를 복사하여 저장합니다.
BindPlane 에이전트 설치
- Windows 설치의 경우
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
스크립트를 실행합니다. - Linux 설치의 경우
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
스크립트를 실행합니다. - 추가 설치 옵션은 이 설치 가이드에서 확인할 수 있습니다.
Syslog를 수집하고 Google SecOps로 전송하도록 BindPlane 에이전트 구성
- BindPlane이 설치된 머신에 액세스합니다.
다음과 같이
config.yaml
파일을 수정합니다.receivers: tcplog: # Replace the below port <54525> and IP (0.0.0.0) with your specific values listen_address: "0.0.0.0:54525" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the creds location below according the placement of the credentials file you downloaded creds: '{ json file for creds }' # Replace <customer_id> below with your actual ID that you copied customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # You can apply ingestion labels below as preferred ingestion_labels: log_type: SYSLOG namespace: Namespace raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - tcplog exporters: - chronicle/chronicle_w_labels
다음 명령어를 사용하여 BindPlane 에이전트를 다시 시작하여 변경사항을 적용합니다.
sudo systemctl bindplane restart
Nutanix Prism에서 Syslog 내보내기
- 권한이 부여된 계정을 사용하여 Prism Central에 로그인합니다.
- 메뉴에서 Prism Central Settings를 선택합니다.
- Syslog Server로 이동합니다.
- + 시스템로그 서버 구성을 클릭합니다.
- Syslog Servers(Syslog 서버) 대화상자에서 입력 매개변수의 값을 지정합니다.
- 서버 이름: 서버 이름을 입력합니다 (예: Google SecOps BindPlane Server).
- IP 주소: BindPlane 에이전트의 IP를 입력합니다.
- 포트: BindPlane 에이전트가 리슨하는 포트를 입력합니다.
- 전송 프로토콜: TCP를 선택합니다.
- 구성을 클릭합니다.
- 데이터 소스 옵션에서 + 수정을 클릭합니다.
- 데이터 소스 및 각 심각도 수준 대화상자에서 입력 매개변수의 값을 지정합니다.
- API 감사, 감사, 흐름을 선택합니다.
- 각 항목의 심각도 수준을 6 - 정보로 설정합니다.
- 저장을 클릭합니다.
UDM 매핑 표
로그 필드 | UDM 매핑 | 논리 |
---|---|---|
@timestamp |
metadata.event_timestamp |
이벤트 타임스탬프는 @timestamp 필드에서 파싱됩니다. yyyy-MM-dd HH:mm:ss.SSS , yyyy-MM-ddTHH:mm:ssZ , ISO8601 형식이 지원됩니다. |
agent.id |
observer.asset_id |
agent.type 와 결합하여 'agent.type:agent.id' 형식의 관찰자 애셋 ID를 형성합니다. |
agent.type |
observer.application |
관찰에 사용되는 애플리케이션입니다. |
agent.version |
observer.platform_version |
관찰자 애플리케이션의 버전입니다. |
alertUid |
security_result.detection_fields.value |
알림 UID의 값은 detection_fields 내의 value 필드에 매핑됩니다. key 가 'Alert Uid'로 설정됩니다. |
api_version |
metadata.product_version |
API 버전입니다. |
clientIp |
principal.ip , principal.asset.ip |
클라이언트 IP 주소입니다. |
client_type |
principal.labels.value |
클라이언트 유형의 값입니다. key 가 'client_type'으로 설정됩니다. |
defaultMsg |
metadata.description |
기본 메시지입니다. |
entity_uuid |
metadata.product_log_id |
항목 UUID입니다. |
http_method |
network.http.method |
HTTP 메서드입니다. 대문자로 변환됩니다. |
host.architecture |
principal.asset.hardware.cpu_platform |
호스트의 아키텍처 |
host.id |
principal.asset_id |
'NUTANIX:' 접두사가 추가되어 기본 애셋 ID가 생성됩니다. |
host.ip |
principal.ip , principal.asset.ip |
호스트 IP 주소입니다. |
host.mac |
principal.mac |
호스트 MAC 주소입니다. |
host.os.kernel |
principal.platform_patch_level |
호스트 운영체제의 커널 버전입니다. |
host.os.platform |
principal.platform |
호스트 운영체제의 플랫폼입니다. LINUX , WINDOWS , MAC 또는 UNKNOWN_PLATFORM 에 매핑됩니다. |
host.os.version |
principal.platform_version |
호스트 운영체제의 버전입니다. |
input.type |
network.ip_protocol |
네트워크 프로토콜입니다. 'UDP' 또는 'TCP'에 매핑됩니다. |
log.source.address |
principal.ip , principal.asset.ip , principal.port |
소스 IP 및 포트를 추출하도록 파싱됩니다. |
logstash.collect.host |
observer.ip |
Logstash 수집기의 IP 주소입니다. |
logstash.collect.timestamp |
metadata.collected_timestamp |
로그가 수집된 타임스탬프입니다. |
logstash.ingest.host |
intermediary.hostname |
Logstash 처리 서버의 호스트 이름입니다. |
logstash.ingest.timestamp |
metadata.ingested_timestamp |
로그가 처리된 타임스탬프입니다. |
logstash.irm_environment |
principal.labels.value |
irm 환경의 값입니다. key 가 'irm_environment'로 설정됩니다. |
logstash.irm_region |
principal.labels.value |
IRM 지역의 값입니다. key 가 'irm_region'으로 설정됩니다. |
logstash.irm_site |
principal.labels.value |
IRM 사이트의 값입니다. key 이(가) 'irm_site'로 설정됩니다. |
logstash.process.host |
intermediary.hostname |
Logstash 처리 서버의 호스트 이름입니다. |
operationType |
metadata.product_event_type |
작업 유형입니다. |
originatingClusterUuid |
additional.fields.value.string_value |
출처 클러스터 UUID입니다. key 가 'Originating Cluster Uuid'(시작 클러스터 UUID)로 설정됩니다. |
params.mac_address |
target.mac |
매개변수의 MAC 주소입니다. |
params.requested_ip_address |
target.ip , target.asset.ip |
매개변수에서 요청된 IP 주소입니다. |
params.vm_name |
target.resource.name |
매개변수의 VM 이름입니다. |
program |
metadata.product_event_type |
프로그램 이름입니다. |
rest_endpoint |
target.url |
REST 엔드포인트 |
sessionId |
additional.fields.value.string_value |
세션 ID입니다. key 는 '세션 ID'로 설정됩니다. |
syslog_host |
principal.hostname , principal.asset.hostname |
Syslog 호스트 |
timestamp |
metadata.event_timestamp |
이벤트 타임스탬프입니다. |
username |
principal.user.user_display_name 또는 principal.user.userid |
사용자 이름입니다. http_method 이 'POST'인 경우 사용자 ID로 사용됩니다. |
uuid |
metadata.product_log_id |
UUID |
해당 사항 없음 | metadata.vendor_name |
'Nutanix_Prism'으로 하드코딩되었습니다. |
해당 사항 없음 | metadata.product_name |
'Nutanix_Prism'으로 하드코딩되었습니다. |
해당 사항 없음 | metadata.event_type |
has_principal , has_target , audit_log , network_set , http_method 의 값을 기반으로 파서 로직에 의해 결정됩니다. GENERIC_EVENT , USER_LOGIN , STATUS_UPDATE , USER_RESOURCE_ACCESS , RESOURCE_CREATION , USER_RESOURCE_UPDATE_CONTENT , USER_RESOURCE_DELETION 일 수 있습니다. |
해당 사항 없음 | metadata.log_type |
'NUTANIX_PRISM'으로 하드코딩됩니다. |
해당 사항 없음 | extensions.auth.type |
metadata.event_type 가 USER_LOGIN 이면 'AUTHTYPE_UNSPECIFIED'로 설정합니다. |
해당 사항 없음 | security_result.severity |
log_level 및 syslog_pri 를 기반으로 파서 로직에 의해 결정됩니다. CRITICAL , ERROR , HIGH , MEDIUM 또는 INFORMATIONAL 일 수 있습니다. |
변경사항
2024-02-21
- 'inner_message'가 비어 있지 않고 'not_json'이 'true'인 경우 삭제된 JSON 로그를 지원하도록 'audit_log'를 'true'로 설정합니다.
- 'principal.ip' 및 'principal.asset.ip' 매핑이 정렬되었습니다.
- 'target.ip' 및 'target.asset.ip' 매핑이 정렬되었습니다.
- 'principal.hostname' 및 'principal.asset.hostname' 매핑이 정렬되었습니다.
- 'network_set'이 'false'이고, 'has_principal'이 'true'이고, 'has_target'이 'false'이고, 'audit_log'가 'false'인 경우 'metadata.event_type'을 'STATUS_UPDATE'로 설정합니다.
- 'network_set'이 'true'이고, 'has_principal'이 'true'이고, 'has_target'이 'false'이고, 'audit_log'가 'false'인 경우 'metadata.event_type'을 'GENERIC_EVENT'로 설정합니다.
2024-01-12
- 새 형식의 syslog 로그에 대한 지원이 추가되었습니다.
- 'logstash.ingest.host'를 'intermediary.hostname'에 매핑하기 전에 null 조건부 검사를 추가했습니다.
- 'logstash.process.host'를 'intermediary.hostname'에 매핑하기 전에 null 조건부 검사를 추가했습니다.
- 'logstash.collect.host'를 'observer.ip'에 매핑하기 전에 null 조건부 확인을 추가했습니다.
2023-12-23
- 새로운 유형의 AUDIT 로그에 대한 지원이 추가되었습니다.
- SYSLOG+JSON 로그를 파싱하는 새로운 Grok 패턴이 추가되었습니다.
- 'affectedEntityList' 및 'alertUid'가 'security_result.detection_fields'에 매핑되었습니다.
- 'clientIp' 및 'params.requested_ip_address'가 'principal.ip'에 매핑되었습니다.
- 'defaultMsg'가 'metadata.description'에 매핑되었습니다.
- 'operationType'이 'metadata.product_event_type'에 매핑되었습니다.
- 'originatingClusterUuid' 및 'sessionId'가 'additional.fields'에 매핑되었습니다.
- 'params.mac_address'가 'principal.mac'에 매핑되었습니다.
- 'uuid'가 'metadata.product_log_id'에 매핑되었습니다.
- 'userName'이 'principal.user.user_display_name'에 매핑되었습니다.
- 'params.vm_name'이 'target.resource.name'에 매핑되었습니다.
2023-01-23
- 'logstash.ingest.host'가 'observer.hostname' 대신 'intermediary[0].hostname'에 매핑되었습니다.
- 'logstash.collect.host'가 'observer.ip'에 매핑되었습니다.
- 'logstash.ingest.host'에 null 검사를 추가했습니다.