본문 바로가기
AWS

[AWS] VPC Flow Logs로 트래픽 로그 확인하기

by chan10 2023. 5. 18.

VPC Flow Logs란 AWS에서 트래픽을 캡쳐할 수 있는 기능으로 ENI에 대해 오고가는 트래픽을 캡쳐할 수 있습니다. 클라우드 환경을 경험하다 보면 네트워크 이슈 발생 시 직접적으로 패킷을 캡쳐하기가 어려운데 VPC Flow Logs기능을 이용하면 트래픽을 캡쳐해서 로그 형식으로 확인할 수 있습니다.

Flow Logs 데이터는 네트워크 트래픽 경로 외부에서 수집되므로 네트워크 처리량이나 지연 시간 즉, 네트워크 성능에 영향을 주지 않고 흐름 로그를 생성하거나 삭제할 수 있습니다.

 

VPC Flow Logs는 VPC, Subnet, 네트워크 인터페이스 단위로 생성할 수 있습니다.

VPC, Subnet에 대한 Flow logs를 생성할 경우 VPC 또는 Subnet의 각 네트워크 인터페이스가 모니터링 되며 생성된 로그는 CloudWatch Logs S3 버킷에 저장할 수 있습니다.

 

네트워크 인터페이스 단위로 모니터링 되다 보니 AWS서비스에서 생성한 네트워크 인터페이스에 대한 Flow logs를 생성할 수도 있습니다.

  • Elastic Load Balancing
  • Amazon RDS
  • Amazon ElastiCache
  • Amazon Redshift
  • Amazon WorkSpaces
  • NAT 게이트웨이
  • 전송 게이트웨이 

Flow logs 생성 시 다음 지정 사항을 필요로 합니다.

   흐름 로그를 생성할 리소스 -> VPC, Subnet, 네트워크 인터페이스

   캡처할 트래픽 유형 -> 허용된 트래픽, 거부된 트래픽, 모든 트래픽

   흐름 로그 데이터를 게시할 대상 -> CloudWatch Logs, S3 버킷, Kinesis Firehose

 

아래는 트래픽 캡쳐 후 Flow logs를 생성하여 지정한 서비스에 게시하는 흐름입니다.

네트워크 인터페이스 -> S3 Subnet -> CloudWatch Logs
 

 

그러나 모든 트래픽이 캡쳐 되는 것은 아니며 아래의 항목은 캡쳐 대상에서 제외됩니다.

  • Amazon DNS 서버에 연결할 때 생성한 트래픽. 자체 DNS 서버를 사용할 경우 DNS 서버에 대한 모든 트래픽은 기록됩니다
  • Amazon Windows 라이선스 인증을 위해 Windows 인스턴스에서 생성한 트래픽
  • 인스턴스 메타데이터를 위해 169.254.169.254와 주고받는 트래픽
  • Amazon Time Sync Service를 위해 169.254.169.123와 주고받는 트래픽
  • DHCP 트래픽
  • 미러링된 트래픽
  • 기본 VPC 라우터의 예약된 IP 주소로 보내는 트래픽
  • 엔드포인트 네트워크 인터페이스와 Network Load Balancer 네트워크 인터페이스 간의 트래픽

VPC Flow Logs 생성 절차

1. IAM 정책, 역할 생성

2. CloudWatch 로그 그룹 생성

3. VPC Flow logs 생성

4. VPC Flow logs 확인

 

IAM 정책, 역할 생성

VPC Flow Logs를 사용하기 위해 IAM 역할에 CloudWatch Logs의 지정된 로그 그룹에 로그를 게시할 권한이 있어야 합니다.

역할을 생성하기 전 로그를 게시할 권한에 대한 정책 생성이 필요합니다.

 

권한 설정 형식을 JSON으로 변경 후 IAM 역할에 연결될 역할을 추가합니다.

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

 

정책 이름을 작성 후 정책 생성을 마무리 합니다.

 

정책이 정상적으로 생성되었음을 확인 할 수 있습니다.

 

역할 생성

생성한 권한을 사용하기 위한 역할을 생성합니다.

 

역할 생성 시 CloudWatch Log로 VPC 서비스가 API호출을 해야 하기 때문에 VPC에서 호출할 수 있는 권한을 부여해줘야 합니다.

             "Service": "ec2.amazonaws.com" => "Service": "vpc-flow-logs.amazonaws.com"

기존 Service부분의 ec2에서 vpc-flow-logs로 변경해서 권한을 변경합니다. 변경하지 않을 경우 VPC Flow Logs 설정 후 액세스 오류로 인해 로그 수집이 안되는 현상을 볼 것입니다…!!!

 

이전 과정에서 생성했던 정책을 선택 후 다음으로 이동합니다.

 

역할을 이름을 작성 후 역할 생성 버튼을 눌러 생성을 누르면 완료됩니다.

 

CloudWatch 로그 그룹 생성

CloudWatch 로그 그룹이란 각 서비스의 로그들을 저장할 수 있는 로그 저장소 입니다.

VPC Flow Logs도 마찬가지로 로그를 저장해야 하기에 CloudWatch 로그 그룹을 생성합니다.

 

로그 그룹의 이름과 로그 보관 기간을 설정하면 생성이 완료됩니다.

CloudWatch 로그는 데이터 수집량과 저장하는 공간에 비례하여 과금이 되기에 유의하여 보존 기간을 정해주면 됩니다.