CyberArk PAM 로그 수집

다음에서 지원:

이 파서 코드는 먼저 정규 표현식을 사용하여 CyberArk Privileged Access Manager (PAM) syslog 메시지에서 필드를 추출합니다. 그런 다음 추출된 필드를 통합 데이터 모델 (UDM)에 매핑하여 추가 컨텍스트로 데이터를 보강하고 특정 기준에 따라 이벤트 유형을 표준화합니다.

시작하기 전에

  • Google Security Operations 인스턴스가 있는지 확인합니다.
  • Windows 2016 이상 또는 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: Cyberark_PAM
            raw_log_field: body
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. Bindplane 에이전트를 다시 시작하여 변경사항을 적용합니다.

    sudo systemctl restart bindplane
    

CyberArk Vault의 Syslog 내보내기 구성

  1. Vault 서버에 로그인합니다.
  2. C:\Program Files (x86)\CyberArk\Vault\Server\dbparm.ini에 있는 구성 파일 dbparm.ini를 엽니다.
  3. 다음 매개변수를 추가하거나 수정합니다.

    SyslogServer=<syslog_server_ip>
    SyslogPort=<syslog_server_port>
    SyslogProtocol=<TCP or UDP>
    SyslogFormat=Syslog
    
  4. dbparm.ini 파일을 저장합니다.

  5. Vault 서버를 다시 시작합니다.

    net stop CyberArkVault
    net start CyberArkVault
    

PVWA에서 Syslog 내보내기 구성

  1. PVWA 서버에 로그인합니다.
  2. C:\inetpub\wwwroot\PasswordVault\에 있는 Web.config 파일을 엽니다.
  3. 다음 키를 추가하거나 수정합니다.

    <add key="SyslogServer" value="<syslog_server_ip>" />
    <add key="SyslogPort" value="<syslog_server_port>" />
    <add key="SyslogProtocol" value="<TCP or UDP>" />
    <add key="SyslogFormat" value="Syslog" />
    
  4. Web.config 파일에 변경사항을 저장합니다.

  5. IIS 서비스를 다시 시작합니다.

    iisreset
    

PTA에서 Syslog 내보내기 구성

  1. SSH를 사용하여 PTA 서버에 액세스합니다.
  2. /opt/cta/config/application.properties에 있는 application.properties 파일을 엽니다.
  3. 다음 줄을 추가하거나 수정합니다.

    syslog.server.ip=<syslog_server_ip>
    syslog.server.port=<syslog_server_port>
    syslog.protocol=<TCP or UDP>
    
  4. application.properties 파일을 저장합니다.

  5. PTA 서비스를 다시 시작하여 변경사항을 적용합니다.

    sudo service pta restart
    

UDM 매핑 테이블

로그 필드 UDM 매핑 논리
act metadata.description act 필드에서 직접 매핑됩니다.
cn1 additional.fields.value.string_value cn1Label이 비어 있지 않은 경우 cn1 필드에서 직접 매핑됩니다.
cn1Label additional.fields.key cn1이 비어 있지 않은 경우 cn1Label 필드에서 직접 매핑됩니다.
cn2 additional.fields.value.string_value cn2Label이 비어 있지 않은 경우 cn2 필드에서 직접 매핑됩니다.
cn2Label additional.fields.key cn2이 비어 있지 않은 경우 cn2Label 필드에서 직접 매핑됩니다.
cs1 additional.fields.value.string_value cs1Label이 비어 있지 않은 경우 cs1 필드에서 직접 매핑됩니다.
cs1Label additional.fields.key cs1이 비어 있지 않은 경우 cs1Label 필드에서 직접 매핑됩니다.
cs2 additional.fields.value.string_value cs2Label이 비어 있지 않은 경우 cs2 필드에서 직접 매핑됩니다.
cs2Label additional.fields.key cs2이 비어 있지 않은 경우 cs2Label 필드에서 직접 매핑됩니다.
cs3 additional.fields.value.string_value cs3Label이 비어 있지 않은 경우 cs3 필드에서 직접 매핑됩니다.
cs3Label additional.fields.key cs3이 비어 있지 않은 경우 cs3Label 필드에서 직접 매핑됩니다.
cs4 additional.fields.value.string_value cs4Label이 비어 있지 않은 경우 cs4 필드에서 직접 매핑됩니다.
cs4Label additional.fields.key cs4이 비어 있지 않은 경우 cs4Label 필드에서 직접 매핑됩니다.
cs5 additional.fields.value.string_value cs5Label이 비어 있지 않은 경우 cs5 필드에서 직접 매핑됩니다.
cs5Label additional.fields.key cs5이 비어 있지 않은 경우 cs5Label 필드에서 직접 매핑됩니다.
dhost target.hostname IP 주소가 아닌 경우 dhost 필드에서 매핑됩니다. dhost가 비어 있으면 shost (IP 또는 호스트 이름)에서 매핑됩니다.
dhost target.asset.hostname IP 주소가 아닌 경우 dhost 필드에서 매핑됩니다. dhost가 비어 있으면 shost (IP 또는 호스트 이름)에서 매핑됩니다.
dhost target.ip IP 주소인 경우 dhost 필드에서 매핑됩니다.
dhost target.asset.ip IP 주소인 경우 dhost 필드에서 매핑됩니다.
duser target.user.userid duser 필드에서 직접 매핑됩니다.
dvc intermediary.ip IP 주소인 경우 dvc 필드에서 매핑됩니다.
externalId metadata.product_log_id externalId 필드에서 직접 매핑됩니다.
fname target.file.full_path fname 필드에서 직접 매핑됩니다.
name metadata.event_type name, shost, dhost 필드의 조합을 기반으로 event_type을 결정하는 데 사용됩니다. 가능한 값: USER_CHANGE_PASSWORD, FILE_READ, USER_LOGIN, FILE_OPEN, FILE_DELETION 일치하는 항목이 없고 has_principal가 true이고 has_target가 false이면 event_type가 STATUS_UPDATE로 설정됩니다. 그렇지 않으면 기본값은 GENERIC_EVENT입니다.
prin_hostname principal.hostname prin_hostname 필드에서 직접 매핑됩니다. 비어 있으면 shost이 IP 주소가 아닌 경우 shost에서 매핑됩니다.
prin_hostname principal.asset.hostname prin_hostname 필드에서 직접 매핑됩니다. 비어 있으면 shost이 IP 주소가 아닌 경우 shost에서 매핑됩니다.
prin_ip principal.ip prin_ip 필드에서 직접 매핑됩니다. 비어 있으면 shost이 IP 주소인 경우 shost에서 매핑됩니다.
prin_ip principal.asset.ip prin_ip 필드에서 직접 매핑됩니다. 비어 있으면 shost이 IP 주소인 경우 shost에서 매핑됩니다.
제품 metadata.product_name product 필드에서 직접 매핑됩니다. 로그에 없는 경우 기본값은 'PAM'입니다.
reason security_result.description reason 필드에서 직접 매핑됩니다.
줄이는 것을 security_result.severity 다음 논리에 따라 severity 필드에서 매핑됩니다. 1~3: INFORMATIONAL, 4: ERROR, 5: CRITICAL
shost principal.hostname prin_hostname이 비어 있고 shost이 IP 주소가 아닌 경우 prin_hostname에 매핑됩니다.
shost principal.asset.hostname prin_hostname이 비어 있고 shost이 IP 주소가 아닌 경우 prin_hostname에 매핑됩니다.
shost principal.ip prin_ip이 비어 있고 shost이 IP 주소인 경우 prin_ip에 매핑됩니다.
shost principal.asset.ip prin_ip이 비어 있고 shost이 IP 주소인 경우 prin_ip에 매핑됩니다.
shost target.hostname dhost이 비어 있고 shost이 IP 주소가 아닌 경우 target.hostname에 매핑됩니다.
shost target.asset.hostname dhost이 비어 있고 shost이 IP 주소가 아닌 경우 target.hostname에 매핑됩니다.
shost target.ip dhost이 비어 있고 shost이 IP 주소인 경우 target.ip에 매핑됩니다.
shost target.asset.ip dhost이 비어 있고 shost이 IP 주소인 경우 target.ip에 매핑됩니다.
상태 additional.fields.value.string_value status 필드에서 직접 매핑됩니다.
suser principal.user.userid suser 필드에서 매핑되었습니다. duser이 비어 있으면 타겟 사용자 ID로 간주됩니다.
시간 metadata.event_timestamp.seconds 타임스탬프 형식으로 변환된 후 time 필드에서 직접 매핑됩니다.
시간 metadata.event_timestamp.nanos 타임스탬프 형식으로 변환된 후 time 필드에서 직접 매핑됩니다.
vendor metadata.vendor_name vendor 필드에서 직접 매핑됩니다. 로그에 없는 경우 기본값은 'CYBERARK'입니다.
version metadata.product_version version 필드에서 직접 매핑됩니다.
metadata.log_type 'CYBERARK_PAM'으로 하드코딩됩니다.
extensions.auth.mechanism event_type이 'USER_LOGIN'인 경우 'USERNAME_PASSWORD'로 설정됩니다.

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