본문 바로가기
CSP (Cloud Service Provider)/AWS

VPC Flow Logs

by BTC_작은뉴진 2023. 9. 14.

베하~~

뉴진쓰 팀의 작은뉴진입니다 :)

 

오늘은 VPC Flow Logs에 대한 내용을 가져왔는데요, 본론으로 바로 들어가보겠습니다 :)


VPC 흐름 로그는 VPC의 네트워크 인터페이스에서 전송되고 수신되는 IP 트래픽에 대한 정보를 수집할 수 있는 기능인데요,

흐름 로그는 다음과 같은 여러 작업에 도움이 될 수 있습니다.

  • 지나치게 제한적인 보안 그룹 규칙 진단
  • 인스턴스에 도달하는 트래픽 모니터링
  • 네트워크 인터페이스를 오가는 트래픽 방향 결정

 

흐름 로그 데이터는 네트워크 트래픽 경로 외부에서 수집되므로 네트워크 처리량이나 지연 시간에 영향을 주지 않습니다.

 

흐름 로그를 생성하려면 다음을 지정해야 해요 :

  • 흐름 로그를 생성할 리소스
  • 캡처할 트래픽 유형(허용된 트래픽, 거부된 트래픽 또는 모든 트래픽)
  • 흐름 로그 데이터를 게시할 대상

 

그럼 Flow Log는 어떻게 구성되어 있을까요?

  • version
    • VPC Flow Log의 버전
    • Default : 2
  • account-id
    • 네트워크 인터페이스 소유자의 AWS 계정 ID
    • 네트워크 인터페이스가 AWS 서비스에 의해 생성된 경우 unknown이 표시될 수도 있음
  • interface-id
    • 트래픽이 기록되는 네트워크 인터페이스 ID
  • srcaddr
    • 들어오는 트래픽의 소스 주소
    • 네트워크 인터페이스의 IPv4 주소는 항상 해당 프라이빗 IPv4 주소
  • dstaddr
    • 나가는 트래픽의 대상 주소
    • 네트워크 인터페이스의 IPv4 주소는 항상 해당 프라이빗 IPv4 주소
  • srcport
    • 트래픽의 소스 포트
  • dstport
    • 트래픽의 대상 포트
  • protocol
    • 트래픽의 IANA 프로토콜 번호
  • packets
    • 흐름 중 전송된 패킷 수
  • bytes
    • 흐름 중 전송된 바이트 수
  • start
    • 흐름의 첫 번째 패킷이 집계 간격 내에서 수신된 시간
    • 패킷이 네트워크 인터페이스에서 전송되거나 수신된 후 최대 60초가 될 수 있음
  • action
    • 트래픽과 연결된 작업
    • ACCEPT — 트래픽이 수락되었습니다.
    • REJECT — 트래픽이 거부되었습니다.
      • 예를 들어 보안 그룹이나 네트워크 ACL에서 트래픽을 허용하지 않았거나 연결이 닫힌 후 패킷이 도착했습니다.
  • log-status
    • 흐름 로그의 로깅 상태:
      • OK — 선택된 대상에 정상적으로 로깅됩니다.
      • NODATA — 집계 간격 중 네트워크 인터페이스에서 전송하거나 수신된 네트워크 트래픽이 없었습니다.
      • SKIPDATA — 집계 간격 중 일부 흐름 로그 레코드를 건너뛰었습니다. 내부 용량 제한 또는 내부 오류가 원인일 수 있습니다.

💡참고로 필드를 적용할 수 없거나 특정 레코드에 대해 계산할 수 없는 경우 레코드는 해당 항목에 대해 '-' 기호를 표시한다고 해요!💡

 

 

이제 위의 요소들로 구성된 로그의 예시를 살펴볼게요

  • 허용된 트래픽
    계정 123456789010에서 네트워크 인터페이스 eni-1235b8ca123456789에 대한 SSH 트래픽(대상 포트 22, TCP 프로토콜)이 허용된 로그에요
2 123456789010 eni-1235b8ca123456789 172.31.16.139 172.31.16.21 20641 22 6 20 4249 1418530010 1418530070 ACCEPT OK
  • 데이터가 없고 건너뛴 레코드
    VPC 흐름 로그는 내부 용량 초과로 집계 간격 동안 흐름 로그 데이터를 캡처할 수 없는 경우 레코드를 건너뛰어요
2 123456789010 eni-11111111aaaaaaaaa - - - - - - - 1431280876 1431280934 - SKIPDATA

 

 

이제 S3에 직접 Flow Log를 남겨봅시다!

 

퍼블릭 서브넷의 EC2 인스턴스 중 하나의 네트워크 인터페이스에 대해 허용된 트래픽을 캡처하고 흐름 로그 레코드를 Amazon S3 버킷에 게시하는 흐름 로그를 생성할거에요.

  1. Amazon S3에 흐름 로그를 게시하는 IAM 보안 주체의 권한 설정
    흐름 로그를 생성하는 IAM 보안 주체는 대상 Amazon S3 버킷에 흐름 로그를 게시하는 데 필요한 다음 권한이 있는 IAM 역할을 사용해야 합니다.
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogDelivery",
        "logs:DeleteLogDelivery"
      ],
      "Resource": "*"
    }
  ]
}

 

2. 로그를 남길 EC2 인스턴스를 생성 후 해당 인스턴스에 접속할 수 있도록 웹사이트를 준비

 

3. 로그를 저장할 S3 버킷 생성

 

4. 해당 인스턴스의 ENI에 플로그 로그를 생성

인스턴스에서 사용하는 ENI > 플로우 로그 > 플로우 로그 생성

 

이제 웹사이트로 접속한 기록이 남겨져있는 로그들이 gz 형태로 S3에 저장된 것을 볼 수 있어요!

 

💡 흐름 로그를 생성한 후에는, 데이터를 수집하여 선택된 대상에 게시하는 데 몇 분의 시간이 소요될 수 있습니다. 💡

 


      인스턴스에 도달하는 트래픽을 모니터링할 때 유용할 것 같은데요!
      다음에도 재미있는 주제로 만나요~
      베빠!

'CSP (Cloud Service Provider) > AWS' 카테고리의 다른 글

[AWS] CloudWatch Metric Stream  (0) 2023.09.15
[AWS] DynamoDB (1)  (0) 2023.09.15
[AWS] Amazon linux2 + gnuboard5(1)  (0) 2023.09.13
[AWS] 로드밸런서 Connection Draining  (0) 2023.09.13
AWS WAF & Shield  (0) 2023.09.07

댓글