Cisco Prime 로그 수집

다음에서 지원:

이 문서에서는 Bindplane을 사용하여 Cisco Prime 로그를 Google Security Operations에 수집하는 방법을 설명합니다. 파서는 Grok 패턴을 활용하여 다양한 syslog 메시지 형식에서 필드를 추출하고 이를 통합 데이터 모델 (UDM)에 매핑합니다. 키-값 쌍을 비롯한 다양한 로그 구조를 처리하고 로그 메시지 내에서 발견된 특정 키워드와 패턴을 기반으로 사용자, 주 구성원, 타겟, 보안 정보로 데이터를 보강합니다.

시작하기 전에

다음 기본 요건이 충족되었는지 확인합니다.

  • Google SecOps 인스턴스
  • Windows 2016 이상 또는 systemd가 설치된 Linux 호스트
  • 프록시 뒤에서 실행하는 경우 방화벽 포트가 열려 있는지 확인
  • Cisco Prime에 대한 액세스 권한

Google SecOps 수집 인증 파일 가져오기

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

Google SecOps 고객 ID 가져오기

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

Bindplane 에이전트 설치

다음 안내에 따라 Windows 또는 Linux 운영체제에 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. 구성 파일에 액세스합니다.
    • config.yaml 파일을 찾습니다. 일반적으로 Linux에서는 /etc/bindplane-agent/ 디렉터리에 있고 Windows에서는 설치 디렉터리에 있습니다.
    • 텍스트 편집기 (예: 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_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: 'CISCO_PRIME'
            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
    

변경사항 감사 알림 구성 및 syslog 수신기 구성

  1. 다음 이벤트와 관련된 변경사항 감사에 대한 syslog 알림을 전송하도록 시스템을 구성할 수 있습니다.

    • 기기 인벤토리 업데이트
    • 구성 수정
    • 구성 템플릿 변경사항
    • 템플릿 관련 작업
    • 로그인, 로그아웃, 계정 수정과 같은 사용자 활동
  2. Cisco Prime 웹 UI에 로그인합니다.

  3. 관리 > 설정 > 시스템 설정으로 이동합니다.

  4. 메일 및 알림 > 감사 알림 변경을 선택합니다.

  5. 변경 감사 알림 사용 설정 체크박스를 클릭합니다.

  6. + 버튼을 클릭하여 syslog 서버를 지정합니다.

  7. 다음 구성 세부정보를 제공합니다.

    • Bindplane 에이전트 IP 주소를 입력합니다.
    • UDP 프로토콜을 선택합니다.
    • Bindplane 에이전트 포트 번호를 입력합니다.
  8. 저장을 클릭합니다.

시스템 감사 로그를 syslog로 전달하도록 구성

  1. Cisco Prime 웹 UI에 로그인합니다.
  2. 관리 > 설정 > 로깅 > Syslog 로깅 옵션으로 이동합니다.
  3. Enable Syslog(Syslog 사용 설정) 체크박스를 클릭합니다.
  4. 다음 구성 세부정보를 제공합니다.
    • Bindplane 에이전트 IP 주소를 입력합니다.
    • UDP 프로토콜을 선택합니다.
    • Bindplane 에이전트 포트 번호를 입력합니다.
    • 8개의 시설 또는 local0 중 하나를 선택합니다.
  5. 저장을 클릭합니다.

UDM 매핑 테이블

로그 필드 UDM 매핑 논리
client_ip_address principal.ip, principal.asset.ip 값은 kv 필터를 사용하여 원시 로그에서 추출된 client_ip_address 필드에서 가져옵니다.
날짜 metadata.event_timestamp 이 값은 grok 패턴을 사용하여 원시 로그에서 추출된 후 날짜 필터를 사용하여 타임스탬프로 변환되는 date 필드에서 가져옵니다.
description security_result.description 값은 grok 패턴을 사용하여 원시 로그에서 추출된 description 필드에서 가져옵니다.
dest_mac target.mac 값은 grok 패턴을 사용하여 원시 로그에서 추출되고 소문자로 변환된 dest_mac 필드에서 가져옵니다.
device_id principal.asset_id 값은 grok 패턴을 사용하여 원시 로그에서 추출된 device_id 필드에서 가져옵니다. 최종 값은 '기기 ID:'으로 형식이 지정됩니다.
device_ip principal.ip, principal.asset.ip 값은 kv 필터를 사용하여 원시 로그에서 추출된 device_ip 필드에서 가져옵니다. 그런 다음 값이 JSON 배열로 파싱되고 배열의 각 IP 주소가 UDM 필드에 추가됩니다.
device_type target.resource.attribute.labels.value 값은 grok 패턴을 사용하여 원시 로그에서 추출된 device_type 필드에서 가져옵니다.
dst_user target.user.userid 값은 grok 패턴을 사용하여 원시 로그에서 추출된 dst_user 필드에서 가져옵니다.
이메일 src.hostname 값은 grok 패턴을 사용하여 원시 로그에서 추출된 email 필드에서 가져옵니다.
file_path principal.process.file.full_path 값은 grok 패턴을 사용하여 원시 로그에서 추출된 file_path 필드에서 가져옵니다.
호스트 이름 target.resource.attribute.labels.value 값은 grok 패턴을 사용하여 원시 로그에서 추출된 hostname 필드에서 가져옵니다.
id principal.asset_id 값은 grok 패턴을 사용하여 원시 로그에서 추출된 id 필드에서 가져옵니다. 최종 값은 'Entity ID:'으로 형식이 지정됩니다.
ip_address principal.ip, principal.asset.ip 값은 grok 패턴을 사용하여 원시 로그에서 추출된 ip_address 필드에서 가져옵니다.
log_level security_result.severity 값은 grok 패턴을 사용하여 원시 로그에서 추출된 log_level 필드에서 가져옵니다. severity이 없는 경우 심각도 수준을 결정하는 데 사용됩니다.
mac_address principal.mac, source_mac 값은 grok 패턴을 사용하여 원시 로그에서 추출되고 소문자로 변환된 mac_address 필드에서 가져옵니다. source_mac이 비어 있으면 source_mac의 값으로도 사용됩니다.
oid principal.asset.product_object_id 값은 grok 패턴을 사용하여 원시 로그에서 추출된 oid 필드에서 가져옵니다.
principal_ip principal.ip, principal.asset.ip 값은 grok 패턴을 사용하여 원시 로그에서 추출된 principal_ip 필드에서 가져옵니다.
principal_port principal.port 값은 Grok 패턴을 사용하여 원시 로그에서 추출되고 정수로 변환된 principal_port 필드에서 가져옵니다.
process_name principal.resource.name 값은 grok 패턴을 사용하여 원시 로그에서 추출된 process_name 필드에서 가져옵니다.
sec_description security_result.description 값은 grok 패턴을 사용하여 원시 로그에서 추출된 sec_description 필드에서 가져옵니다.
session_id network.session_id 값은 grok 패턴을 사용하여 원시 로그에서 추출된 session_id 필드에서 가져옵니다.
줄이는 것을 security_result.severity 값은 grok 패턴을 사용하여 원시 로그에서 추출된 severity 필드에서 가져옵니다. 있는 경우 심각도 수준을 결정하는 데 사용됩니다.
source_mac principal.mac 값은 grok 패턴을 사용하여 원시 로그에서 추출되고 소문자로 변환된 source_mac 필드에서 가져옵니다. 비어 있으면 mac_address의 값을 사용합니다.
요약 security_result.summary 값은 grok 패턴을 사용하여 원시 로그에서 추출된 summary 필드에서 가져옵니다.
target_ip target.ip, target.asset.ip 값은 grok 패턴을 사용하여 원시 로그에서 추출된 target_ip 필드에서 가져옵니다.
thread_pool metadata.product_event_type 값은 grok 패턴을 사용하여 원시 로그에서 추출된 thread_pool 필드에서 가져옵니다.
타임스탬프 metadata.event_timestamp 이 값은 grok 패턴을 사용하여 원시 로그에서 추출된 후 날짜 필터를 사용하여 타임스탬프로 변환되는 timestamp 필드에서 가져옵니다.
유형 metadata.product_event_type 값은 kv 필터를 사용하여 원시 로그에서 추출된 Type 필드에서 가져옵니다.
user_name principal.user.userid 값은 grok 패턴 또는 kv 필터를 사용하여 원시 로그에서 추출된 user_name 필드에서 가져옵니다.
metadata.event_type metadata.event_type 이 값은 원시 로그에 특정 필드와 패턴이 있는지에 따라 결정됩니다. 로직에는 다음이 포함됩니다.
- 기본값: GENERIC_EVENT
- thread_pool이 'EmailAlertHelper'인 경우: EMAIL_TRANSACTION
- application_name이 'aesSystem'이고 desc에 'HealthMonitorHelper'이 포함된 경우: STATUS_HEARTBEAT
- user_presenttarget_resource_present이 모두 true인 경우: USER_RESOURCE_ACCESS
- user_present이 true인 경우: USER_UNCATEGORIZED
- principal_presenttarget_present이 모두 true인 경우: NETWORK_CONNECTION
- principal_present이 true인 경우: STATUS_UPDATE
- dst_user이 있고 description에 'logout'이 포함된 경우: USER_LOGOUT
- dst_user이 있고 description에 'logout'이 포함되지 않은 경우: USER_LOGIN
metadata.vendor_name metadata.vendor_name 값은 'CISCO'로 설정됩니다.
metadata.product_name metadata.product_name 값은 'CISCO_PRIME'으로 설정됩니다.
metadata.log_type metadata.log_type 값은 'CISCO_PRIME'으로 설정됩니다.
network.session_id network.session_id 값은 grok 패턴을 사용하여 원시 로그에서 추출된 session_id 필드에서 가져옵니다.
principal.application principal.application 값은 grok 패턴을 사용하여 원시 로그에서 추출된 application_name 필드에서 가져옵니다.
principal.asset.ip principal.asset.ip 값은 client_ip_address, device_ip, ip_address, principal_ip, target_ip 필드에서 가져올 수 있습니다.
principal.asset.product_object_id principal.asset.product_object_id 값은 grok 패턴을 사용하여 원시 로그에서 추출된 oid 필드에서 가져옵니다.
principal.asset_id principal.asset_id 값은 device_id, id 필드에서 가져올 수 있습니다.
principal.ip principal.ip 값은 client_ip_address, device_ip, ip_address, principal_ip 필드에서 가져올 수 있습니다.
principal.mac principal.mac 값은 mac_address, source_mac 필드에서 가져올 수 있습니다.
principal.port principal.port 값은 Grok 패턴을 사용하여 원시 로그에서 추출되고 정수로 변환된 principal_port 필드에서 가져옵니다.
principal.process.file.full_path principal.process.file.full_path 값은 grok 패턴을 사용하여 원시 로그에서 추출된 file_path 필드에서 가져옵니다.
principal.resource.name principal.resource.name 값은 grok 패턴을 사용하여 원시 로그에서 추출된 process_name 필드에서 가져옵니다.
principal.user.userid principal.user.userid 값은 grok 패턴 또는 kv 필터를 사용하여 원시 로그에서 추출된 user_name 필드에서 가져옵니다.
security_result.action security_result.action description에 'fail'이 포함된 경우 값은 'BLOCK'으로 설정됩니다.
security_result.description security_result.description 값은 desc, description, sec_description 필드에서 가져올 수 있습니다.
security_result.severity security_result.severity 값은 log_level, severity 필드에서 가져올 수 있습니다.
security_result.summary security_result.summary 값은 grok 패턴을 사용하여 원시 로그에서 추출된 summary 필드에서 가져옵니다.
src.hostname src.hostname 값은 grok 패턴을 사용하여 원시 로그에서 추출된 email 필드에서 가져옵니다.
target.asset.ip target.asset.ip 값은 grok 패턴을 사용하여 원시 로그에서 추출된 target_ip 필드에서 가져옵니다.
target.ip target.ip 값은 grok 패턴을 사용하여 원시 로그에서 추출된 target_ip 필드에서 가져옵니다.
target.mac target.mac 값은 grok 패턴을 사용하여 원시 로그에서 추출되고 소문자로 변환된 dest_mac 필드에서 가져옵니다.
target.resource.attribute.labels.key target.resource.attribute.labels.key 값은 컨텍스트에 따라 '기기 유형' 또는 '기기 호스트 이름'으로 설정됩니다.
target.resource.attribute.labels.value target.resource.attribute.labels.value 값은 device_type, hostname 필드에서 가져올 수 있습니다.
target.user.userid target.user.userid 값은 grok 패턴을 사용하여 원시 로그에서 추출된 dst_user 필드에서 가져옵니다.
extensions.auth.mechanism extensions.auth.mechanism dst_user이 있고 description에 'password'가 포함된 경우 값은 'USERNAME_PASSWORD'로 설정됩니다.
extensions.auth.type extensions.auth.type dst_user이 있는 경우 값은 'MACHINE'으로 설정됩니다.

도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가로부터 답변을 받으세요.