CyberArk PAM 로그 수집

다음에서 지원:

이 파서 코드는 먼저 정규 표현식을 사용하여 CyberArk 액세스 권한 관리 (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 매핑 논리
행위 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'로 설정합니다.

변경사항

2024-05-05

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