BlueCat DDI 로그 수집

다음에서 지원:

이 파서는 Bluecat DDI(DNS, DHCP, IPAM)의 LEEF 형식 syslog 메시지와 비(비)LEEF 형식 syslog 메시지를 모두 처리합니다. grok 패턴과 조건부 로직을 사용하여 다양한 로그 유형 (예: named, dhcpd, audit, CRON)에서 필드를 추출하고 로그 유형에 따라 UDM에 매핑하고 DNS, DHCP 또는 사용자 관련 필드를 적절하게 채웁니다.

시작하기 전에

  • Google Security Operations 인스턴스가 있는지 확인합니다.
  • Windows 2016 이상 또는 systemd가 있는 Linux 호스트를 사용하고 있는지 확인합니다.
  • 프록시 뒤에서 실행하는 경우 방화벽 포트가 열려 있는지 확인합니다.
  • Bluecat에 대한 권한이 있는지 확인합니다.

Google SecOps 처리 인증 파일 가져오기

  1. Google SecOps 콘솔에 로그인합니다.
  2. SIEM 설정 > 수집 에이전트로 이동합니다.
  3. 처리 인증 파일을 다운로드합니다.

Google SecOps 고객 ID 가져오기

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

BindPlane 에이전트 설치

  1. Windows 설치의 경우 다음 스크립트를 실행합니다.
    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
  2. Linux 설치의 경우 다음 스크립트를 실행합니다.
    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
  3. 추가 설치 옵션은 이 설치 가이드에서 확인할 수 있습니다.

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

  1. BindPlane이 설치된 머신에 액세스합니다.
  2. 다음과 같이 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: bluceat_ddi
            raw_log_field: body
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. BindPlane 에이전트를 다시 시작하여 변경사항을 적용합니다.

    sudo systemctl restart bindplane
    

Bluecat DDI에서 Syslog 구성

  1. Bluecat Address Manager (BAM)에 로그인합니다.
  2. 구성 메뉴에서 구성을 선택합니다.
  3. 서버 탭을 선택합니다.
  4. 서버에서 BDDS 이름을 클릭합니다.
  5. 서버의 세부정보 탭이 열립니다.
  6. 서버 이름 메뉴를 클릭합니다.
  7. 서비스 구성을 선택합니다.
  8. 서비스 유형 > Syslog를 클릭합니다 (Address Manager가 서버에 쿼리하여 현재 값을 반환함).
  9. 일반에서 다음 값을 설정합니다.
    • 시스템로그 서버: 시스템로그 서버 (Bindplane)의 IP 주소입니다.
    • 시스템로그 포트: 시스템로그 서버 (Bindplane)의 포트입니다.
    • Syslog 전송: Bindplane 구성에 따라 TCP 또는 UDP를 선택합니다.
  10. 추가를 클릭합니다.
    • 새로 추가된 syslog 서버가 목록에 표시됩니다.
  11. 업데이트를 클릭합니다.

BlueCat DDI에서 Syslog 설정 구성

  1. BlueCat Address Manager에 로그인합니다.
  2. 구성 > 시스템 설정 > 로깅으로 이동합니다.
  3. 로깅 설정에서 Syslog Servers 섹션을 찾습니다.
  4. Syslog Server 추가를 클릭합니다.
  5. 다음과 같이 필수 값을 입력합니다.
    • 서버 이름: syslog 서버의 고유한 이름입니다 (예: BindplaneServer).
    • IP 주소: syslog 서버의 IP 주소 또는 호스트 이름입니다.
    • 프로토콜: TCP, UDP (기본값) 또는 TLS (syslog 구성에 따라 다름) 중에서 선택합니다.
    • 포트: syslog 통신의 포트를 지정합니다 (기본값: UDP/TCP의 경우 514, TLS의 경우 6514).
  6. 로깅 수준을 구성합니다. 필요에 따라 적절한 수준을 선택하세요. 옵션은 다음과 같습니다.
    • 긴급: 즉시 처리해야 하는 중요한 문제
    • 알림: 즉각적인 조치가 필요한 알림
    • Critical: 심각한 상태
    • 오류: 오류 이벤트
    • 경고: 경고 이벤트
    • 알림: 정상이지만 중요한 이벤트
    • 정보: 정보 제공 메시지
    • 디버그: 자세한 디버그 정보
  7. 선택사항: 로그를 분류하는 맞춤 Syslog 시설 (예: local0 또는 local1)을 추가합니다.
  8. 구성을 저장합니다.

DDI 어플라이언스에 Syslog 설정 적용

  1. 서버 > 서버 관리로 이동합니다.
  2. syslog를 사용 설정해야 하는 DNS/DHCP 서버를 선택합니다.
  3. 서버 수정을 클릭합니다.
  4. 로깅 섹션에서 다음을 수행합니다.
    • 이전에 구성한 syslog 서버를 선택합니다.
    • 특정 서비스 (예: DNS 쿼리 또는 DHCP 임대)에 대한 로깅을 사용 설정합니다.
    • 변경사항을 저장합니다.

UDM 매핑 표

로그 필드 UDM 매핑 논리
client_ip network.dhcp.ciaddr DHCPREQUEST 메시지에서 추출됩니다. DHCPREQUEST 메시지에 대해서만 채워집니다.
client_mac principal.mac DHCP 메시지 (DHCPDISCOVER, DHCPREQUEST, DHCPRELEASE)에서 추출됩니다.
client_mac target.mac DHCP 메시지 (DHCPOFFER, DHCPNAK)에서 추출됩니다.
client_mac network.dhcp.chaddr DHCP 메시지 (DHCPREQUEST, DHCPOFFER, DHCPACK, DHCPNAK, DHCPRELEASE)에서 추출됩니다.
cmd target.process.command_line CRON 로그에서 추출했습니다. 앰퍼샌드와 공백은 삭제됩니다.
description metadata.description 다양한 로그 유형에서 추출하여 추가 컨텍스트를 제공합니다.
description metadata.description syslog-ng 로그에서 추출하여 추가 컨텍스트를 제공합니다.
file_path target.file.full_path 다양한 로그 유형에서 추출되며 파일의 전체 경로를 나타냅니다.
file_path target.process.file.full_path agetty 로그에서 추출되며 프로세스와 관련된 파일의 전체 경로를 나타냅니다.
inner_message metadata.description 작업 유형이 정의되지 않은 경우 GENERIC_EVENT의 설명으로, MEM-MON 로그에는 사용됩니다.
metadata.event_type 로그 유형 및 콘텐츠를 기반으로 파서에서 결정합니다. 가능한 값은 NETWORK_DNS, NETWORK_DHCP, USER_LOGIN, USER_LOGOUT, USER_UNCATEGORIZED, GENERIC_EVENT, STATUS_UPDATE, NETWORK_CONNECTION입니다. 항상 'BLUECAT_DDI'입니다.
metadata.vendor_name 항상 'Bluecat Networks'입니다.
metadata.product_name 항상 'Bluecat DDI'입니다.
metadata.event_timestamp 로그 항목의 파싱된 타임스탬프에서 복사됩니다.
network.protocol DNS 로그의 경우 'DNS'로, DHCP 로그의 경우 'DHCP'로 설정합니다.
network.dns.answers 답변 레코드를 포함하는 배열입니다. answers 내의 data 필드는 target_ip(있는 경우)로 채워집니다.
network.dns.questions 질문 레코드가 포함된 배열입니다. name 필드는 target_host로 채워지고, type 필드는 query_type 또는 question_type 필드에서 파생되며, class 필드는 qclass 필드에서 파생됩니다.
network.dns.recursive rec_flag가 '+'이면 'true'로 설정합니다.
qclass network.dns.questions.class DNS 쿼리 로그에서 추출되고 dns_query_class_mapping.include 파일을 사용하여 정수 값에 매핑됩니다.
query_type network.dns.questions.type DNS 쿼리 로그에서 추출되고 dhcp_qtype_mapping.include 파일을 사용하여 정수 값에 매핑됩니다.
relay_ip intermediary.ip DNS 및 DHCP 로그에서 추출되며 중계 또는 중간 서버의 IP 주소를 나타냅니다.
server_host target.hostname 서버의 호스트 이름을 나타내며 다양한 로그 유형에서 추출됩니다.
server_host network.dhcp.sname DHCP 로그에서 추출되며 서버 호스트 이름을 나타냅니다.
server_host principal.hostname systemd, agetty, 일부 감사 로그에서 추출되며, 사용자의 호스트 이름을 나타냅니다.
server_ip target.ip LEEF 형식의 로그에서 추출되며 서버의 IP 주소를 나타냅니다.
src_ip principal.ip 소스 IP 주소를 나타내며 다양한 로그 유형에서 추출됩니다.
src_ip network.dhcp.yiaddr DHCPINFORM 메시지에서 yiaddr 필드를 채우는 데 사용됩니다.
src_port principal.port 소스 포트를 나타내는 다양한 로그 유형에서 추출됩니다.
src_user principal.user.userid CRON 및 감사 로그에서 추출되며 사용자 ID를 나타냅니다.
target_host target.hostname 대상 호스트 이름을 나타내며 다양한 로그 유형에서 추출됩니다.
target_host network.dns.questions.name DNS 로그에서 질문 이름을 채우는 데 사용됩니다.
target_ip target.ip 대상 IP 주소를 나타내며 다양한 로그 유형에서 추출됩니다.
target_ip network.dhcp.ciaddr BOOTREQUEST 메시지에서 ciaddr 필드를 채우는 데 사용됩니다.
target_ip network.dns.answers.data DNS 로그에서 답변 데이터를 채우는 데 사용됩니다.
tgt_port target.port syslog-ng 로그에서 추출되며 대상 포트를 나타냅니다.

변경사항

2022-11-08

  • 새로 처리된 로그의 log_type('agetty', 'syslog-ng', 'systemd')에 grok가 추가되었습니다.
  • log_type에 관한 grok 패턴('named', 'systemd', 'CRON', 'agetty', 'syslog-ng') 및 위에 언급된 log_type의 필드에 대한 각 매핑이 추가되었습니다.

2022-09-01

  • 일반 비율을 줄이기 위해 event_type을 'GENERIC_EVENT'에서 'USER_UNCATEGORIZED'로 수정했습니다.

2022-08-16

  • UDM 매핑 추가됨
  • metadata.vendor_name에서 'Bluecat Networks'로
  • metadata.product_name에서 'Bluecat DDI'로

2022-05-05

  • query_type 필드에 대한 검사를 추가했습니다.