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 처리 인증 파일 가져오기

  1. Google SecOps 콘솔에 로그인합니다.
  2. SIEM 설정 > 수집 에이전트로 이동합니다.
  3. 처리 인증 파일을 다운로드합니다. Bindplane가 설치될 시스템에 파일을 안전하게 저장합니다.

Google SecOps 고객 ID 가져오기

  1. Google SecOps 콘솔에 로그인합니다.
  2. SIEM 설정 > 프로필로 이동합니다.
  3. 조직 세부정보 섹션에서 고객 ID를 복사하여 저장합니다.

Bindplane 에이전트 설치

Windows 설치

  1. 관리자 권한으로 명령 프롬프트 또는 PowerShell을 엽니다.
  2. 다음 명령어를 실행합니다.

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Linux 설치

  1. 루트 또는 sudo 권한으로 터미널을 엽니다.
  2. 다음 명령어를 실행합니다.

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

추가 설치 리소스

Syslog를 수집하고 Google SecOps로 전송하도록 Bindplane 에이전트 구성

  1. 구성 파일에 액세스합니다.

    1. config.yaml 파일을 찾습니다. 일반적으로 Linux의 /etc/bindplane-agent/ 디렉터리 또는 Windows의 설치 디렉터리에 있습니다.
    2. 텍스트 편집기 (예: nano, vi, 메모장)를 사용하여 파일을 엽니다.
  2. 다음과 같이 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
    
  3. 인프라에서 필요에 따라 포트와 IP 주소를 바꿉니다.

  4. <customer_id>를 실제 고객 ID로 바꿉니다.

  5. 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 구성

  1. ManageEngine ADAudit Plus 웹 UI에 로그인합니다.
  2. 관리 > 구성 > SIEM 통합으로 이동합니다.
  3. 사용 설정을 선택하여 ADAudit Plus 로그를 전송합니다.
  4. ArcSight (CEF) 형식을 선택합니다.
  5. 다음 구성 세부정보를 제공합니다.
    • IP 주소: Bindplane 에이전트 IP 주소입니다.
    • 포트: 바인드플레인 포트 번호입니다. 예를 들어 UDP의 경우 514입니다.
    • 타겟 유형: UDP를 선택합니다 (Bindplane 에이전트 구성에 따라 TCP를 선택할 수도 있음).
  6. 저장을 클릭합니다.

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_typeTASK로, 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 값에 @가 포함된 경우 이메일 주소로 처리됩니다. 공백이 포함된 경우 표시 이름으로 취급됩니다. 그렇지 않으면 사용자 ID로 취급됩니다. 또한 event_typeUSER_LOGIN, extensions.auth.typeMACHINE, extensions.auth.mechanismUSERNAME_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에 매핑됩니다. 또한 SEVERITY가 3이면 is_significant를 true로, 그렇지 않으면 false로 설정합니다.
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 중괄호를 삭제한 후 원시 로그의 USER_OU_GUID 값은 UNIQUE_ID가 없는 경우 이 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.is_alert event.idm.is_alert ALERT_PROFILEAlert, User Account Locked Out이거나 Unusual Activity.*?와 일치하는 경우 true로 설정합니다. 그렇지 않으면 false로 설정합니다.
event.idm.is_significant event.idm.is_significant SEVERITY가 3이면 true로 설정합니다. 그렇지 않으면 false로 설정합니다.
event.idm.read_only_udm.extensions.auth.mechanism event.idm.read_only_udm.extensions.auth.mechanism login_name가 있거나 event_typeUSER_LOGIN이면 USERNAME_PASSWORD로 설정합니다.
event.idm.read_only_udm.extensions.auth.type event.idm.read_only_udm.extensions.auth.type login_name가 있거나 event_typeUSER_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_2Success이 포함되어 있거나 FORMAT_MESSAGEStatus:Success가 포함되어 있으면 ALLOW로 설정합니다. statusdenied, locked out, incorrect, does not meet 또는 Unable to validate가 포함된 경우 BLOCK로 설정합니다. ALERT_PROFILELogon Failures for Admin Users이면 BLOCK로 설정합니다.
security_result.category security_result.category event_typeUSER_STATS이거나 ALERT_PROFILELogon Failures for Admin Users이면 POLICY_VIOLATION로 설정합니다.
security_result.rule_name security_result.rule_name FORMAT_MESSAGE 필드에 Reason:가 포함된 경우 이 필드에서 추출됩니다.
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 원시 로그의 _user 값은 event_typeUSER_CHANGE_PASSWORD이 아닌 한 principal.user.userid에 할당되며, event_typeUSER_CHANGE_PASSWORD인 경우에는 target.user.userid에 할당됩니다.

변경사항

2025-02-19

개선사항:

  • EVENT_NUMBER, REMARKS, EVENT_TYPE, ATTRIBUTES_NEW_VALUE, ATTRIBUTES_OLD_VALUE, OPERATION_TYPEadditional.fields에 매핑했습니다.
  • EVENT_TYPE_TEXTsecurity_result.detection_fields에 매핑했습니다.
  • ACCOUNT_NAMEprincipal.user.user_display_name에 매핑했습니다.

2024-05-20

개선사항:

  • outcome 필드의 값이 Success와 유사하면 security_result.actionALLOW로 설정합니다.
  • msg_data 필드의 값이 Success와 유사하면 security_result.actionALLOW로 설정합니다.
  • act, suid, reason를 추출하기 위해 msg_data에 Grok 패턴을 추가했습니다.
  • msg_datasecurity_result.description에 매핑했습니다.
  • cs1, cs3, cs4, cs5, cn1, cn2, cn3additional.fields에 매핑했습니다.

2024-01-19

개선사항:

  • 파싱되지 않은 로그를 파싱하도록 Grok 패턴을 수정했습니다.
  • IPprincipal.asset.ip에 매핑했습니다.
  • _PrincipalIPprincipal.asset.ip에 매핑했습니다.
  • hostprincipal.asset.hostname에 매핑했습니다.
  • principalHostprincipal.asset.hostname에 매핑했습니다.
  • SOURCEprincipal.asset.hostname에 매핑했습니다.
  • _TargetIPtarget.asset.ip에 매핑했습니다.
  • CLIENT_IP_ADDRESStarget.asset.hostname에 매핑했습니다.
  • CLIENT_HOST_NAMEtarget.asset.hostname에 매핑했습니다.
  • targetHosttarget.asset.hostname에 매핑했습니다.

2023-10-17

버그 수정:

  • IPprincipal.ip에 매핑하기 전에 IP 확인을 추가했습니다.
  • CLIENT_IP_ADDRESStarget.ip에 매핑하기 전에 IP 확인을 추가했습니다.
  • principal.group.windows_sid에 매핑하기 전에 ACCOUNT_SID의 유효성 검사를 추가했습니다.
  • target.group.windows_sid에 매핑하기 전에 CALLER_USER_SID의 유효성 검사를 추가했습니다.
  • principal가 있으면 event_typeSTATUS_UPDATE로 설정합니다.
  • 새 패턴 FORMAT_MESSAGE에서 file_path를 파싱하도록 Grok 패턴을 수정했습니다.
  • event_typeSCHEDULED_TASK_CREATION인 경우 has_target_resource 검사를 추가했습니다.

2023-03-17

개선사항:

  • CEF 형식 로그를 지원하고 다음 필드를 매핑했습니다.
  • IPprincipal.ip에 매핑되었습니다.
  • LOGIN NAMEtarget.user.userid or target.user.email_addresses or target.user.user_display_name에 매핑되었습니다.
  • DOMAIN NAMEprincipal.administrative_domain에 매핑되었습니다.
  • HOSTprincipal.hostname에 매핑되었습니다.
  • ACCESS_MODEsecurity_result.detection_fields에 매핑되었습니다.
  • STATUSsecurity_result.summary에 매핑되었습니다.
  • STATUSsuccess이면 security_result.actionALLOW에 매핑되고, STATUSdenied or incorrect이면 security_result.actionBLOCK에 매핑됩니다.

도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가의 답변을 받아 보세요.