vpc flow logs

VPC Flow Logs 알아보기

AWS VPC Flow Logs는 VPC 내의 로그를 수집/저장하여 장애나 보안 문제 발생 시 원인 파악, 분석 등 다양한 용도로 활용할 수 있는 기능입니다.

아래에서는 VPC Flow Logs의 특징과 설정 방법을 안내합니다.


1. VPC Flow Logs 특징

VPC Flow Logs는 다음과 같은 특징을 가지고 있습니다.

특징

  • 네트워크 연결 문제 해결 및 보안 문제, 네트워크상 접근 규칙이 정상 작동하는지 확인하기 위해 Flow log 수집, 저장 및 분석 가능
  • EC2에 직접 에이전트를 설치하여 데이터 수집 시 해당 인스턴스에 부하를 줄 수 있음
  • VPC Subnet과 ENI 의 네트워크 트래픽이 CloudWatch Logs를 통해 저장된 후 별도 응용 프로그램 등에서 분석 가능
  • 특정 유형의 트래픽을 감지하여 알람을 만들거나 트래픽의 변화와 패턴을 파악하기 위한 통계를 만들 수도 있음

Log에 포함된 정보

  • Security Group 및 NACL 규칙에 의해 허용 또는 차단 트래픽 정보
  • 소스, 목적지IP 주소, 포트, 프로토콜 번호, 패킷 바이트, 모니터링 간격 시간, Action(ACCEPT or REJECT)

Log에 포함되지 않는 정보

  • Amazon DNS 서버 트래픽(개인 호스트 영역 쿼리 포함)
  • Amazon에서 제공하는 Windows 라이선스 활성화 트래픽
  • 인스턴스 메타 데이터 요청(169.254.169.254)
  • DHCP 요청과 응답
  • ARP 및 NTP(169.254.169.123)

제한 사항

  • 서비스 트래픽은 미러링 된 트래픽보다 우선 순위가 높음, 혼잡 발생시 미러링된 트래픽이 삭제될 수 있음
  • 미러링 된 트래픽은 Security Group의 영향을 받지 않음

설정 위치에 따른 범위

  • VPC : VPC 하위의 모든 ENI(EC2, ELB, RDS 등)
  • Subnet : Subnet 하위의 모든 ENI(EC2, ELB, RDS 등)
  • EC2 : ENI에 대한 개별 설정

2.VPC Flow Logs 설정

1)Flow Logs에 사용할 IAM Policy 생성 후, Role 생성

*Flow Logs를 Cloudwatch에 저장하려면 IAM Role 권한 필요
*아래 Policy 생성하여 Role 생성

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:DescribeLogGroups",
        "logs:DescribeLogStreams",
        "logs:PutLogEvents"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}

2) VPC Flow Logs 생성

VPC -> Flow Logs를 설정할 VPC 선택

작업 -> 플로우 로그 생성

  • 필터 : 모든 트래픽에 대하여 Log 적용, Allow(적용) or Deny(거부)로 설정 가능
  • 대상 : 로그를 CloudWatch 또는 S3로 저장 가능
  • 대상 로그 그룹 : 해당 설정 리전에 존재하는 로그 그룹으로 저장하거나 새로운 로그 그룹으로 저장 가능
  • IAM Role : 미리 생성해 둔 Role 선택

3) Flow Logs 생성 완료

Flow Logs 생성 후 약 15분 뒤부터 CloudWatch에 Logs가 쌓이기 시작

4) CloudWatch Logs 확인


 

 VPC Flow Logs 항목 설명

Column 명Contents
versionVPC Flow Log Version
vpc-id소스 ENI를 포함하는 VPC의 ID
subnet-id소스 ENI를 포함하는 Subnet의 ID
instance-id소스 인터페이스와 연관된 인스턴스의 ID
interface-id소스 ENI의 ID
account-id소스 ENI를 포함하는 AWS 계정의 Account Number
type트래픽 유형(IPv4, IPv6)
srcaddr소스 IP
dstaddr목적지 IP
srcport소스 포트
dstport목적지 포트
pkt-srcaddr소스의 패킷 수준의 IP 주소, NAT 게이트웨이와 같이 트래픽이 통과하는 중간 레이어의 IP 주소를 구분
pkt-dstaddr패킷 수준의 IP 주소, pkt-srcaddr 필드와 유사하지만 대상 IP 주소에 대한 필드
protocol패킷에 대한 Protocol Number
bytes캡처 기간 중 전송된 바이트 수
packets캡처 기간 중 전송된 패킷 수
start캡처 기간의 시작 시간 (단위 : Unix 초)
end캡처 기간의 종료 시간 (단위 : Unix 초)
actionACCEPT : Security Group 또는 NACL에서 허용한 트래픽
REJECT : Security Group 또는 NACL에서 허용하지 않은 트래픽
tcp-flagsTCP Flag는 캡처 기간 동안 OR 처리됨SYN : 2
SYN-ACK : 18
FIN : 1
RST : 4
log-statusFlow Log의 로깅 상태
OK : 데이터가 선택된 대상에 정상적으로 로깅
NODATA : 캡처 기간 중 ENI에서 전송하거나 수신된 네트워크 트래픽이 없을 경우
SKIPDATA : 캡처 기간 중 일부 Flow Log 레코드를 건너뜀. 내부 용량 제한 또는 내부 오류 원인 가능
VPC Flow Logs Column


*참고

https://docs.aws.amazon.com/ko_kr/vpc/latest/mirroring/what-is-traffic-mirroring.html
https://aws.amazon.com/ko/blogs/korea/vpc-flow-logs-log-and-view-network-traffic-flows/
https://docs.aws.amazon.com/ko_kr/vpc/latest/mirroring/traffic-mirroring-considerations.html
https://aws.amazon.com/ko/blogs/korea/learn-from-your-vpc-flow-logs-with-additional-meta-data/
https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html