Nutanix Prism 로그 수집

다음에서 지원:

개요

이 파서는 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 처리 인증 파일 가져오기

  1. Google SecOps 콘솔에 로그인합니다.
  2. SIEM 설정 > 수집 에이전트로 이동합니다.
  3. 처리 인증 파일을 다운로드합니다.

Google SecOps 고객 ID 가져오기

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

BindPlane 에이전트 설치

  1. Windows 설치의 경우 msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet 스크립트를 실행합니다.
  2. Linux 설치의 경우 sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh 스크립트를 실행합니다.
  3. 추가 설치 옵션은 이 설치 가이드에서 확인할 수 있습니다.

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

  1. BindPlane이 설치된 머신에 액세스합니다.
  2. 다음과 같이 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
    
  3. 다음 명령어를 사용하여 BindPlane 에이전트를 다시 시작하여 변경사항을 적용합니다. sudo systemctl bindplane restart

Nutanix Prism에서 Syslog 내보내기

  1. 권한이 부여된 계정을 사용하여 Prism Central에 로그인합니다.
  2. 메뉴에서 Prism Central Settings를 선택합니다.
  3. Syslog Server로 이동합니다.
  4. + 시스템로그 서버 구성을 클릭합니다.
  5. Syslog Servers(Syslog 서버) 대화상자에서 입력 매개변수의 값을 지정합니다.
    • 서버 이름: 서버 이름을 입력합니다 (예: Google SecOps BindPlane Server).
    • IP 주소: BindPlane 에이전트의 IP를 입력합니다.
    • 포트: BindPlane 에이전트가 리슨하는 포트를 입력합니다.
    • 전송 프로토콜: TCP를 선택합니다.
    • 구성을 클릭합니다.
  6. 데이터 소스 옵션에서 + 수정을 클릭합니다.
  7. 데이터 소스 및 각 심각도 수준 대화상자에서 입력 매개변수의 값을 지정합니다.
    • 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_typeUSER_LOGIN이면 'AUTHTYPE_UNSPECIFIED'로 설정합니다.
해당 사항 없음 security_result.severity log_levelsyslog_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 검사를 추가했습니다.