ManageEngine ADAudit Plus 로그 수집
이 문서에서는 Bindplane 에이전트를 사용하여 ManageEngine ADAudit Plus 로그를 Google Security Operations로 수집하는 방법을 설명합니다. 파서는 ADAudit Plus의 로그를 처리하여 UDM 형식으로 변환합니다. grok 패턴을 사용하여 SYSLOG (CEF) 및 키-값 형식 메시지에서 필드를 추출하고, 알림 및 보고서 프로필에서 파생된 이벤트 유형에 따라 UDM 필드에 매핑하고, 추가 컨텍스트로 데이터를 보강합니다. 파서는 로그인 실패, 사용자 변경, 파일 수정과 같은 특정 시나리오도 처리하여 UDM 매핑을 적절하게 조정합니다.
시작하기 전에
- Google SecOps 인스턴스가 있는지 확인합니다.
- Windows 2016 이상 또는
systemd
가 설치된 Linux 호스트를 사용하고 있는지 확인합니다. - 프록시 뒤에서 실행하는 경우 방화벽 포트가 열려 있는지 확인합니다.
- ManageEngine ADAudit에 대한 권한 액세스 권한이 있는지 확인합니다.
Google SecOps 수집 인증 파일 가져오기
- Google SecOps 콘솔에 로그인합니다.
- SIEM 설정 > 수집 에이전트로 이동합니다.
- 수집 인증 파일을 다운로드합니다. Bindplane이 설치될 시스템에 파일을 안전하게 저장합니다.
Google SecOps 고객 ID 가져오기
- Google SecOps 콘솔에 로그인합니다.
- SIEM 설정 > 프로필로 이동합니다.
- 조직 세부정보 섹션에서 고객 ID를 복사하여 저장합니다.
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: '/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 ingestion_labels: log_type: ADAUDIT_PLUS raw_log_field: body 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
ManageEngine ADAudit Plus Syslog 구성
- ManageEngine ADAudit Plus 웹 UI에 로그인합니다.
- 관리자 > 구성 > SIEM 통합으로 이동합니다.
- 사용 설정을 선택하여 ADAudit Plus 로그를 전송합니다.
- ArcSight (CEF) 형식을 선택합니다.
- 다음 구성 세부정보를 제공합니다.
- IP 주소: Bindplane 에이전트 IP 주소입니다.
- 포트: Bindplane 포트 번호입니다(예: UDP의 경우
514
). - 대상 유형: UDP를 선택합니다 (Bindplane 에이전트 구성에 따라 TCP를 선택할 수도 있음).
- 저장을 클릭합니다.
UDM 매핑 테이블
로그 필드 | UDM 매핑 | 논리 |
---|---|---|
ACCOUNT_DOMAIN |
principal.administrative_domain |
원시 로그의 ACCOUNT_DOMAIN 값이 이 UDM 필드에 할당됩니다. |
ACCOUNT_NAME |
principal.user.userid |
원시 로그의 ACCOUNT_NAME 값이 이 UDM 필드에 할당됩니다. |
ALERT_PROFILE |
security_result.summary |
원시 로그의 ALERT_PROFILE 값이 이 UDM 필드에 할당됩니다. |
APPLICATION_NAME |
target.resource.name |
원시 로그의 APPLICATION_NAME 값이 이 UDM 필드에 할당됩니다. 또한 target.resource.resource_type 을 TASK 로, has_target_resource 을 true로 설정합니다. |
CALLER_DISPLAY_NAME |
target.user.user_display_name |
원시 로그의 CALLER_DISPLAY_NAME 값이 이 UDM 필드에 할당됩니다. |
CALLER_USER_NAME |
target.user.userid |
원시 로그의 CALLER_USER_NAME 값이 이 UDM 필드에 할당됩니다. |
CALLER_USER_SID |
target.group.windows_sid |
원시 로그의 CALLER_USER_SID 값은 [%,{,}] 문자를 삭제한 후 이 UDM 필드에 할당됩니다. 이 작업은 값이 Windows SID 패턴과 일치하는 경우에만 실행됩니다. |
Category |
metadata.product_event_type |
원시 로그의 Category 값이 이 UDM 필드에 할당됩니다. |
CLIENT_HOST_NAME |
target.hostname , target.asset.hostname |
원시 로그의 CLIENT_HOST_NAME 값이 이러한 UDM 필드에 할당됩니다. |
CLIENT_IP_ADDRESS |
target.ip , target.asset.ip |
원시 로그의 CLIENT_IP_ADDRESS 값은 유효한 IP 주소인지 확인한 후 이러한 UDM 필드에 할당됩니다. |
CLIENT_PORT |
target.port |
원시 로그의 CLIENT_PORT 값이 정수로 변환된 후 이 UDM 필드에 할당됩니다. |
DOMAIN |
target.administrative_domain |
원시 로그의 DOMAIN 값이 이 UDM 필드에 할당됩니다. 이 값은 나중에 ACCOUNT_DOMAIN 가 있는 경우 덮어쓰여질 수 있습니다. |
FILE_LOCATION |
target.file.full_path |
원시 로그의 FILE_LOCATION 값이 이 UDM 필드에 할당됩니다. |
FILE_NAME |
target.file.full_path |
FILE_LOCATION 이 없는 경우 원시 로그의 FILE_NAME 값이 이 UDM 필드에 할당됩니다. |
FORMAT_MESSAGE |
security_result.description |
원시 로그의 FORMAT_MESSAGE 값이 이 UDM 필드에 할당됩니다. 이 필드의 일부는 다른 UDM 필드를 채우는 데 사용된 후 설명에서 삭제될 수 있습니다. |
IP |
principal.ip , principal.asset.ip |
원시 로그의 IP 값은 유효한 IP 주소인지 확인한 후 이러한 UDM 필드에 할당됩니다. |
loggerHost |
intermediary.hostname , intermediary.asset.hostname |
원시 로그의 메시지 필드에서 추출된 loggerHost 값이 이러한 UDM 필드에 할당됩니다. |
login_name |
target.user.userid 또는 target.user.email_addresses 또는 target.user.user_display_name |
값에 @ 이 포함되어 있으면 이메일 주소로 처리됩니다. 공백이 포함된 경우 표시 이름으로 처리됩니다. 그렇지 않으면 userid로 처리됩니다. event_type 을 USER_LOGIN 로, extensions.auth.type 을 MACHINE 로, extensions.auth.mechanism 을 USERNAME_PASSWORD 로 설정합니다. |
RECORD_NUMBER |
principal.process.pid |
원시 로그의 RECORD_NUMBER 값이 이 UDM 필드에 할당됩니다. |
REPORT_PROFILE |
metadata.description |
원시 로그의 REPORT_PROFILE 값이 이 UDM 필드에 할당됩니다. |
SEVERITY |
security_result.severity |
SEVERITY 값에 따라 이 UDM 필드의 값이 결정됩니다. 1은 LOW에 매핑되고, 2는 MEDIUM에 매핑되고, 3은 HIGH에 매핑됩니다. |
SOURCE |
principal.hostname , principal.asset.hostname |
원시 로그의 SOURCE 값이 SOURCE 에 도메인 부분이 포함되지 않은 경우 DOMAIN 와 결합되어 이러한 UDM 필드에 할당됩니다. has_principal_host 도 true로 설정합니다. |
TIME_GENERATED |
metadata.event_timestamp.seconds |
원시 로그의 TIME_GENERATED 값이 이벤트 타임스탬프로 사용됩니다. |
UNIQUE_ID |
metadata.product_log_id |
원시 로그의 UNIQUE_ID 값이 이 UDM 필드에 할당됩니다. |
USERNAME |
principal.user.userid |
ACCOUNT_NAME 이 없는 경우 원시 로그의 USERNAME 값이 이 UDM 필드에 할당됩니다. |
USER_OU_GUID |
metadata.product_log_id |
UNIQUE_ID 이 없는 경우 중괄호를 삭제한 후 원시 로그의 USER_OU_GUID 값이 이 UDM 필드에 할당됩니다. |
access_mode |
security_result.detection_fields.value |
원시 로그의 access_mode 값이 이 UDM 필드에 할당되고 키는 ACCESS_MODE 로 설정됩니다. |
action_name |
security_result.description |
원시 로그의 action_name 값이 이 UDM 필드에 할당됩니다. |
domain_name |
principal.administrative_domain |
원시 로그의 domain_name 값이 이 UDM 필드에 할당됩니다. |
event.idm.read_only_udm.extensions.auth.mechanism |
event.idm.read_only_udm.extensions.auth.mechanism |
login_name 이 있거나 event_type 이 USER_LOGIN 이면 USERNAME_PASSWORD 로 설정합니다. |
event.idm.read_only_udm.extensions.auth.type |
event.idm.read_only_udm.extensions.auth.type |
login_name 이 있거나 event_type 이 USER_LOGIN 이면 MACHINE 로 설정합니다. |
event.idm.read_only_udm.metadata.event_type |
event.idm.read_only_udm.metadata.event_type |
ALERT_PROFILE , REPORT_PROFILE , FORMAT_MESSAGE 값을 기반으로 파서에 의해 결정됩니다. USER_CHANGE_PERMISSIONS , USER_STATS , USER_LOGIN , USER_CHANGE_PASSWORD , SETTING_MODIFICATION , FILE_DELETION , FILE_MODIFICATION , STATUS_SHUTDOWN , SCHEDULED_TASK_CREATION , FILE_READ , NETWORK_CONNECTION , GENERIC_EVENT , USER_UNCATEGORIZED , STATUS_UPDATE 등의 여러 값 중 하나일 수 있습니다. |
event.idm.read_only_udm.metadata.log_type |
event.idm.read_only_udm.metadata.log_type |
항상 ADAUDIT_PLUS 로 설정합니다. |
event.idm.read_only_udm.metadata.product_name |
event.idm.read_only_udm.metadata.product_name |
항상 ADAudit Plus 로 설정합니다. |
event.idm.read_only_udm.metadata.vendor_name |
event.idm.read_only_udm.metadata.vendor_name |
항상 Zoho Corporation 로 설정합니다. |
host |
principal.hostname , principal.asset.hostname |
원시 로그의 host 값이 이러한 UDM 필드에 할당됩니다. has_principal_host 도 true로 설정합니다. |
intermediary.hostname , intermediary.asset.hostname |
intermediary.hostname , intermediary.asset.hostname |
loggerHost 값으로 설정됩니다. |
principalHost |
principal.hostname , principal.asset.hostname |
원시 로그의 principalHost 값이 IP인지 확인한 후 이러한 UDM 필드에 할당됩니다. has_principal_host 도 true로 설정합니다. |
security_result.action |
security_result.action |
outcome 또는 msg_data_2 에 Success 이 포함되거나 FORMAT_MESSAGE 에 Status:Success 이 포함되면 ALLOW 로 설정합니다. status 에 denied , locked out , incorrect , does not meet 또는 Unable to validate 가 포함된 경우 BLOCK 로 설정합니다. ALERT_PROFILE 이 Logon Failures for Admin Users 이면 BLOCK 로 설정합니다. |
security_result.category |
security_result.category |
event_type 이 USER_STATS 이거나 ALERT_PROFILE 가 Logon Failures for Admin Users 인 경우 POLICY_VIOLATION 로 설정합니다. |
security_result.rule_name |
security_result.rule_name |
Reason: 이 포함된 경우 FORMAT_MESSAGE 필드에서 추출됩니다. |
status |
security_result.summary |
원시 로그의 status 값이 이 UDM 필드에 할당됩니다. |
targetHost |
target.hostname , target.asset.hostname 또는 target.ip , target.asset.ip |
원시 로그의 targetHost 값이 IP인지 확인한 후 이러한 UDM 필드에 할당됩니다. |
targetUser |
target.user.userid |
원시 로그의 targetUser 값이 이 UDM 필드에 할당됩니다. |
_CNtargetUser |
target.user.user_display_name |
원시 로그의 _CNtargetUser 값이 이 UDM 필드에 할당됩니다. |
_user |
principal.user.userid 또는 target.user.userid |
event_type 이 USER_CHANGE_PASSWORD 이 아닌 경우 원시 로그의 _user 값이 principal.user.userid 에 할당되고, event_type 이 USER_CHANGE_PASSWORD 인 경우 target.user.userid 에 할당됩니다. |
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가로부터 답변을 받으세요.