Network Load Balancer에 VPC Flow Logs를 설정해 봤습니다.

Network Load Balancer에 VPC Flow Logs를 설정해 봤습니다.

Network Load Balancer에 VPC Flow Logs를 설정해 봤습니다.
Clock Icon2025.01.31

안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 Network Load Balancer에 VPC Flow Logs를 설정해 봤습니다.

Network Load Balancer의 로그 취득

과거 NLB(Network Load Balancer)와 ALB(Application Load Balancer)에 대한 비교는 아래 블로그를 통해 소개한 적이 있습니다.

https://dev.classmethod.jp/articles/jw-first-time-creating-nlb-whats-different-from-alb/

이 블로그에서 다룬 정보 이외에도 ALB와 NLB에는 로그를 취득하는 부분에서도 차이점이 존재합니다.

ALB의 경우 다음의 연결 혹은 요청에 대한 정보를 기록합니다.

타입 설명
http-HTTP, https, h2, grpcs, ws, wss 요청 또는 연결의 유형입니다. 사용 가능한 값은 다음과 같습니다(기타 값은 모두 무시)

http, https를 포함한 다양한 유형의 연결 혹은 요청에 대한 정보를 기록합니다.

https://docs.aws.amazon.com/ko_kr/elasticloadbalancing/latest/application/load-balancer-access-logs.html#access-log-entry-format

반면 NLB의 액세스 로그의 경우 다음과 같습니다.

타입 설명
tls 리스너 유형. 지원되는 값은 tls입니다.

ALB에 비해 TLS 유형의 연결 혹은 요청에 대한 정보만을 기록합니다.

로드 밸런서에 TLS 리스너가 있고 로그가 TLS 요청에 관한 정보만 포함하는 경우에만 액세스 로그가 생성됩니다. 액세스 로그는 최대한 요청을 기록합니다. 모든 요청을 완벽하게 기록하기 위한 용도가 아니라 요청 특성을 이해하는 데 액세스 로그를 사용하는 것이 좋습니다.

https://docs.aws.amazon.com/ko_kr/elasticloadbalancing/latest/network/load-balancer-access-logs.html

그렇다면 TLS 이외의 연결 요청을 로그로 취득하고 싶다면 어떻게 해야할까요?

VPC Flows Logs 사용

NLB에서 TLS 이외의 연결 요청을 로그로 취득하고자 한다면 VPC Flows Logs를 사용할 수 있습니다.

https://dev.classmethod.jp/articles/jw-how-to-check-the-traffic-information-sent-and-received-by-a-vpc-with-vpc-flow-logs/

NLB에서 VPC Flows Logs를 적용하기 위해서 EC2 콘솔 화면에서 NLB와 연결된 네트워크 인터페이스를 찾습니다.

jw-blgnlbvpclo-1

  1. EC2 콘솔 화면에서 네트워크 인터페이스를 클릭합니다.
  2. NLB와 연결된 네트워크 인터페이스를 선택합니다.
  3. 플로우 로그를 클릭합니다.
  4. [플로우 로그 생성]을 클릭합니다.

jw-blgnlbvpclo-2

이후에는 적절하게 값을 입력하여 VPC Flow Logs를 생성합니다.

jw-blgnlbvpclo-3

VPC Flow Logs를 생성했다면, 해당 네트워크 인터페이스에 생성한 VPC Flow Logs 정보를 확인할 수 있습니다.

로그 취득 확인

jw-blgnlbvpclo-4

로그를 보존할 저장소는 S3 버킷을 선택했으며, 해당 S3 버킷으로 접근해 보면 로그가 취득된 것을 확인할 수 있습니다.

version account-id interface-id srcaddr dstaddr srcport dstport protocol packets bytes start end action log-status
2 xxxxxxxxxx eni-xxxxxxxxxx xxx.xxx.xxx.xx xx.x.x.xxx xxxxxx 80 x x xxx xxxxxxxxxx xxxxxxxxxx REJECT OK
2 xxxxxxxxxx eni-xxxxxxxxxx xxx.xxx.xxx.xx xx.x.x.xxx xxxxxx 443 x x xxx xxxxxxxxxx xxxxxxxxxx REJECT OK
2 xxxxxxxxxx eni-xxxxxxxxxx xxx.xxx.xxx.xx xx.x.x.xxx xxxxxx 443 x x xx xxxxxxxxxx xxxxxxxxxx REJECT OK
2 xxxxxxxxxx eni-xxxxxxxxxx xxx.xxx.xxx.xx xx.x.x.xxx xxxxxx 64882 x x xx xxxxxxxxxx xxxxxxxxxx REJECT OK
2 xxxxxxxxxx eni-xxxxxxxxxx xxx.xxx.xxx.xx xx.x.x.xxx xxxxxx 443 x x xxx xxxxxxxxxx xxxxxxxxxx REJECT OK
2 xxxxxxxxxx eni-xxxxxxxxxx xxx.xxx.xxx.xx xx.x.x.xxx xxxxxx 697 x x xx xxxxxxxxxx xxxxxxxxxx REJECT OK

취득된 로그를 확인해 보면, TLS 이외의 연결 요청도 로그를 취득할 수 있다는 것을 확인할 수 있습니다.

VPC Flow Logs에 대한 필드는 아래 AWS 공식 문서에서 확인할 수 있습니다.

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

본 블로그 게시글을 읽고 궁금한 사항이 있으신 분들은 jaewookkim533@yahoo.com로 보내주시면 감사하겠습니다.

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.