Veridium ID 로그 수집
이 문서에서는 Bindplane을 사용하여 Veridium ID 로그를 Google Security Operations에 수집하는 방법을 설명합니다. 파서는 먼저 syslog 메시지에서 필드를 추출하고 'log_identifier'를 기반으로 분류합니다. 그런 다음 조건부 논리와 키-값 파싱을 사용하여 추출된 필드를 통합 데이터 모델 (UDM) 구조에 매핑하여 ActionLog
및 EventLog
형식을 모두 처리합니다.
시작하기 전에
다음 기본 요건이 충족되었는지 확인합니다.
- Google SecOps 인스턴스
- Windows 2016 이상 또는
systemd
가 설치된 Linux 호스트 - 프록시 뒤에서 실행하는 경우 방화벽 포트가 열려 있는지 확인
- Veridium ID에 대한 액세스 권한
Google SecOps 수집 인증 파일 가져오기
- Google SecOps 콘솔에 로그인합니다.
- SIEM 설정 > 수집 에이전트로 이동합니다.
- 수집 인증 파일을 다운로드합니다. Bindplane이 설치될 시스템에 파일을 안전하게 저장합니다.
Google SecOps 고객 ID 가져오기
- Google SecOps 콘솔에 로그인합니다.
- SIEM 설정 > 프로필로 이동합니다.
- 조직 세부정보 섹션에서 고객 ID를 복사하여 저장합니다.
Bindplane 에이전트 설치
다음 안내에 따라 Windows 또는 Linux 운영체제에 Bindplane 에이전트를 설치합니다.
Windows 설치
- 명령 프롬프트 또는 PowerShell을 관리자로 엽니다.
다음 명령어를 실행합니다.
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Linux 설치
- 루트 또는 sudo 권한으로 터미널을 엽니다.
다음 명령어를 실행합니다.
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
추가 설치 리소스
추가 설치 옵션은 설치 가이드를 참고하세요.
Syslog를 수집하여 Google SecOps로 전송하도록 Bindplane 에이전트 구성
- 구성 파일에 액세스합니다.
config.yaml
파일을 찾습니다. 일반적으로 Linux에서는/etc/bindplane-agent/
디렉터리에 있고 Windows에서는 설치 디렉터리에 있습니다.- 텍스트 편집기 (예:
nano
,vi
, 메모장)를 사용하여 파일을 엽니다.
다음과 같이
config.yaml
파일을 수정합니다.receivers: udplog: # Replace the port and IP address as required listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds_file_path: '/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID from Step 2 customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # Add optional ingestion labels for better organization log_type: 'VERIDIUM_ID' raw_log_field: body ingestion_labels: service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
- 인프라에 필요한 대로 포트와 IP 주소를 바꿉니다.
<customer_id>
를 실제 고객 ID로 바꿉니다.- Google SecOps 수집 인증 파일 가져오기 섹션에서 인증 파일이 저장된 경로로
/path/to/ingestion-authentication-file.json
를 업데이트합니다.
Bindplane 에이전트를 다시 시작하여 변경사항 적용
Linux에서 Bindplane 에이전트를 다시 시작하려면 다음 명령어를 실행합니다.
sudo systemctl restart bindplane-agent
Windows에서 Bindplane 에이전트를 다시 시작하려면 서비스 콘솔을 사용하거나 다음 명령어를 입력하면 됩니다.
net stop BindPlaneAgent && net start BindPlaneAgent
Veridium ID용 Syslog 구성
- SSH 또는 CLI를 사용하여 Veridium ID 호스트에 로그인합니다.
VI를 사용하여
/etc/rsyslog.conf
또는/etc/rsyslog.d/events.conf
파일을 수정합니다.vi /etc/rsyslog.conf
<bindplane-ip>
및<bindplane-port>
을 실제 Bindplane 에이전트 세부정보로 바꿔 다음 세부정보를 입력합니다.module(load="imfile" PollingInterval="10") input(type="imfile" File="/var/log/veridiumid/websecadmin/events.log" Tag="ver-adminevents" reopenOnTruncate="on") input(type="imfile" File="/var/log/veridiumid/tomcat/events.log" Tag="ver-events" reopenOnTruncate="on") if $programname == 'ver-events' then @@<bindplane-ip>:<bindplane-port> if $programname == 'ver-adminevents' then @@<bindplane-ip>:<bindplane-port>
파일을 저장하고 VI를 종료합니다.
UDM 매핑 테이블
로그 필드 | UDM 매핑 | 논리 |
---|---|---|
_caller.accountId |
principal.user.userid |
_caller.accountId 필드에서 직접 매핑됩니다. |
_caller.accountEmailAddressInfo |
principal.user.email_addresses |
_caller.accountEmailAddressInfo 필드에서 직접 매핑됩니다. |
_caller.accountExternalId |
principal.user.email_addresses |
_caller.accountExternalId 필드에서 직접 매핑됩니다. |
_caller.accountStatus |
principal.user.attribute.labels[account_status].value |
_caller.accountStatus 필드에서 직접 매핑됩니다. |
_caller.deviceId |
principal.asset.asset_id |
'VERIDIUM_ID:'가 앞에 붙고 _caller.deviceId 필드에서 매핑됩니다. |
_caller.deviceDescription |
principal.asset.attribute.labels[device_description].value |
_caller.deviceDescription 필드에서 직접 매핑됩니다. |
_caller.deviceManufacturer |
principal.asset.attribute.labels[device_manufacturer].value |
_caller.deviceManufacturer 필드에서 직접 매핑됩니다. |
_caller.deviceName |
principal.asset.attribute.labels[device_name].value |
_caller.deviceName 필드에서 직접 매핑됩니다. |
_caller.deviceOs |
principal.asset.platform_software.platform |
_caller.deviceOs 필드에서 매핑되었습니다. 값이 'iOS'이면 'IOS'에 매핑됩니다. 값이 'Android'인 경우 'ANDROID'에 매핑됩니다. 값이 'WIN' 또는 'Windows'인 경우 'WINDOWS'에 매핑됩니다. |
_caller.deviceStatus |
principal.asset.attribute.labels[device_status].value |
_caller.deviceStatus 필드에서 직접 매핑됩니다. |
_caller.deviceType |
principal.asset.attribute.labels[device_type].value |
_caller.deviceType 필드에서 직접 매핑됩니다. |
actionDate |
additional.fields[action_date].value.string_value |
actionDate 필드에서 직접 매핑됩니다. |
actionName |
metadata.product_event_type |
actionName 필드에서 직접 매핑됩니다. |
accountEmail |
principal.user.email_addresses |
accountEmail 필드에서 직접 매핑됩니다. |
accountExternalId |
principal.user.email_addresses |
accountExternalId 필드에서 직접 매핑됩니다. |
accountId |
principal.user.userid |
accountId 필드에서 직접 매핑됩니다. |
authenticatorDeviceContext.deviceMake |
intermediary.asset.hardware.manufacturer |
authenticatorDeviceContext.deviceMake 필드에서 직접 매핑됩니다. |
authenticatorDeviceContext.ip |
intermediary.ip |
authenticatorDeviceContext.ip 필드에서 직접 매핑됩니다. |
authenticatorDeviceContext.location.city |
intermediary.asset.location.city |
authenticatorDeviceContext.location.coordinates.latitude 필드에서 직접 매핑됩니다. |
authenticatorDeviceContext.location.coordinates.latitude |
intermediary.asset.location.region_latitude |
authenticatorDeviceContext.location.coordinates.latitude 필드에서 직접 매핑됩니다. |
authenticatorDeviceContext.location.coordinates.longitude |
intermediary.asset.location.region_longitude |
authenticatorDeviceContext.location.coordinates.longitude 필드에서 직접 매핑됩니다. |
authenticatorDeviceContext.location.countryName |
intermediary.asset.location.country_or_region |
authenticatorDeviceContext.location.countryName 필드에서 직접 매핑됩니다. |
authenticatorDeviceContext.location.ip |
intermediary.ip |
authenticatorDeviceContext.location.ip 필드에서 직접 매핑됩니다. |
authenticationDeviceDescription |
intermediary.asset.attribute.labels[authentication_device_description].value |
authenticationDeviceDescription 필드에서 직접 매핑됩니다. |
authenticationDeviceName |
intermediary.asset.asset_id |
'VERIDIUM_ID:'가 앞에 붙고 authenticationDeviceName 필드에서 매핑됩니다. |
authenticationDeviceOs |
intermediary.asset.platform_software.platform |
authenticationDeviceOs 필드에서 매핑되었습니다. 값이 'iOS'이면 'IOS'에 매핑됩니다. 값이 'Android'인 경우 'ANDROID'에 매핑됩니다. 값이 'WIN' 또는 'Windows'인 경우 'WINDOWS'에 매핑됩니다. |
authenticationDeviceOsVersion |
intermediary.asset.platform_software.platform_version |
authenticationDeviceOsVersion 필드에서 직접 매핑됩니다. |
authenticationDevicePhone |
intermediary.asset.attribute.labels[authentication_device_phone].value |
authenticationDevicePhone 필드에서 직접 매핑됩니다. |
authenticationDevicePhoneModel |
intermediary.asset.attribute.labels[authentication_device_phone_model].value |
authenticationDevicePhoneModel 필드에서 직접 매핑됩니다. |
authenticationDeviceRegistrationTime |
intermediary.asset.attribute.labels[authentication_device_registeration_time].value |
authenticationDeviceRegistrationTime 필드에서 직접 매핑됩니다. |
authenticationDeviceType |
intermediary.asset.attribute.labels[authentication_device_type].value |
authenticationDeviceType 필드에서 직접 매핑됩니다. |
authenticationResult |
extensions.auth.auth_details |
authenticationResult 필드에서 직접 매핑됩니다. |
context.deviceMake |
principal.asset.hardware.manufacturer |
context.deviceMake 필드에서 직접 매핑됩니다. |
context.ip |
principal.ip |
context.ip 필드에서 직접 매핑됩니다. |
context.location.countryName |
principal.location.country_or_region |
context.location.countryName 필드에서 직접 매핑됩니다. |
context.location.ip |
principal.ip |
context.location.ip 필드에서 직접 매핑됩니다. |
context.osVersion |
principal.asset.platform_software.platform_version |
context.osVersion 필드에서 직접 매핑됩니다. |
context.userAgentRaw |
network.http.user_agent |
context.userAgentRaw 필드에서 직접 매핑됩니다. |
exploiterDeviceContext.deviceMake |
src.asset.hardware.manufacturer |
exploiterDeviceContext.deviceMake 필드에서 직접 매핑됩니다. |
exploiterDeviceContext.ip |
src.ip |
exploiterDeviceContext.ip 필드에서 직접 매핑됩니다. |
exploiterDeviceContext.location.city |
src.asset.location.city |
exploiterDeviceContext.location.city 필드에서 직접 매핑됩니다. |
exploiterDeviceContext.location.coordinates.latitude |
src.asset.location.region_latitude |
exploiterDeviceContext.location.coordinates.latitude 필드에서 직접 매핑됩니다. |
exploiterDeviceContext.location.coordinates.longitude |
src.asset.location.region_longitude |
exploiterDeviceContext.location.coordinates.longitude 필드에서 직접 매핑됩니다. |
exploiterDeviceContext.location.countryName |
src.asset.location.country_or_region |
exploiterDeviceContext.location.countryName 필드에서 직접 매핑됩니다. |
exploiterDeviceContext.location.ip |
src.ip |
exploiterDeviceContext.location.ip 필드에서 직접 매핑됩니다. |
exploiterDeviceContext.osName |
src.asset.platform_software.platform |
exploiterDeviceContext.osName 필드에서 매핑되었습니다. 값이 'WIN' 또는 'Windows'인 경우 'WINDOWS'에 매핑됩니다. 값이 'iOS'이면 'IOS'에 매핑됩니다. 값이 'Android'인 경우 'ANDROID'에 매핑됩니다. |
exploiterDeviceContext.osVersion |
src.asset.platform_software.platform_version |
exploiterDeviceContext.osVersion 필드에서 직접 매핑됩니다. |
exploiterDeviceName |
src.asset.attribute.labels[exploiter_device_name].value |
exploiterDeviceName 필드에서 직접 매핑됩니다. |
hostname |
principal.hostname |
hostname 필드에서 직접 매핑됩니다. |
ipAddress |
principal.ip |
ipAddress 필드에서 직접 매핑됩니다. |
location |
principal.location.city |
location 필드에서 직접 매핑됩니다. |
location.city |
about.location.city |
location.city 필드에서 직접 매핑됩니다. |
location.coordinates.latitude |
about.location.region_latitude |
location.coordinates.latitude 필드에서 직접 매핑됩니다. |
location.coordinates.longitude |
about.location.region_longitude |
location.coordinates.longitude 필드에서 직접 매핑됩니다. |
location.countryName |
about.location.country_or_region |
location.countryName 필드에서 직접 매핑됩니다. |
location.ip |
about.ip |
location.ip 필드에서 직접 매핑됩니다. |
metadata.collected_timestamp |
metadata.collected_timestamp |
collected_time 필드에서 직접 매핑됩니다. |
metadata.event_timestamp |
metadata.event_timestamp |
event_time 필드에서 직접 매핑됩니다. |
metadata.event_type |
metadata.event_type |
'USER_UNCATEGORIZED'로 설정됩니다. |
metadata.product_event_type |
metadata.product_event_type |
actionName 필드에서 직접 매핑됩니다. |
metadata.product_name |
metadata.product_name |
'VERIDIUM_ID'로 설정됩니다. |
namespace |
principal.namespace |
namespace 필드에서 직접 매핑됩니다. |
pid |
principal.process.pid |
pid 필드에서 직접 매핑됩니다. |
request.context.userAgentRaw |
network.http.user_agent |
request.context.userAgentRaw 필드에서 직접 매핑됩니다. |
request.sessionId |
network.session_id |
request.sessionId 필드에서 직접 매핑됩니다. |
requestMethod |
network.http.method |
requestMethod 필드에서 직접 매핑됩니다. |
requestURI |
network.http.referral_url |
requestURI 필드에서 직접 매핑됩니다. |
security_result.severity |
security_result.severity |
severity 필드에서 매핑되었습니다. 값이 'INFO'이면 'INFORMATIONAL'에 매핑됩니다. |
principal.application |
application 필드에서 직접 매핑됩니다. |
|
principal.asset.hostname |
hostname 필드에서 직접 매핑됩니다. |
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가로부터 답변을 받으세요.