CyberArk PAM 로그 수집
다음에서 지원:
Google SecOps
SIEM
이 파서 코드는 먼저 정규 표현식을 사용하여 CyberArk Privileged Access Manager (PAM) syslog 메시지에서 필드를 추출합니다. 그런 다음 추출된 필드를 통합 데이터 모델 (UDM)에 매핑하여 추가 컨텍스트로 데이터를 보강하고 특정 기준에 따라 이벤트 유형을 표준화합니다.
시작하기 전에
- Google Security Operations 인스턴스가 있는지 확인합니다.
- Windows 2016 이상 또는 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: Cyberark_PAM raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - tcplog exporters: - chronicle/chronicle_w_labelsBindplane 에이전트를 다시 시작하여 변경사항을 적용합니다.
sudo systemctl restart bindplane
CyberArk Vault의 Syslog 내보내기 구성
- Vault 서버에 로그인합니다.
C:\Program Files (x86)\CyberArk\Vault\Server\dbparm.ini에 있는 구성 파일dbparm.ini를 엽니다.다음 매개변수를 추가하거나 수정합니다.
SyslogServer=<syslog_server_ip> SyslogPort=<syslog_server_port> SyslogProtocol=<TCP or UDP> SyslogFormat=Syslogdbparm.ini파일을 저장합니다.Vault 서버를 다시 시작합니다.
net stop CyberArkVault net start CyberArkVault
PVWA에서 Syslog 내보내기 구성
- PVWA 서버에 로그인합니다.
C:\inetpub\wwwroot\PasswordVault\에 있는Web.config파일을 엽니다.다음 키를 추가하거나 수정합니다.
<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" />Web.config파일에 변경사항을 저장합니다.IIS 서비스를 다시 시작합니다.
iisreset
PTA에서 Syslog 내보내기 구성
- SSH를 사용하여 PTA 서버에 액세스합니다.
/opt/cta/config/application.properties에 있는application.properties파일을 엽니다.다음 줄을 추가하거나 수정합니다.
syslog.server.ip=<syslog_server_ip> syslog.server.port=<syslog_server_port> syslog.protocol=<TCP or UDP>application.properties파일을 저장합니다.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 전문가로부터 답변을 받으세요.