Cisco VPN 로그 수집

다음에서 지원:

이 문서에서는 Bindplane을 사용하여 Cisco ASA VPN 로그를 Google Security Operations에 수집하는 방법을 설명합니다. 파서는 grok 패턴을 사용하여 syslog 메시지에서 필드를 추출하여 표준 syslog 형식과 대체 메시지 구조를 모두 처리합니다. 그런 다음 추출된 필드를 통합 데이터 모델 (UDM)에 매핑하고, ID와 추출된 정보를 기반으로 이벤트를 분류하고, 공급업체, 제품, 이벤트 유형과 같은 메타데이터로 데이터를 보강합니다. 파서는 특정 이벤트 ID도 처리하여 추가 grok 패턴과 로직을 적용하여 관련 세부정보를 추출하고 적절한 UDM 필드에 매핑합니다.

시작하기 전에

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

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

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_VPN'
            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
    

Cisco ASA VPN의 Syslog 구성

  1. Cisco ASDM을 엽니다.
  2. 구성 > 기능 > 속성 > 로깅 > 로깅 설정으로 이동합니다.
  3. 로깅 사용 설정 체크박스를 선택하여 syslog를 사용 설정합니다.
  4. 로깅에서 Syslog Servers를 선택하고 Add를 클릭합니다.
  5. 시스템로그 서버 추가 창에 다음 구성 세부정보를 입력합니다.
    • 인터페이스: 아웃바운드 통신을 위한 인터페이스를 선택합니다.
    • IP 주소: Bindplane 에이전트 IP 주소를 입력합니다.
    • 프로토콜: UDP를 선택합니다.
    • 포트: Bindplane 에이전트 포트 번호를 입력합니다.
    • 확인을 클릭합니다.
  6. 로깅 섹션에서 로깅 필터를 선택합니다.
  7. Syslog Servers를 선택하고 Edit를 클릭합니다.
  8. 목록에서 심각도별 필터링으로 정보를 선택합니다.
  9. 확인을 클릭합니다.
  10. 적용을 클릭합니다.

UDM 매핑 테이블

로그 필드 UDM 매핑 논리
accesslist target.resource.name eventtype이 'ASA-4-106103'인 경우 message_info에서 추출됩니다. 액세스 목록의 이름을 나타냅니다.
action security_result.action 파서가 로그 메시지의 키워드를 기반으로 파생합니다 (예: '거부', '거절', '허용', '수락') ALLOW 또는 BLOCK에 매핑됩니다.
action security_result.action_details 취해진 조치의 원시 문자열 값입니다 (예: 'permitted', 'denied', 'disconnected')
app_name principal.application 주 구성원이 사용하는 애플리케이션의 이름입니다 (예: 'CLI')를 입력합니다. 이벤트 ID 111008, 111009, 111010의 경우 message_details에서 추출됩니다.
assigned_ipv4 해당 사항 없음 파싱되더라도 이 필드는 UDM의 IDM 객체에 매핑되지 않습니다.
assigned_ipv6 해당 사항 없음 파싱되더라도 이 필드는 UDM의 IDM 객체에 매핑되지 않습니다.
bytes_rcv network.received_bytes 세션에서 수신된 바이트 수입니다. 이벤트 ID 113019의 log_mssg에서 추출됨
bytes_sent network.sent_bytes 세션에서 전송된 바이트 수입니다. 이벤트 ID 113019의 log_mssg에서 추출됨
cipher network.tls.cipher SSL 세션에 사용되는 암호화입니다. 이벤트 유형 725012의 message_info에서 추출했습니다.
cisco_message_number security_result.rule_name eventtype 필드에서 추출한 Cisco 메시지 번호입니다.
cisco_severity security_result.severity_details eventtype 필드에서 추출한 원시 Cisco 심각도 수준입니다.
command 해당 사항 없음 파싱되더라도 이 필드는 UDM의 IDM 객체에 매핑되지 않습니다.
cumulative_total_count.key security_result.outcomes.key 'cumulative_total_count' 키가 security_result.outcomes 배열에 추가됩니다.
cumulative_total_count.value security_result.outcomes.value message_info에서 추출한 누적 총 개수의 값입니다.
current_average_rate.key security_result.outcomes.key 'current_average_rate' 키가 security_result.outcomes 배열에 추가됩니다.
current_average_rate.value security_result.outcomes.value message_info에서 추출한 현재 평균 요금 값입니다.
current_burst_rate.key security_result.outcomes.key 'current_burst_rate' 키가 security_result.outcomes 배열에 추가됩니다.
current_burst_rate.value security_result.outcomes.value message_info에서 추출한 현재 버스트 비율 값입니다.
desc metadata.description 로그 메시지에서 추출한 이벤트 설명입니다. 더 구체적인 설명을 사용할 수 없는 경우 사용됩니다.
description metadata.description 가능한 경우 로그 메시지에서 추출한 이벤트에 대한 자세한 설명입니다.
destination_ip target.ip, target.asset.ip 다양한 로그 메시지 형식에서 추출된 대상 IP 주소입니다.
destination_ip_port target.port 또는 network.application_protocol 다양한 로그 메시지 형식에서 추출한 대상 포트입니다. 추출된 값이 숫자가 아니면 애플리케이션 프로토콜로 처리됩니다.
dst_email target.user.email_addresses 또는 target.user.userid message_info에서 추출한 대상 이메일 주소 또는 사용자 ID입니다. 값이 이메일 형식과 일치하면 email_addresses에 추가되고, 그렇지 않으면 userid로 사용됩니다.
dst_host target.hostname message_info에서 추출한 대상 호스트 이름입니다.
dst_ip target.ip, target.asset.ip 기본 grok 패턴 또는 기타 특정 패턴에서 추출된 대상 IP 주소입니다.
dst_port target.port 기본 grok 패턴 또는 기타 특정 패턴에서 추출한 대상 포트입니다.
duration network.session_duration message_details에서 추출되어 초로 변환된 세션의 지속 시간입니다.
event_date @timestamp 원시 로그의 다양한 타임스탬프 필드에서 구성되고 date 필터를 사용하여 파싱된 이벤트의 날짜와 시간입니다.
event_id metadata.product_event_type (일부) event_severity와 함께 사용하여 metadata.product_event_type 필드를 형성합니다.
event_name metadata.product_event_type (일부) 사용 가능한 경우 event_severityevent_type과 함께 사용하여 metadata.product_event_type 필드를 형성합니다.
event_severity metadata.product_event_type (일부), security_result.severity, is_alert, is_significant event_id 또는 event_nameevent_type와 함께 사용하여 metadata.product_event_type 필드를 형성합니다. security_result.severity, is_alert, is_significant 필드를 파생하는 데도 사용됩니다.
event_type metadata.product_event_type (일부) 사용 가능한 경우 event_nameevent_severity과 함께 사용하여 metadata.product_event_type 필드를 형성합니다.
eventtype metadata.product_event_type, security_result.rule_name, security_result.severity_details, security_result.severity metadata.product_event_type, security_result.rule_name, security_result.severity_details, security_result.severity 필드를 파생하는 데 사용되는 이벤트 유형 문자열입니다.
fragment_id security_result.about.resource.id 이벤트 ID 209005의 message_details에서 추출한 IP 프래그먼트의 ID입니다.
group principal.group.group_display_name, principal.user.group_identifiers, target.user.group_identifiers 다양한 로그 메시지 형식에서 추출한 그룹 이름입니다.
group_name principal.group.group_display_name 호스트 이름인 경우 group 필드에서 추출된 그룹 이름입니다.
has_principal_ip 해당 사항 없음 논리에 사용되는 내부 변수로 UDM에 매핑되지 않습니다.
has_target_ip 해당 사항 없음 논리에 사용되는 내부 변수로 UDM에 매핑되지 않습니다.
hostname principal.hostname, principal.asset.hostname 다양한 로그 메시지 형식에서 추출한 주체의 호스트 이름입니다.
hostname2 principal.hostname, principal.asset.hostname hostname를 사용할 수 없는 경우 대체로 추출된 주 구성원의 호스트 이름입니다.
icmp_code 해당 사항 없음 파싱되더라도 이 필드는 UDM의 IDM 객체에 매핑되지 않습니다.
icmp_dst_ip target.ip, target.asset.ip ICMP 오류 메시지의 대상 IP 주소입니다.
icmp_id 해당 사항 없음 파싱되더라도 이 필드는 UDM의 IDM 객체에 매핑되지 않습니다.
icmp_src_ip principal.ip, principal.asset.ip ICMP 오류 메시지의 소스 IP 주소입니다.
icmp_type 해당 사항 없음 파싱되더라도 이 필드는 UDM의 IDM 객체에 매핑되지 않습니다.
intermediary_ip principal.ip, principal.asset.ip 이벤트 ID 111010의 message_info에서 추출된 중개자 IP 주소입니다.
invalid_ip 해당 사항 없음 논리에 사용되는 내부 변수로 UDM에 매핑되지 않습니다.
ip_1 principal.ip, principal.asset.ip 소스 및 대상 IP가 동일한 경우 대체로 추출된 소스 IP 주소입니다.
ip_2 target.ip, target.asset.ip 소스 및 대상 IP가 동일한 경우 대체로 추출된 대상 IP 주소입니다.
ipprotocol network.ip_protocol 다양한 로그 메시지 형식에서 추출되어 대문자로 변환된 IP 프로토콜입니다.
issuer network.tls.client.certificate.issuer 이벤트 ID 717037의 message_details에서 추출된 피어 인증서 발급자입니다.
local_proxy_ip intermediary.ip 이벤트 ID 713041의 message_details에서 추출된 로컬 프록시 IP 주소입니다.
log_mssg security_result.description, sr.action security_result.description 필드를 채우고 인증 작업을 추출하는 데 사용됩니다.
login security_result.summary message_info에서 추출한 로그인 상태입니다.
max_configured_rate.key security_result.outcomes.key 'max_configured_rate' 키가 security_result.outcomes 배열에 추가됩니다.
max_configured_rate.value security_result.outcomes.value message_info에서 추출한 최대 구성된 비율 값입니다.
message_details 다양한 필드 이벤트에 관한 세부정보가 포함된 로그 메시지의 기본 부분입니다. 이벤트 ID에 따라 다양한 grok 패턴을 사용하여 파싱됩니다.
message_info metadata.description 사용 가능한 경우 metadata.description 필드를 채우는 데 사용됩니다.
observer observer.hostname 또는 observer.ip 로그 메시지에서 추출한 관찰자 호스트 이름 또는 IP 주소입니다.
observer_ip observer.ip observer 필드에서 추출된 관찰자 IP 주소입니다.
peer_type 해당 사항 없음 파싱되더라도 이 필드는 UDM의 IDM 객체에 매핑되지 않습니다.
policy target.resource.name 이벤트 ID 113003의 message_details에서 추출한 정책 이름입니다.
policy_name target.resource.name 정책 이름입니다. 이벤트 ID 113009 및 113011의 message_details에서 추출됩니다.
principal_ip principal.ip, principal.asset.ip 이벤트 ID 113009의 message_details에서 추출된 주 구성원 IP 주소입니다.
privilege_level_from 해당 사항 없음 파싱되더라도 이 필드는 UDM의 IDM 객체에 매핑되지 않습니다.
privilege_level_to 해당 사항 없음 파싱되더라도 이 필드는 UDM의 IDM 객체에 매핑되지 않습니다.
process principal.process.command_line 이벤트 ID 711004의 message_details에서 추출한 프로세스 이름입니다.
protocol network.ip_protocol 또는 network.application_protocol 다양한 로그 메시지 형식에서 추출된 이벤트에 사용된 프로토콜입니다. 프로토콜이 표준 IP 프로토콜 (ICMP, TCP, UDP, ESP)인 경우 network.ip_protocol에 매핑되고, 그렇지 않으면 network.application_protocol에 매핑됩니다.
reason security_result.description 이벤트 ID 113016의 message_details에서 추출한 이벤트 이유입니다.
remote_proxy_ip intermediary.ip 이벤트 ID 713041의 message_details에서 추출된 원격 프록시 IP 주소입니다.
retrieved_file target.file.full_path message_info에서 추출된 가져온 파일의 경로입니다.
security_action security_result.action 이벤트 컨텍스트를 기반으로 파서에 의해 파생된 보안 작업입니다.
security_category security_result.category 이벤트 컨텍스트를 기반으로 파서가 도출한 보안 카테고리입니다.
security_result.description security_result.description 로그 메시지에서 추출되거나 파생된 보안 결과에 대한 설명입니다.
security_result.severity security_result.severity event_severity 필드에서 파생된 보안 결과의 심각도입니다.
security_result.summary security_result.summary 로그 메시지에서 추출되거나 파생된 보안 결과의 요약입니다.
sent_bytes network.sent_bytes message_info에서 추출한 전송된 바이트 수입니다.
ses_id network.session_id message_info에서 추출한 세션 ID입니다.
session_id network.session_id message_info에서 추출한 세션 ID입니다.
sess_type principal.hostname, principal.asset.hostname log_mssg에서 추출되며 hostname를 사용할 수 없는 경우 호스트 이름으로 사용되는 세션 유형입니다.
source_ip principal.ip, principal.asset.ip 다양한 로그 메시지 형식에서 추출된 소스 IP 주소입니다.
source_ip_port principal.port 다양한 로그 메시지 형식에서 추출한 소스 포트입니다.
src_email principal.user.email_addresses 또는 principal.user.userid message_info에서 추출한 소스 이메일 주소 또는 사용자 ID입니다. 값이 이메일 형식과 일치하면 email_addresses에 추가되고, 그렇지 않으면 userid로 사용됩니다.
src_ip principal.ip, principal.asset.ip 기본 grok 패턴 또는 기타 특정 패턴에서 추출된 소스 IP 주소입니다.
src_port principal.port 기본 grok 패턴 또는 기타 특정 패턴에서 추출된 소스 포트입니다.
src_user principal.user.user_display_name 이벤트 ID 713049 및 713120의 경우 message_details에서 추출된 소스 사용자 표시 이름입니다.
subject network.tls.client.certificate.subject 이벤트 ID 717037의 message_details에서 추출한 피어 인증서의 제목입니다.
summary security_result.summary 이벤트 ID 113016의 message_details에서 추출한 이벤트 요약입니다.
target_host target.hostname 이벤트 ID 113004의 message_details에서 추출된 대상 호스트 이름입니다.
target_ip target.ip, target.asset.ip 이벤트 ID 113004의 message_details에서 추출된 타겟 IP 주소입니다.
target_user target.user.userid 이벤트 ID 113003의 message_details에서 추출된 타겟 사용자 ID입니다.
task_duration 해당 사항 없음 파싱되더라도 이 필드는 UDM의 IDM 객체에 매핑되지 않습니다.
tcp_dst_ip target.ip, target.asset.ip ICMP 오류 메시지의 원래 TCP 페이로드에서 가져온 대상 IP 주소입니다.
tcp_dst_port 해당 사항 없음 파싱되더라도 이 필드는 UDM의 IDM 객체에 매핑되지 않습니다.
tcp_src_ip principal.ip, principal.asset.ip ICMP 오류 메시지의 원래 TCP 페이로드에서 가져온 소스 IP 주소입니다.
tcp_src_port 해당 사항 없음 파싱되더라도 이 필드는 UDM의 IDM 객체에 매핑되지 않습니다.
threshold 해당 사항 없음 파싱되더라도 이 필드는 UDM의 IDM 객체에 매핑되지 않습니다.
tls_version network.tls.version 이벤트 ID 725002의 message_details에서 추출된 TLS 버전입니다.
ts @timestamp date 필터를 사용하여 파싱된 이벤트의 타임스탬프입니다.
ts_day @timestamp (일부) 타임스탬프의 월 중 일로, @timestamp 필드를 구성하는 데 사용됩니다.
ts_month @timestamp (일부) 타임스탬프의 월로, @timestamp 필드를 구성하는 데 사용됩니다.
ts_time @timestamp (일부) 타임스탬프의 시간으로, @timestamp 필드를 구성하는 데 사용됩니다.
ts_year @timestamp (일부) 타임스탬프의 연도로, @timestamp 필드를 구성하는 데 사용됩니다.
tunnel_type 해당 사항 없음 파싱되더라도 이 필드는 UDM의 IDM 객체에 매핑되지 않습니다.
user principal.user.userid, target.user.userid 다양한 로그 메시지 형식에서 추출된 사용자 ID입니다.
user_agent network.http.user_agent 이벤트 ID 722055의 message_details에서 추출된 사용자 에이전트 문자열입니다.
user_attr.key principal.user.attribute.labels.key 이벤트 ID 734003 및 734001의 message_details에서 추출된 사용자 속성의 키입니다.
user_attr.value principal.user.attribute.labels.value 이벤트 ID 734003 및 734001의 message_details에서 추출된 사용자 속성 값입니다.
userid principal.user.userid 이벤트 ID 106103의 message_details에서 추출된 사용자 ID입니다.
username principal.user.userid 이벤트 ID 111008, 111009, 111010, 113008의 message_details에서 추출된 사용자 이름입니다.
해당 사항 없음 metadata.vendor_name 'CISCO'로 하드코딩됩니다.
해당 사항 없음 metadata.product_name 'ASA VPN' 또는 'VPN'으로 하드코딩됩니다.
해당 사항 없음 metadata.event_type 특정 필드 및 이벤트 ID의 존재 여부에 따라 파서 로직에 의해 결정됩니다. GENERIC_EVENT, NETWORK_CONNECTION, STATUS_UPDATE, NETWORK_FTP, USER_LOGIN, USER_LOGOUT, NETWORK_UNCATEGORIZED, USER_UNCATEGORIZED, NETWORK_FLOW일 수 있습니다.
해당 사항 없음 metadata.log_type 'CISCO_VPN'으로 하드코딩됩니다.
해당 사항 없음 metadata.event_timestamp 파싱된 @timestamp 필드에서 복사됩니다.
해당 사항 없음 extensions.auth.type 이벤트 컨텍스트에 따라 'VPN', 'AUTHTYPE_UNSPECIFIED' 또는 'MACHINE'으로 설정됩니다.
해당 사항 없음 security_result.about.resource.type 이벤트 ID 209005의 경우 'PACKET FRAGMENT'로 설정됩니다.
해당 사항 없음 is_alert 심각도가 높은 이벤트 (event_severity 0 또는 1)의 경우 true로 설정됩니다.
해당 사항 없음 is_significant 심각도가 높은 이벤트 (event_severity 0 또는 1)의 경우 true로 설정됩니다.

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