VPC 플로우 로그 설정하기

VPC 플로우 로그 설정하기

Clock Icon2025.03.17

vpc flow logs를 설정하고 분석하기

안녕하세요, 클래스메소드의 서은우 입니다.

본 블로그에서는 VPC 플로우 로그에 대해서 간단하게 알아보고 직접 설정해보도록 하겠습니다.

VPC Flow Logs 란?

VPC 흐름 로그는 VPC의 네트워크 인터페이스에서 전송되고 수신되는 IP 트래픽에 대한 정보를 수집할 수 있는 기능입니다. 흐름 로그 데이터가 게시될 수 있는 위치는 Amazon CloudWatch Logs, Amazon S3 또는 Amazon Data Firehose입니다. 네트워크 트래픽 로그를 CloudWatch Logs 또는 S3와 같은 대상으로 전송할 수 있도록 구성된 전송 경로와 권한을 구독이라고 합니다. 흐름 로그를 생성하면 구성한 로그 그룹, 버킷 또는 전송 스트림의 흐름 로그 레코드를 검색하고 볼 수 있습니다.

출처: AWS 공식문서

VPC 플로우 로그는 VPC의 네트워크 인터페이스에서 전송되고 수신되는 IP 트래픽에 대한 로그 정보를 기록하는 기능으로,VPC 내의 트래픽의 흐름을 모니터링하기 위해 사용할 수 있습니다.

예를 들어 VPC 플로우 로그를 통해 특정 EC2 인스턴스가 어디서부터 어떤 트래픽을 수신했는지, 그 트래픽을 허가했거나 거부했는지 등의 정보를 확인할 수 있습니다.

VPC 플로우 로그 구성

VPC 플로우 로그에서 확인할 수 있는 주요 정보들은 다음과 같습니다.

  • account-id: 소스 ENI 소유자의 AWS 계정 ID
  • interface-id: ENI의 ID
  • srcaddr: 트래픽 소스의 IP 주소(수신 트래픽), 트래픽을 전송하는 ENI의 프라이빗 IP 주소(송신 트래픽)
  • dstaddr: 아웃바운드 트래픽의 타겟 주소, 트래픽을 수신한 해당 ENI의 주소
  • srcport: 소스 포트
  • dstport: 타겟 포트
  • protocol: 프로토콜 번호
  • packets: 전송된 패킷 수
  • bytes: 전송된 바이트
  • action: 트래픽을 수락(ACCEPT) 하거나 거부(REJECT)했는지에 대한 결과
  • vpc-id: 트래픽이 기록되는 ENI의 VPC ID
  • subnet-id: 트래픽이 기록되는 ENI의 서브넷 ID
  • instance-id: 트래픽이 기록되는 ENI와 연결된 인스턴스 ID(인스턴스가 존재하는 경우)
  • flow-direction: 트래픽의 방향(ingress/egress)

더욱 자세한 사항들은 AWS 공식 문서에서 확인하실 수 있습니다.

요금

VPC 플로우 로그는 "Vended 로그"의 로그 수집 요금과 저장된 데이터에 대한 스토리지 요금이 발생합니다.

VPC 플로우 로그의 전송처로 S3, CloudWatch Logs, Kinesis Data Firehose를 설정할 수 있으며,
각 전송처마다 발생하는 요금이 다르기 때문에 확인이 필요합니다.

  • CloudWatch Logs(Standard)
    • 로그 수집 비용: 수집된 데이터의 GB당 $0.76(처음 10TB까지)
    • 스토리지 비용: 저장된 데이터의 GB당 $0.0314
  • S3(Standard)
    • 로그 수집 비용: GB당 $0.38
    • 스토리지 비용: GB당 $0.025
  • Kinesis Data Firehose
    • 로그 수집 비용: GB당 $0.38
    • 스토리지 비용: 해당 없음

요금에 대한 자세한 내용은 아래의 AWS 공식 문서를 확인해주세요.

직접 해보기

VPC 플로우 로그를 설정하고 퍼블릭 서브넷에 EC2를 생성한 뒤 어떤 정보들이 로그로 기록되었는지 확인하도록 하겠습니다.

블로그

VPC Flow Logs 설정하기

VPC 콘솔 화면으로 접속하여 VPC 플로우 로그를 설정할 VPC를 선택합니다. 대상 VPC의 정보에서 "플로우 로그" 탭을 클릭하고 플로우 로그를 생성합니다.

플로우 로그 설정

1

나머지 설정들은 기본 설정을 변경하지 않고, "대상 - Amazon S3 버킷으로 전송"을 선택한 뒤 플로우 로그를 저장할 버킷의 ARN을 입력합니다.

2

마찬가지로 기본 설정들을 그대로 둔 채로 플로우 로그 설정을 완료합니다.

3

플로우 로그 확인

설정한 VPC 플로우 로그는 아래의 S3 버킷의 경로에 저장됩니다.

  • 저장위치: 버킷명/AWSLogs/AWS계정ID/vpcflowlogs/리전/yyyy/mm/dd

해당 경로로 들어가 gz으로 압축되어 생성된 VPC 플로우 로그를 다운로드하여 로그를 확인할 수 있습니다.

4

version account-id interface-id srcaddr dstaddr srcport dstport protocol packets bytes start end action log-status
2 xxxxxxxxxxxx eni-xxxxxxxx xxx.xxx.xxx.xxx yyy.yyy.yyy.yyy 22 62269 6 10 964 1742205103 1742205153 ACCEPT OK
2 xxxxxxxxxxxx eni-xxxxxxxx zzz.zzz.zzz.zzz xxx.xxx.xxx.xxx 443 34932 6 4 211 1742205103 1742205153 ACCEPT OK
2 xxxxxxxxxxxx eni-xxxxxxxx yyy.yyy.yyy.yyy xxx.xxx.xxx.xxx 61903 443 6 9 576 1742205103 1742205153 REJECT OK

끝으로

VPC 플로우 로그로 VPC내의 트래픽 흐름을 파악할 수 있기 때문에 장애 발생시 원인 파악과 같은 대응을 위해 VPC 플로우 로그를 사용하는 것을 검토해 볼 수 있습니다.

참조

https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/flow-logs.html

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.