> For the complete documentation index, see [llms.txt](https://docs.panther.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.panther.com/ko/data-onboarding/supported-logs/aws/vpc.md).

# AWS VPC

## 개요

Panther는 AWS S3를 통해 Amazon Web Services(AWS) Virtual Private Cloud(VPC) 로그 수집을 지원합니다.

## AWS VPC 로그를 Panther에 온보딩하는 방법

### 1단계: AWS에서 로깅 구성

AWS 구성은 VPC DNS 또는 흐름 로그를 온보딩하는지에 따라 다릅니다. DNS와 흐름 로그를 모두 온보딩하는 경우 아래 두 탭의 절차를 모두 따라야 합니다.

{% tabs %}
{% tab title="VPC DNS" %}
AWS의 일부 구성을 통해 이 통합 기능을 사용하여 DNS 쿼리를 모니터링할 수 있습니다. 악의적인 행위자는 데이터 도난, C2, DNS 터널링, 캐시 포이즈닝, DNS 하이재킹 등에 DNS를 사용할 수 있습니다. 네트워크의 장치에서 수행된 쿼리와 수신된 응답을 로깅하면 사전 알러트 및 조사에 유용할 수 있습니다.

아래 지침은 VPC 내의 AWS 서비스에서 수행된 쿼리를 S3 버킷에 기록하는 방법을 설명합니다. 쿼리 로깅 구성은 Route 53 내에서 이루어지며, 지정한 리전의 VPC에 적용됩니다. 구성은 리전마다 필요하지만 해당 리전의 여러 VPC에 적용할 수 있습니다.

1. AWS 계정에 로그인합니다.
2. 로그를 기록할 계획인 리전의 Route 53 서비스로 이동합니다.
3. 왼쪽에서 Resolver 아래의 항목을 클릭 **쿼리 로깅**.

   * “쿼리 로깅 구성” 페이지로 이동해야 합니다. 그렇지 않으면 “Query Logging” 링크를 다시 클릭해 보세요.

   ![AWS의 쿼리 로깅 구성 페이지 중간에 구성된 항목이 없다는 메시지가 표시됩니다.](/files/432f2f2c7b4f5f32d94db1a02629ccbd10d83847)
4. 오른쪽 상단 모서리에서 다음을 클릭합니다 **쿼리 로깅 구성**.
5. 다음 페이지에서 쿼리 로깅 구성 양식을 작성합니다:
   * **이름**: 설명적인 이름을 입력하세요.
   * **쿼리 로그 대상**: 선택 `S3 버킷`.
   * **Amazon S3 버킷**: 쿼리 로깅을 구성할 S3 버킷을 선택합니다.
   * **VPC 로그**: DNS 쿼리 로깅을 시작할 모든 VPC를 추가합니다. VPC를 검색한 다음 클릭 **VPC 추가**.\
     ![](/files/5b389bf0e4f1ef31ba9f6a9b57c78b20e53fac4c)
6. 페이지 하단에서 **쿼리 로깅 구성**.
   * 몇 분 내에 다음 위치의 S3 버킷에서 로그를 수신하기 시작합니다. `s3://BucketName/BucketPrefix/AWSLogs/ACCOUNTID/vpcdnsquerylogs/VPCName/Year/Month/Day`
     {% endtab %}

{% tab title="VPC 흐름" %}
VPC 흐름 로깅을 구성하려면:

* AWS의 다음을 따르세요 [Amazon S3에 게시되는 흐름 로그를 생성합니다](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs-s3-create-flow-log.html) 문서.
  * 아래 **로그 레코드 형식**, 선택 **사용자 지정 형식**, 그런 다음 **캡처하려는 속성을 선택합니다**. ( **AWS 기본 형식** 다음과 같은 필드를 제외합니다 `instance-id`.)\ <br>

    <figure><img src="/files/b4170f487b870941cc20ebfbe8bdaabcf5e64c94" alt=""><figcaption></figcaption></figure>

{% endtab %}
{% endtabs %}

### 2단계: Panther에 새 AWS VPC 소스 생성

로그가 스트리밍될 S3 버킷을 나타내는 Panther의 AWS VPC 소스를 설정해야 합니다.

{% hint style="info" %}
DNS와 흐름 로그를 모두 온보딩하는 경우:

* 두 종류의 로그를 모두 동일한 S3 버킷으로 전송하도록 구성한 경우 Panther에 AWS VPC 로그 소스 하나를 생성할 수 있습니다.
* DNS와 흐름 로그를 서로 다른 S3 버킷으로 전송하도록 구성한 경우 이 단계를 두 번 완료해야 합니다(Panther에 두 개의 로그 소스 설정).
  {% endhint %}

1. Panther Console의 왼쪽 탐색 표시줄에서 다음을 클릭합니다: **로그 소스**.
2. 클릭합니다 **새로 만들기**.
3. "AWS VPC,"를 검색한 다음 해당 타일을 클릭합니다.
4. 클릭합니다 **설정 시작**.
5. 다음을 따르세요: [데이터 전송을 위해 S3를 구성하는 Panther의 문서](/ko/data-onboarding/data-transports/aws/s3.md).

### DNS 이벤트 예시

{% code overflow="wrap" %}

```json
{"version":"1.100000","account_id":"0123456789012","region":"us-west-2","vpc_id":"vpc-c26c48ba","query_timestamp":"2022-10-07T21:39:49Z","query_name":"ec2messages.us-west-2.amazonaws.com.","query_type":"A","query_class":"IN","rcode":"NOERROR","answers":[{"Rdata":"52.94.176.105","Type":"A","Class":"IN"}],"srcaddr":"172.31.46.187","srcport":"52635","transport":"UDP","srcids":{"instance":"i-09d9aa4e31675db61"}}
```

{% endcode %}

## Panther가 관리하는 디택션

참고 [Panther가 관리하는](https://docs.panther.com/detections/panther-managed) AWS VPC에 대한 룰 [panther-analysis GitHub 저장소](https://github.com/panther-labs/panther-analysis/tree/main/rules/aws_vpc_flow_rules).

## Data Explorer에서 로그 쿼리하기

Panther의 [데이터 탐색기](/ko/search/data-explorer.md)에서 사용할 예제 SQL 쿼리를 참조하세요. [VPC 로그 쿼리](/ko/search/data-explorer/example-queries/vpc-flow-logs-queries.md).

## 지원되는 AWS VPC 로그 유형

Panther는 [AWS.VPCDns](#aws.vpcdns) 및 [AWS.VPCFlow](#aws.vpcflow).

### AWS.VPCDns

DNS 쿼리 로그는 VPC DNS resolver가 Route 53으로 전달하는 쿼리를 나타냅니다. 자세한 내용은 [AWS의 Resolver 쿼리 로그 형식 문서를 참조하세요](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-query-logs-format.html).

```yaml
스키마: AWS.VPCDns
파서:
  네이티브:
    이름: AWS.VPCDns
설명: DNS 쿼리 로그는 VPC DNS resolver가 Route 53으로 전달하는 쿼리를 나타냅니다.
참조 URL: https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-query-logs-format.html
필드:
  - 이름: version
    필수: true
    설명: 쿼리 로그 형식의 버전 번호입니다. 로그에 필드를 추가하거나 기존 필드의 형식을 변경하면 이 값이 증가합니다.
    유형: string
  - 이름: account_id
    필수: true
    설명: VPC를 생성한 AWS 계정의 ID입니다.
    유형: string
    지표:
      - aws_account_id
  - 이름: region
    필수: true
    설명: VPC를 생성한 AWS 리전입니다.
    유형: string
  - 이름: vpc_id
    필수: true
    설명: 쿼리가 시작된 VPC의 ID입니다.
    유형: string
  - 이름: query_timestamp
    필수: true
    설명: 쿼리가 제출된 날짜와 시간으로, ISO 8601 형식과 UTC(협정 세계시)입니다.
    유형: timestamp
    시간 형식: rfc3339
    이벤트 시간 여부: true
  - 이름: query_name
    필수: true
    설명: 쿼리에 지정된 도메인 이름(example.com) 또는 하위 도메인 이름(www.example.com)입니다.
    유형: string
  - 이름: query_type
    필수: true
    설명: 요청에 지정된 DNS 레코드 유형 또는 ANY입니다. Route 53에서 지원하는 유형에 대한 정보는.
    유형: string
  - 이름: query_class
    필수: true
    설명: 쿼리의 클래스입니다.
    유형: string
  - 이름: rcode
    필수: true
    설명: Resolver가 DNS 쿼리에 대한 응답으로 반환한 DNS 응답 코드입니다. 응답 코드는 쿼리가 유효했는지 여부를 나타냅니다. 가장 일반적인 응답 코드는 NOERROR이며, 이는 쿼리가 유효했음을 의미합니다. 응답이 유효하지 않으면 Resolver는 그 이유를 설명하는 응답 코드를 반환합니다. 가능한 응답 코드 목록은 IANA 웹사이트의 DNS RCODE를 참조하세요.
    유형: string
  - 이름: answers
    필수: true
    설명: 쿼리에 대한 응답
    유형: array
    요소:
      유형: object
      필드:
        - 이름: Rdata
          필수: true
          설명: Resolver가 쿼리에 대한 응답으로 반환한 값입니다. 예를 들어 A 레코드의 경우 IPv4 형식의 IP 주소입니다. CNAME 레코드의 경우 CNAME 레코드의 도메인 이름입니다.
          유형: string
        - 이름: Type
          필수: true
          설명: Resolver가 쿼리에 대한 응답으로 반환하는 값의 DNS 레코드 유형(A, MX, CNAME 등)입니다.
          유형: string
        - 이름: Class
          필수: true
          설명: 쿼리에 대한 Resolver 응답의 클래스입니다.
          유형: string
  - 이름: srcaddr
    필수: true
    설명: 쿼리가 시작된 인스턴스의 IP 주소입니다.
    유형: string
    지표:
      - ip
  - 이름: srcport
    필수: true
    설명: 쿼리가 시작된 인스턴스의 포트입니다.
    유형: string
  - 이름: transport
    필수: true
    설명: DNS 쿼리를 제출하는 데 사용된 프로토콜입니다.
    유형: string
  - 이름: srcids
    필수: true
    설명: DNS 쿼리가 시작되었거나 통과한 소스의 ID 목록입니다.
    유형: object
    필드:
      - 이름: instance
        설명: 쿼리가 시작된 인스턴스의 ID입니다.
        유형: string
        지표:
          - aws_instance_id
      - 이름: resolver-endpoint
        설명: DNS 쿼리를 온프레미스 DNS 서버로 전달하는 Resolver 엔드포인트의 ID입니다.
        유형: string
  - 이름: firewall_룰_group_id
    설명: 쿼리의 도메인 이름과 일치한 DNS Firewall 룰 그룹의 ID입니다. 이는 DNS Firewall이 작업이 알러트 또는 차단으로 설정된 룰과 일치를 찾은 경우에만 채워집니다.
    유형: string
  - 이름: firewall_룰_action
    설명: 쿼리의 도메인 이름과 일치한 룰에 의해 지정된 작업입니다. 이는 DNS Firewall이 작업이 알러트 또는 차단으로 설정된 룰과 일치를 찾은 경우에만 채워집니다.
    유형: string
  - 이름: firewall_domain_list_id
    설명: 쿼리의 도메인 이름과 일치한 룰에서 사용된 도메인 목록입니다. 이는 DNS Firewall이 작업이 알러트 또는 차단으로 설정된 룰과 일치를 찾은 경우에만 채워집니다.
    유형: string
```

### AWS.VPCFlow

VPC Flow는 VPC NetFlow 로그로, EC2의 네트워크 트래픽을 계층 3으로 표현한 것입니다.

Panther가 VPC NetFlow 로그를 올바르게 수집하려면, 헤더가 있는 Parquet 또는 CSV 형식으로 S3에서 직접 와야 합니다.

자세한 내용은 다음을 참조하세요: [흐름 로그 레코드 예시를 제공하는 AWS 문서](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs-records-examples.html).

```yaml
스키마: AWS.VPCFlow
파서:
  네이티브:
    이름: AWS.VPCFlow
설명: VPC Flow는 VPC NetFlow 로그로, EC2의 네트워크 트래픽을 계층 3으로 표현한 것입니다.
참조 URL: https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs-records-examples.html
필드:
  - 이름: version
    설명: VPC Flow Logs 버전입니다. 기본 형식을 사용하면 버전은 2이고, 사용자 지정 형식을 지정하면 버전은 3입니다.
    유형: bigint
  - 이름: account
    설명: 흐름 로그의 AWS 계정 ID입니다.
    유형: string
    지표:
      - aws_account_id
  - 이름: interfaceId
    설명: 트래픽이 기록되는 네트워크 인터페이스의 ID입니다.
    유형: string
  - name: srcAddr
    설명: 들어오는 트래픽의 소스 주소 또는 나가는 트래픽의 네트워크 인터페이스의 IPv4 또는 IPv6 주소입니다. 네트워크 인터페이스의 IPv4 주소는 항상 해당 프라이빗 IPv4 주소입니다.
    유형: string
    지표:
      - ip
  - name: dstAddr
    설명: 나가는 트래픽의 대상 주소 또는 들어오는 트래픽의 네트워크 인터페이스의 IPv4 또는 IPv6 주소입니다. 네트워크 인터페이스의 IPv4 주소는 항상 해당 프라이빗 IPv4 주소입니다.
    유형: string
    지표:
      - ip
  - name: srcPort
    description: 트래픽의 소스 포트입니다.
    유형: bigint
  - name: dstPort
    description: 트래픽의 대상 포트입니다.
    유형: bigint
  - 이름: protocol
    description: 트래픽의 IANA 프로토콜 번호입니다.
    유형: bigint
  - name: packets
    description: 흐름 동안 전송된 패킷 수입니다.
    유형: bigint
  - 이름: bytes
    description: 흐름 동안 전송된 바이트 수입니다.
    유형: bigint
  - 이름: 시작
    필수: true
    description: 흐름의 시작 시간(UTC)입니다.
    유형: timestamp
    시간 형식: rfc3339
  - name: end
    필수: true
    description: 흐름의 종료 시간(UTC)입니다.
    유형: timestamp
    시간 형식: rfc3339
  - 이름: action
    설명: 트래픽과 관련된 작업입니다. ACCEPT: 기록된 트래픽이 보안 그룹 또는 네트워크 ACL에 의해 허용되었습니다. REJECT: 기록된 트래픽이 보안 그룹 또는 네트워크 ACL에 의해 허용되지 않았습니다.
    유형: string
  - 이름: status
    필수: true
    설명: 흐름 로그의 로깅 상태입니다. OK: 데이터가 선택한 대상에 정상적으로 기록되고 있습니다. NODATA: 캡처 창 동안 네트워크 인터페이스로 들어오거나 나가는 네트워크 트래픽이 없었습니다. SKIPDATA: 캡처 창 동안 일부 흐름 로그 레코드가 건너뛰어졌습니다. 이는 내부 용량 제약 또는 내부 오류 때문일 수 있습니다.
    유형: string
  - 이름: vpcId
    설명: 트래픽이 기록되는 네트워크 인터페이스를 포함하는 VPC의 ID입니다.
    유형: string
  - 이름: subNetId
    설명: 트래픽이 기록되는 네트워크 인터페이스를 포함하는 서브넷의 ID입니다.
    유형: string
  - 이름: instanceId
    설명: 기록된 트래픽에 대한 네트워크 인터페이스와 연결된 인스턴스의 ID입니다. 해당 인스턴스가 본인 소유인 경우에만 적용됩니다. 요청자 관리 네트워크 인터페이스(예: NAT 게이트웨이의 네트워크 인터페이스)에는 '-' 기호가 반환됩니다.
    유형: string
    지표:
      - aws_instance_id
  - name: tcpFlags
    설명: 다음 TCP 플래그에 대한 비트마스크 값입니다. SYN: 2, SYN-ACK: 18, FIN: 1, RST: 4. ACK는 SYN과 함께 있을 때만 보고됩니다. TCP 플래그는 집계 간격 동안 OR 연산될 수 있습니다. 짧은 연결의 경우 플래그가 흐름 로그 레코드의 같은 줄에 설정될 수 있습니다. 예를 들어 SYN-ACK와 FIN의 경우 19, SYN과 FIN의 경우 3입니다.
    유형: bigint
  - 이름: trafficType
    description: '트래픽 유형: IPv4, IPv6 또는 EFA입니다.'
    유형: string
  - 이름: pktSrcAddr
    설명: 트래픽의 패킷 수준(원본) 소스 IP 주소입니다. 이 필드를 srcaddr 필드와 함께 사용하여 트래픽이 흐르는 중간 계층의 IP 주소와 트래픽의 원본 소스 IP 주소를 구분합니다. 예를 들어 트래픽이 NAT 게이트웨이의 네트워크 인터페이스를 통해 흐르거나, Amazon EKS의 pod IP 주소가 pod가 실행 중인 인스턴스 노드의 네트워크 인터페이스 IP 주소와 다른 경우입니다.
    유형: string
    지표:
      - ip
  - 이름: pktDstAddr
    설명: 트래픽의 패킷 수준(원본) 대상 IP 주소입니다. 이 필드를 dstaddr 필드와 함께 사용하여 트래픽이 흐르는 중간 계층의 IP 주소와 트래픽의 최종 대상 IP 주소를 구분합니다. 예를 들어 트래픽이 NAT 게이트웨이의 네트워크 인터페이스를 통해 흐르거나, Amazon EKS의 pod IP 주소가 pod가 실행 중인 인스턴스 노드의 네트워크 인터페이스 IP 주소와 다른 경우입니다.
    유형: string
    지표:
      - ip
  - name: pktSrcAwsService
    설명: 소스 IP 주소가 AWS 서비스에 해당하는 경우 pkt-srcaddr 필드에 대한 IP 주소 범위 하위 집합의 이름입니다. 가능한 값은 AMAZON | AMAZON_APPFLOW | AMAZON_CONNECT | API_GATEWAY | CHIME_MEETINGS | CHIME_VOICECONNECTOR | CLOUD9 | CLOUDFRONT | CODEBUILD | DYNAMODB | EC2 | EC2_INSTANCE_CONNECT | GLOBALACCELERATOR | KINESIS_VIDEO_STREAMS | ROUTE53 | ROUTE53_HEALTHCHECKS | S3 | WORKSPACES_GATEWAYS 입니다.
    유형: string
  - name: pktDstAwsService
    설명: 대상 IP 주소가 AWS 서비스에 해당하는 경우 pkt-dstaddr 필드에 대한 IP 주소 범위 하위 집합의 이름입니다. 가능한 값 목록은 pkt-src-aws-service 필드를 참조하세요.
    유형: string
  - name: flowDirection
    description: '트래픽이 캡처되는 인터페이스를 기준으로 한 흐름의 방향입니다. 가능한 값은 ingress | egress입니다.'
    유형: string
  - 이름: trafficPath
    설명: 이그레스 트래픽이 대상까지 이동하는 경로입니다. 트래픽이 이그레스 트래픽인지 확인하려면 flow-direction 필드를 확인합니다. 가능한 값은 다음과 같습니다. 어떤 값도 적용되지 않으면 필드는 -로 설정됩니다. 네트워크 인터페이스가 Nitro 시스템 기반 인스턴스에 연결된 경우 가능한 값에는 7과 8이 포함되지만 2는 포함되지 않습니다. Nitro 시스템 기반이 아닌 인스턴스(예: T2 및 M4)에서는 가능한 값에 2가 포함되지만 7 또는 8은 포함되지 않습니다. 1 — 동일한 VPC의 다른 리소스를 통해, 2 — 인터넷 게이트웨이 또는 게이트웨이 VPC 엔드포인트를 통해, 3 — 가상 프라이빗 게이트웨이를 통해, 4 — 리전 내 VPC 피어링 연결을 통해, 5 — 리전 간 VPC 피어링 연결을 통해, 6 — 로컬 게이트웨이를 통해, 7 — 게이트웨이 VPC 엔드포인트를 통해, 8 — 인터넷 게이트웨이를 통해
    유형: smallint
  - 이름: region
    설명: 트래픽이 기록되는 네트워크 인터페이스가 포함된 리전입니다.
    유형: string
  - 이름: azId
    설명: 트래픽이 기록되는 네트워크 인터페이스가 포함된 가용 영역의 ID입니다. 트래픽이 서브로케이션에서 온 경우 이 필드에는 '-' 기호가 표시됩니다.
    유형: string
  - 이름: sublocationType
    설명: sublocation-id 필드에 반환되는 서브로케이션의 유형입니다. 가능한 값은 wavelength | outpost | localzone입니다. 트래픽이 서브로케이션에서 온 것이 아니면 이 필드에는 '-' 기호가 표시됩니다.
    유형: string
  - 이름: sublocationId
    설명: 트래픽이 기록되는 네트워크 인터페이스를 포함하는 서브로케이션의 ID입니다. 트래픽이 서브로케이션에서 온 것이 아니면 이 필드에는 '-' 기호가 표시됩니다.
    유형: string
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.panther.com/ko/data-onboarding/supported-logs/aws/vpc.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
