위협 로그를 사용하면 네트워크에서 감지된 위협을 감사, 확인, 분석할 수 있습니다.
Cloud Next Generation Firewall은 레이어 7 검사를 위해 모니터링 중인 트래픽에 대한 위협을 감지하면 위협 세부정보가 있는 원래 프로젝트에 로그 항목을 생성합니다. 위협 로그를 보고 검사하려면 로그 탐색기에서 networksecurity.googleapis.com/firewall_threat
로그를 검색합니다.
위협 페이지에서도 이러한 위협 로그를 볼 수 있습니다.
이 페이지에서는 위협이 감지될 때 생성되는 위협 로그의 형식과 구조를 설명합니다.
위협 로그 형식
Cloud NGFW는 특정 영역의 가상 머신(VM) 인스턴스와 주고받는 모니터링 트래픽에서 감지된 각 위협에 대해 Cloud Logging에 로그 기록 항목을 만듭니다. 로그 기록은 LogEntry의 JSON 페이로드 필드에 포함됩니다.
일부 로그 필드는 한 필드에 두 가지 이상의 데이터를 포함하는 다중 필드 형식입니다. 예를 들어 connection
필드는 Connection
형식이며 서버 IP 주소 및 포트, 클라이언트 IP 주소 및 포트, 프로토콜 번호가 단일 필드에 포함됩니다.
다음 표에서는 위협 로그 필드의 형식을 설명합니다.
필드 | 유형 | 설명 |
---|---|---|
connection
|
Connection
|
위협이 감지된 트래픽과 연결된 연결 파라미터를 설명하는 5-튜플입니다. |
action
|
string
|
위협이 감지된 패킷에서 수행된 작업입니다. 이 작업은 보안 프로필에 지정된 기본 작업 또는 재정의 작업일 수 있습니다. |
threatDetails
|
ThreatDetails
|
감지된 위협의 세부정보입니다. |
securityProfileGroupDetails
|
SecurityProfileGroupDetails
|
가로챈 트래픽에 적용된 보안 프로필 그룹의 세부정보입니다. |
interceptVpc
|
VpcDetails
|
위협이 감지된 VM 인스턴스와 연결된 가상 프라이빗 클라우드(VPC) 네트워크의 세부정보입니다. |
interceptInstance
|
InterceptInstance
|
위협이 감지된 VM 인스턴스의 세부정보입니다. |
Connection
필드 형식
다음 표에서는 Connection
필드의 형식을 설명합니다.
필드 | 유형 | 설명 |
---|---|---|
clientIp
|
string
|
클라이언트 IP 주소입니다. 클라이언트가 Compute Engine VM인 경우 clientIp 는 기본 내부 IP 주소이거나 VM 네트워크 인터페이스의 별칭 IP 범위에 있는 주소입니다. 외부 IP 주소는 표시되지 않습니다. 로그에는 VM 인스턴스의 TCP 덤프와 유사한, 패킷 헤더에서 확인된 VM 인스턴스의 IP 주소가 표시됩니다.
|
clientPort
|
integer
|
클라이언트 포트 번호입니다. |
serverIp
|
string
|
서버 IP 주소입니다. 서버가 Compute Engine VM인 경우 serverIp 는 기본 내부 IP 주소이거나 VM 네트워크 인터페이스의 별칭 IP 범위에 있는 주소입니다. 외부 IP 주소는 연결에 사용된 경우에도 표시되지 않습니다.
|
serverPort
|
integer
|
서버 포트 번호입니다. |
protocol
|
string
|
연결의 IP 프로토콜입니다. |
ThreatDetails
필드 형식
다음 표에서는 ThreatDetails
필드의 형식을 설명합니다.
필드 | 유형 | 설명 |
---|---|---|
id
|
string
|
고유한 Palo Alto Networks 위협 식별자입니다. |
threat
|
string
|
감지된 위협의 이름입니다. |
description
|
string
|
감지된 위협에 대한 자세한 설명입니다. |
direction
|
string
|
트래픽의 방향. 예를 들면 client_to_server 또는 server_to_client 입니다.
|
application
|
string
|
감지된 위협과 연결된 애플리케이션입니다. |
severity
|
string
|
감지된 위협과 관련된 심각도입니다. 자세한 내용은 위협 심각도 수준을 참고하세요. |
detectionTime
|
string
|
위협이 감지된 시간입니다. |
category
|
string
|
감지된 위협의 하위유형입니다. 예를 들면 CODE_EXECUTION 입니다.
|
uriOrFilename
|
string
|
관련 위협의 URI 또는 파일 이름입니다(해당하는 경우). |
type
|
string
|
감지된 위협의 유형입니다. 예를 들면 SPYWARE 입니다.
|
repeatCount
|
integer
|
5초 이내에 확인된 클라이언트 IP 주소, 서버 IP 주소, 위협 유형이 동일한 세션 수입니다. |
cves
|
string
|
위협과 관련된 CVE(Common Vulnerabilities and Exposure) 목록입니다. 예를 들면 CVE-2021-44228-Apache Log4j remote code execution vulnerability 입니다.
|
SecurityProfileGroupDetails
필드 형식
다음 표에서는 SecurityProfileGroupDetails
필드의 형식을 설명합니다.
필드 | 유형 | 설명 |
---|---|---|
securityProfileGroupId
|
string
|
트래픽에 적용된 보안 프로필 그룹 이름입니다. |
organizationId
|
integer
|
VM 인스턴스가 속한 조직 ID입니다. |
VpcDetails
필드 형식
다음 표에서는 VpcDetails
필드의 형식을 설명합니다.
필드 | 유형 | 설명 |
---|---|---|
vpc
|
string
|
가로챈 트래픽과 연결된 VPC 네트워크의 이름입니다. |
projectId
|
string
|
VPC 네트워크와 연결된 Google Cloud 프로젝트의 이름입니다. |
InterceptInstance
필드 형식
다음 표에서는 InterceptInstance
필드의 형식을 설명합니다.
필드 | 유형 | 설명 |
---|---|---|
projectId
|
string
|
가로챈 트래픽과 연결된 Google Cloud 프로젝트의 이름입니다. |
vm
|
string
|
가로챈 트래픽과 연결된 VM 인스턴스의 이름입니다. |
방화벽 로그와의 위협 로그 상관관계
패킷이 로깅이 사용 설정된 방화벽 규칙과 일치하면 Cloud NGFW는 방화벽 규칙 로깅 항목을 로깅합니다. 이 항목에는 소스 IP 주소, 대상 IP 주소, 패킷 검사 시간과 같은 필드가 포함됩니다. 이러한 방화벽 규칙 로그를 보려면 로그 보기를 참고하세요.
로깅이 사용 설정된 레이어 7 검사를 위한 방화벽 정책 규칙이 있는 경우 Cloud NGFW는 먼저 일치하는 패킷의 방화벽 규칙 로깅 항목을 로깅합니다. 그런 다음 레이어 7 검사를 위해 패킷을 방화벽 엔드포인트로 전송합니다. 방화벽 엔드포인트는 패킷에서 위협을 분석합니다. 위협이 감지되면 별도의 위협 로그가 생성됩니다. 이 위협 로그에는 위협 유형, 위협 소스, 위협 대상 등의 필드가 포함됩니다. 위협 로그를 보려면 위협 보기를 참고하세요.
방화벽 규칙 로그와 위협 로그의 필드를 비교하여 위협을 트리거한 패킷을 식별하고 적절한 조치를 취하여 문제를 해결할 수 있습니다.
예를 들어 다음과 같이 설정된 방화벽 정책 규칙이 있습니다.
- 소스 IP 주소:
192.0.2.0
- 소스 포트:
47644
- 대상 IP 주소:
192.0.2.1
- 대상 포트:
80
- 로깅:
Enabled
이 규칙과 연결된 위협 로그를 보려면 로그 탐색기 페이지로 이동합니다. 쿼리 창의 쿼리 편집기 필드에 다음 쿼리를 붙여넣습니다.
resource.type="networksecurity.googleapis.com/FirewallEndpoint" jsonPayload.source_ip_address="192.0.2.0" jsonPayload.source_port="47644" jsonPayload.destination_ip_address="192.0.2.1" jsonPayload.destination_port="80"
쿼리 결과 섹션에 다음과 같은 위협 로그가 표시됩니다.
{ insertId: "0ac7f359-263f-4428-8ded-ac655d8a09db" jsonPayload: { action: "reset-server" alert_severity: "HIGH" alert_time: "2023-11-28T19:07:15Z" category: "info-leak" ▸ cves: [6] } destination_ip_address: "192.0.2.1" destination_port: "80" details: "This signature detects Microsoft Windows win.ini access attempts. A successful attack could allow an attacker to access sensitive information and conduct further attacks." direction: "CLIENT_TO_SERVER" ip_protocol: "tcp" name: "Microsoft Windows win.ini Access Attempt Detected" network: "projects/XXXX/global/networks/fwplus-vpc. repeat_count: "1" security_profile_group: "organizations/XXXX/locations/global/securityprofileGroups/XXXX-fwplus-spg" source_ip_address: "192.0.2.0" source_port: "47644" threat_id: "30851" type: "vulnerability" uri_or_filename: logName: "projects/XXXX/logs/networksecurity.googleapis.com%2Ffirewall_threat" receiveTimestamp: "2023-11-28T19:08:49.841883684Z" ▸ resource: {2} } timestamp: "2023-11-28T19:08:47.560012184Z"
마찬가지로 이 규칙과 연결된 방화벽 로그를 보려면 로그 탐색기 페이지로 이동하세요. 쿼리 창의 쿼리 편집기 필드에 다음 쿼리를 붙여넣습니다.
jsonPayload.rule_details.action="APPLY_SECURITY_PROFILE_GROUP" jsonPayload.connection.src_ip="192.0.2.0" jsonPayload.connection.src_port="47644" jsonPayload.connection.dest_ip="192.0.2.1" jsonPayload.connection.dest_port="80"
쿼리 결과 섹션에 다음과 같은 방화벽 로그가 표시됩니다.
{ insertId: "qn82vdg109q3r9" jsonPayload: { connection: { } dest_ip: "192.0.2.1" dest_port: 80 protocol: 6 src_ip: "192.0.2.0" src_port: 47644 disposition: "INTERCEPTED" ►instance: {4} ▸ remote_instance: {4} ▸ remote_vpc: {3} rule_details: { action: "APPLY_SECURITY_PROFILE_GROUP" apply_security_profile_fallback_action: "UNSPECIFIED" direction: "INGRESS" ▸ ip_port_info: [1] ▼ priority: 6000 reference: "network: fwplus-vpc/firewallPolicy: fwplus-fwpolicy" source_range: [ 1 0: "192.0.2.0/24" target_secure_tag: [ 0: "tagValues/281479199099651" ] } vpc: { project_id:XXXX subnetwork_name: "fwplus-us-central1-subnet" vpc_name: "fwplus-vpc" } } logName: "projects/XXXX/logs/compute.googleapis.com%2Ffirewall", receiveTimestamp: "2023-11-28T19:08:46.749244092Z" resource: {2} timestamp: "2023-11-28T19:08:40.207465099Z" }
위협 로그 쿼리와 방화벽 로그 쿼리를 모두 사용하면 두 로그 간의 상관관계를 확인할 수 있습니다. 다음 표에는 방화벽 로그 필드가 해당하는 위협 로그 필드에 매핑되어 있습니다.
방화벽 로그 필드 | 위협 로그 필드 | 설명 |
---|---|---|
src_ip
|
source_ip_address
|
방화벽 로그의 소스 IP 주소가 위협 로그의 소스 IP 주소와 상관되어 잠재적 위협의 출처를 식별합니다. |
src_port
|
source_port
|
방화벽 로그의 소스 포트가 위협 로그의 소스 포트와 상관되어 잠재적 위협에 사용된 소스 포트를 식별합니다. |
dest_ip
|
destination_ip_address
|
방화벽 로그의 대상 IP 주소가 위협 로그의 대상 IP 주소와 상관되어 잠재적 위협의 대상을 정확하게 파악합니다. |
dest_port
|
destination_port
|
방화벽 로그의 대상 포트가 위협 로그의 대상 포트와 상관되어 잠재적 위협에 사용된 대상 포트를 식별합니다. |