BLOG

추가 메타 데이터로 VPC Flow Logs 학습
작성일: 2019-10-24

Amazon Virtual Private Cloud 에 대한 Flow Logs를 사용하면 VPC의 네트워크 인터페이스를 오가는 IP 트래픽에 대한 정보를 캡쳐할 수 있습니다. 흐름 로그 데이터는 Amazon CloudWatch Logs 또는 Amazon Simple Storage Service (S3)에 게시 할 수 있습니다.

 

2015년에 VPC Flow Logs가 출시된 이후 VPC 전체의 연결 문제 해결, 침입 탐지, 이상 탐지 또는 규제 준수 목적의 보관과 같은 다양한 사용 사례에 VPC Flow Logs가 사용되고 있습니다. 오늘까지 VPC Flow Logs는 소스 IP, 소스 포트, 대상 IP, 대상 포트, 작업 (수락, 거부) 및 상태를 포함하는 정보를 제공하고 있습니다. 활성화된 VPC Flow Logs 항목은 아래와 같습니다.

이 정보는 대부분의 흐름을 이해하기에 충분했지만 IP 주소를 인스턴스 ID와 일치 시키거나 흐름의 방향성을 추측하여 의미 있는 결론을 내릴 수 있도록 추가 계산 및 조회가 필요했습니다.

 

2019년 9월 11일, AWS는 네트워크 흐름을 더 잘 이해하기 위해 Flow Logs 레코드에 포함할 추가 메타 데이터의 가용성을 발표했습니다. 강화된 Flow Logs를 사용하면 로그 데이터에서 의미 있는 정보를 추출하는 데 필요한 계산 또는 조회 수를 줄여 스크립트를 단순화하거나 사후 처리의 필요성을 완전히 제거 할 수 있습니다.

 

기존 필드 외에 새 VPC Flow Logs를 생성할 때 이제 다음 메타 데이터를 추가하도록 선택할 수 있습니다.

 

  • vpc-id: 소스 Elastic Network Interface (ENI)를 포함하는 VPC의 ID
  • subnet-id : 소스 ENI가 포함 된 서브넷의 ID
  • instance-id: 소스 인터페이스와 연결된 인스턴스 의 Amazon Elastic Compute Cloud (EC2)인스턴스 AWS 서비스 (예 :  AWS PrivateLinkNAT GatewayNetwork Load Balancer 등) 에서 ENI를 배치하면 이 필드는 “-“
  • tcp-flags: 집계 기간 내에 관찰 된 TCP 플래그의 비트 마스크. 예를 들어 FIN 0x01 (1), SYN 0x02 (2), ACK 0x10 (16), SYN+ ACK는 0x12 (18) 등 (비트는 RFC793 “전송 제어 프로토콜 사양”의 “제어 비트” 섹션에 지정됨)

 

이를 통해 누가 연결을 시작 또는 종료했는지 이해할 수 있습니다. TCP는 3 방향 핸드 셰이크를 사용하여 연결을 설정합니다. 연결 시스템 SYN이 대상으로 패킷을 보내면 대상은 SYN + ACK로 응답하고 마지막으로 연결 시스템이 ACK를 보냅니다. 흐름 로그에서 핸드 셰이크는 두 줄로 표시되며 tcp-flags값은 2 (SYN), 18 (SYN + ACK)입니다.  ACK SYN이 동반 된 경우에만 보고됩니다 (그렇지 않으면 필터링하기에 너무 많은 노이즈가 발생 함).

  • type: 트래픽 유형 : IPV4, IPV6 또는 Elastic Fabric Adapter.
  • pkt-srcaddr: 소스의 패킷 레벨 IP 주소. 일반적으로 srcaddrNAT 게이트 웨이와 같이 트래픽이 흐르는 중간 계층의 IP 주소를 구별 하기 위해 이 필드를 사용 합니다.
  • pkt-dstaddr : 패킷 레벨 대상 IP 주소로, 이전 IP 주소와 비슷하지만 대상 IP 주소 용입니다.

 

VPC Flow Logs를 생성하려면 AWS Management ConsoleAWS Command Line Interface (CLI) 또는 CreateFlowLogs API를 사용하고 S3 를 대상으로 선택합니다. 그러면 필드를 소비하려는 추가 정보 및 순서를 선택할 수 있습니다.

또는 아래와 같이 AWS 명령 줄 인터페이스(CLI)를 사용 합니다.

 

$ aws ec2 create-flow-logs –resource-type VPC \

                            –region eu-west-1 \

                            –resource-ids vpc-12345678 \

                            –traffic-type ALL  \

                            –log-destination-type s3 \

                            –log-destination arn:aws:s3:::sst-vpc-demo \

                            –log-format ‘${version} ${vpc-id} ${subnet-id} ${instance-id} ${interface-id} ${account-id} ${type} ${srcaddr} ${dstaddr} ${srcport} ${dstport} ${pkt-srcaddr} ${pkt-dstaddr} ${protocol} ${bytes} ${packets} ${start} ${end} ${action} ${tcp-flags} ${log-status}’

 

# be sure to replace the bucket name and VPC ID !

 

{

    “ClientToken”: “1A….HoP=”,

    “FlowLogIds”: [

        “fl-12345678123456789”

    ],

    “Unsuccessful”: []

}

강화된 VPC Flow Logs가 S3에 전달됩니다. VPC Flow Logs가 S3 버킷에 쓸 수 있도록 필요한 S3 버킷 정책이 자동으로 추가됩니다. VPC Flow Logs는 네트워크 인터페이스에 대해 실시간 로그 스트림을 캡처하지 않으므로 선택한 대상의 데이터를 수집하고 게시하는 데에 몇 분이 걸릴 수 있습니다. 사용자의 로그는 S3 에서 이용 가능 하게 됩니다.

s3://<bucket name>/AWSLogs/<account id>/vpcflowlogs/<region>/<year>/<month>/<day>/

 

IP 주소가 90.90.0.200인 랩탑에서 EC2 인스턴스 로의 SSH 연결은 다음과 같습니다.

 

3 vpc-exxxxxx2 subnet-8xxxxf3 i-0bfxxxxxxaf eni-08xxxxxxa5 48xxxxxx93 IPv4 172.31.22.145 90.90.0.200 22 62897 172.31.22.145 90.90.0.200 6 5225 24 1566328660 1566328672 ACCEPT 18 OK

3 vpc-exxxxxx2 subnet-8xxxxf3 i-0bfxxxxxxaf eni-08xxxxxxa5 48xxxxxx93 IPv4 90.90.0.200 172.31.22.145 62897 22 90.90.0.200 172.31.22.145 6 4877 29 1566328660 1566328672 ACCEPT 2 OK

 

172.31.22.145는 EC2인스턴스의 프라이빗 IP 주소이며, 인스턴스에서 ifconfig를 입력 할 때 표시되는 IP 주소입니다. 모든 플래그는 집계 기간 동안 “OR”이 됩니다. 연결이 짧은 경우, SYN및 FIN(3)뿐만 아니라, SYN+ ACK및 FIN(19)까지 동일한 라인으로 설정 됩니다.

 

Flow Logs가 생성되면 이 필드를 사용하는 스크립트를 실수로 중단되는 것을 방지하기 위해 필드를 추가하거나 로그 구조를 수정할 수 없습니다. 수정하기 위해서는 VPC Flow Logs를 삭제하고 다시 만들어야 합니다. VPC Flow Logs에서 추가 정보를 캡처하는 데 드는 추가 비용은 없으며, 일반적인 VPC Flow Logs의 비용이 적용됩니다. 모든 필드를 선택할 때 강화된 VPC 흐름 로그 레코드가 더 많은 스토리지를 소비 할 수 있습니다. 그렇기 때문에 사용 사례와 관련된 필드만 선택하는 것이 좋습니다.

 

2019년 9월 11월 이후 이 강화된 VPC Flow Logs는 VPC Flow Logs를 사용할 수 있는 모든 리전에서 사용 가능합니다.

 

추신: AWS팀에서 메타 데이터를 로그에 추가하는 작업을 진행중이라고 들었습니다. AWS의 업데이트 상황을 계속 지켜봐 주세요!

 

원문 URL: https://aws.amazon.com/ko/blogs/aws/learn-from-your-vpc-flow-logs-with-additional-meta-data/

 

** 메가존 클라우드 TechBlog는 AWS BLOG 영문 게재 글 중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역 및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS 페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.