내 퍼블릭 NAT 게이트웨이의 VPC 흐름 로그에 인바운드 트래픽이 표시됩니다. 내 퍼블릭 NAT 게이트웨이가 인터넷에서의 인바운드 트래픽을 허용하고 있다는 뜻입니까?

최종 업데이트 날짜: 2022년 10월 31일

내 Virtual Private Cloud(VPC) 흐름 로그가 퍼블릭 IP 주소에서 오는 인바운드 트래픽에 대해 Action = ACCEPT를 표시합니다. 그러나 Network Address Translation(NAT) 게이트웨이는 인터넷에서의 트래픽을 허용하지 않는 것으로 알고 있습니다. 내 NAT 게이트웨이가 인터넷에서의 인바운드 트래픽을 허용하고 있다는 뜻입니까?

해결 방법

AWS에서 관리하는 NAT 게이트웨이는 인터넷에서 시작된 트래픽을 허용하지 않습니다. 그러나 두 가지 사유로 인해 VPC 흐름 로그의 정보에서 인터넷에서의 인바운드 트래픽이 허용되는 것으로 표시될 수 있습니다.

사유 #1: 보안 그룹 또는 네트워크 액세스 제어 목록(ACL)이 인바운드 인터넷 트래픽을 허용함

보안 그룹 또는 네트워크 ACL에서 트래픽을 허용하는 경우 VPC 흐름 로그에는 인바운드 인터넷 트래픽이 허용되는 것으로 표시됩니다. NAT 게이트웨이에 연결된 네트워크 ACL이 인터넷에서의 트래픽을 명시적으로 거부하지 않는 경우 NAT 게이트웨이에 대한 트래픽이 허용되는 것으로 표시됩니다. 그러나 실제로는 이 트래픽은 NAT 게이트웨이에서 허용되지 않고 삭제됩니다.

이를 확인하려면 다음을 수행합니다.

  1. Amazon CloudWatch 콘솔을 엽니다.
  2. 탐색 창에서 Insights(인사이트)를 선택합니다.
  3. 드롭다운에서, NAT 게이트웨이의 탄력적 네트워크 인터페이스와, 프라이빗 인스턴스의 탄력적 네트워크 인터페이스가 포함된 로그 그룹을 선택합니다.
  4. 아래 쿼리를 실행합니다.
filter (dstAddr like 'xxx.xxx' and srcAddr like 'public IP')
| stats sum(bytes) as bytesTransferred by srcAddr, dstAddr
| limit 10

참고: 검색 필터에서 처음 두 옥텟만 사용하여 VPC의 모든 네트워크 인터페이스를 분석할 수 있습니다. 위 예에서 xxx.xxx를 VPC Classless Inter-Domain Routing(CIDR)의 처음 두 옥텟으로 바꿉니다. 또한 public IP를 VPC 흐름 로그 항목에 표시되는 퍼블릭 IP로 바꿉니다.

쿼리 결과는 퍼블릭 IP에 있는 NAT 게이트웨이 프라이빗 IP의 트래픽을 표시하지만 VPC에 있는 다른 프라이빗 IP의 트래픽은 표시하지 않습니다. 이러면 수신 트래픽을 원하지 않았다는 것이 확인됩니다. 그러나 프라이빗 인스턴스의 IP에 트래픽이 표시되는 경우 사유 #2의 단계를 따릅니다.

사유 #2: 퍼블릭 IP의 트래픽이 프라이빗 인스턴스에서 시작되었음

인터넷 액세스를 위해 NAT 게이트웨이를 사용하는 프라이빗 인스턴스가 있는 경우 VPC 흐름 로그에는 퍼블릭 IP 주소에서의 응답 트래픽이 포함됩니다. 퍼블릭 IP의 트래픽이 프라이빗 인스턴스에서 시작된 경우 아래 쿼리를 실행합니다.

참고: 쿼리를 실행하기 전에 다음을 수행합니다.

  • VPC 흐름 로그에서 트래픽을 관찰한 때에 해당하는 시간대를 선택합니다.
  • VPC에 로그 그룹이 여러 개 있는 경우 적합한 로그 그룹 하나를 선택합니다.
filter (dstAddr like 'public IP' and srcAddr like 'xxx.xxx') or (srcAddr like 'public IP' and dstAddr like 'xxx.xxx')
| limit 10

xxx.xxx를 VPC CIDR의 처음 두 옥텟으로 바꿉니다. public IP를 VPC 흐름 로그 항목에 표시되는 퍼블릭 IP로 바꿉니다. VPC에서 10개를 초과하는 리소스가 퍼블릭 IP로의 트래픽을 시작한 경우 제한치를 늘립니다.

쿼리 결과에는 프라이빗 인스턴스와 퍼블릭 IP 주소 간의 양방향 트래픽이 표시됩니다. 프라이빗 인스턴스나 외부 퍼블릭 IP 주소 중 어느 쪽이 이니시에이터인지 확인하려면 다음 예를 참조하세요.

2022-09-28T12:05:18.000+10:00 eni-023466675b6xxxxxx 10.0.101.222 8.8.8.8 53218 53 6(17) 4 221 1664330718 1664330746 ACCEPT OK
2022-09-28T12:05:18.000+10:00 eni-023466675b6xxxxxx 8.8.8.8 10.0.101.222 53 53218 6(17) 4 216 1664330718 1664330746 ACCEPT OK
이 TCP/UDP 트래픽(프로토콜 ID = 6 또는 17) 예에서는 소스 포트 53218(임시 포트)이 있는 프라이빗 IP 주소 10.0.101.222가 이니시에이터입니다. 대상 포트 53이 있는 IP 주소 8.8.8.8이 수신자 및 응답자입니다.

참고: VPC 흐름 로그의 TCP 플래그 필드를 켜는 것이 모범 사례입니다.

예를 들어, 다음 항목의 마지막 열에 TCP 플래그 필드가 있습니다.

2022-09-28T12:05:52.000+10:00 eni-023466675b6xxxxxx 10.0.1.231 8.8.8.8 50691 53 6(17) 3 4 221 1664330752 1664330776 ACCEPT OK 2
2022-09-28T12:05:21.000+10:00 eni-023466675b6xxxxxx 8.8.8.8 10.0.1.231 53 50691 6(17) 19 4 216 1664330721 1664330742 ACCEPT OK 18

프라이빗 IP 주소 10.0.101.222는 TCP SYN 패킷을 나타내는 TCP 플래그 2를 사용하는 이니시에이터입니다.

다음 ICMP 프로토콜 예에서는 포트 정보 또는 TCP 플래그가 없기 때문에 어느 쪽이 이니시에이터인지 확인할 수 있는 정보가 충분하지 않습니다.

2022-09-27T17:57:39.000+10:00 eni-023466675b6xxxxxx 10.0.1.231 8.8.8.8 0 0 1 17 1428 1664265459 1664265483 ACCEPT OK
2022-09-27T17:57:39.000+10:00 eni-023466675b6xxxxxx 8.8.8.8 10.0.1.231 0 0 1 0 17 1428 1664265459 1664265483 ACCEPT OK

흐름 로그 항목의 형식은 생성 방법에 따라 달라집니다. 로그 줄 형식에 대한 자세한 내용은 흐름 로그 보기를 참조하세요.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?