CyberArk PAM 로그 수집
다음에서 지원:
Google SecOps
SIEM
이 파서 코드는 먼저 정규 표현식을 사용하여 CyberArk 액세스 권한 관리 (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_labels
BindPlane 에이전트를 다시 시작하여 변경사항을 적용합니다.
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=Syslog
dbparm.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 매핑 | 논리 |
---|---|---|
행위 | 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
- 파서를 새로 만들었습니다.