NAT 게이트웨이를 사용하여 트래픽을 검사하도록 AWS Network Firewall을 구성하고 싶습니다.
간략한 설명
AWS Network Firewall을 사용해 Amazon Virtual Private Cloud(VPC) 내부 리소스에서 들어오고 나가는 트래픽을 더욱 세밀하게 제어할 수 있습니다. Amazon VPC 리소스를 보호하려면 Network Firewall 엔드포인트를 자체 서브넷에 배포하고, 이를 통해 워크로드 인스턴스 트래픽을 라우팅합니다. 다음을 참고하세요.
- VPC 생성
- 방화벽 만들기
- 트래픽 라우팅 구성
참고: Network Firewall이 방화벽 엔드포인트가 배포된 서브넷에 있는 워크로드를 검사할 수 없습니다.
해결 방법
VPC 생성
-
Amazon VPC 콘솔을 엽니다.
-
VPC 대시보드에서 VPC 생성을 클릭합니다.
-
VPC 설정에서 다음을 입력합니다.
VPC 및 기타를 선택합니다.
이름 태그 자동 생성에서 VPC의 이름을 입력합니다. 이 예제에서는 VPC 이름이 Protected_VPC_10.0.0.0_16-vpc입니다.
자동 생성 옵션을 선택하면 이 이름이 VPC의 모든 리소스에 이름 태그로 추가됩니다.
IPv4 CIDR block에 10.0.0.0/16을 입력합니다.
IPv6 CIDR 블록의 경우, No IPv6 CIDR block을 선택합니다.
테넌시에서 기본값을 선택합니다.
**가용 영역 수(AZ)**에서 2를 선택합니다.
가용 영역 사용자 지정에서 가용 영역을 두 개를 선택합니다. 이 예에서는 us-east-2a와 us-east-2b를 선택합니다.
퍼블릭 서브넷 수에 2를 선택합니다.
프라이빗 서브넷 수에 4를 선택합니다. 프라이빗 서브넷 중 2개는 방화벽용이고 2개는 워크로드 서브넷용입니다.
**NAT 게이트웨이($)**에는 AZ당 1을 선택합니다. NAT 게이트웨이는 공용 서브넷에 자동으로 배포됩니다.
VPC 엔드포인트에서 없음을 선택합니다.
-
VPC 만들기를 선택합니다.
-
서브넷의 용도에 따라 이름을 지정합니다.
퍼블릭 서브넷 2개는 NAT 게이트웨이용이며, 이 예에서는 이름이 Public_Subnet_AZa와 Public_Subnet_AZb입니다.
프라이빗 서브넷 두 개는 방화벽 엔드포인트용이며, 이 예에서는 이름이 Firewall_Subnet_AZa와 Firewall_Subnet_AZb입니다.
나머지 프라이빗 서브넷 두 개는 워크로드 엔드포인트용이며, 이 예에서는 이름이 Private_Subnet_AZa와 Private_Subnet_AZb입니다.
방화벽 생성
-
탐색 창의 네트워크 방화벽에서 방화벽을 선택합니다.
-
방화벽 생성을 선택합니다.
-
방화벽 생성에서 다음을 입력합니다.
방화벽 이름을 입력합니다. 이 예에서 방화벽 이름은 Network-Firewall-Test입니다.
VPC에서 Protected_VPC_10.0.0.0_16-vpc를 선택합니다.
방화벽 서브넷에서 첫 번째 가용 영역(us-east-2a)을 선택하고 서브넷에서 Firewall_Subnet_AZa을 선택합니다. 그런 다음 새 서브넷 추가를 선택하여 두 번째 가용성 영역(us-east-2b)에 동일한 작업을 한 뒤 서브넷에서 Firewall_Subnet_AZb을 선택합니다.
연결된 방화벽 정책에서 빈 방화벽 정책 만들기 및 연결을 선택합니다.
새 방화벽 정책 이름에 새 정책 이름을 입력합니다.
-
방화벽 생성을 선택합니다. 각 서브넷에는 고유한 라우팅 테이블이 있어야 합니다.
개인 서브넷 4개에는 고유한 라우팅 테이블이 연결되어 있고 공용 서브넷은 라우팅 테이블을 공유합니다.
인터넷 게이트웨이의 고정 경로를 사용해 새 라우팅 테이블을 만들어 공용 서브넷 중 하나에 연결해야 합니다.
트래픽 라우팅 구성
트래픽 흐름은 다음과 같습니다.
-
AZa의 워크로드 인스턴스에서 시작된 트래픽은 AZa의 방화벽 엔드포인트로 전달됩니다.
-
AZa의 방화벽 엔드포인트는 트래픽을 AZa의 NAT 게이트웨이로 라우팅합니다.
-
AZa의 NAT 게이트웨이는 트래픽을 VPC와 연결된 인터넷 게이트웨이로 전달합니다.
-
인터넷 게이트웨이는 트래픽을 인터넷으로 전달합니다.
역방향 트래픽의 경우 반대 방향으로 동일한 경로를 따릅니다.
-
인터넷에서 오는 리턴 트래픽은 VPC에 연결된 인터넷 게이트웨이에 도달합니다.
VPC에는 인터넷 게이트웨이를 하나만 연결할 수 있습니다.
-
인터넷 게이트웨이는 트래픽을 AZa의 NAT 게이트웨이로 전달합니다.
인터넷 게이트웨이는 워크로드 가용 영역에 따라 이 결정을 내립니다.
트래픽 대상이 AZa이기 때문에 인터넷 게이트웨이에서 AZa의 NAT 게이트웨이를 선택해 트래픽을 전달합니다. 인터넷 게이트웨이에 라우트 테이블을 유지할 필요는 없습니다.
-
AZa의 NAT 게이트웨이에서 트래픽을 AZa의 방화벽 엔드포인트로 전달합니다.
-
AZa의 방화벽 엔드포인트에서 트래픽을 AZa의 워크로드에 전달합니다.
참고: 인터넷 게이트웨이에서는 인터넷에서 워크로드 인스턴스로 돌아오는 패킷에 대해 NAT 게이트웨이를 확인할 수 있습니다.
VPC 및 방화벽을 생성한 후 라우팅 테이블을 구성해야 합니다.
라우팅 테이블을 구성할 때는 다음 사항에 유의하세요.
-
AZa의 프라이빗 서브넷(Private_Subnet_AZa)에서는 인터넷으로 가는 모든 트래픽을 AZa의 방화벽 엔드포인트(Firewall_Subnet_AZa)로 전달합니다. AZb의 프라이빗 서브넷과 AZb의 방화벽 엔드포인트에서도 동일한 과정을 거칩니다.
-
AZa의 방화벽 서브넷(Firewall_Subnet_AZa)에서는 인터넷으로 가는 모든 트래픽을 AZa의 NAT 게이트웨이( Public_Subnet_AZa)로 전달합니다.
AZb의 방화벽 서브넷과 AZb의 NAT 게이트웨이에서도 동일한 과정을 거칩니다.
-
AZa의 공용 서브넷(Public_Subnet_AZa)에서는 모든 트래픽을 VPC에 연결된 인터넷 게이트웨이로 전달합니다.
-
리턴 트래픽은 역방향으로 동일한 경로를 따릅니다.
참고: 트래픽은 동일한 가용성 영역에 유지되어 네트워크 방화벽은 동일한 방화벽 엔드포인트를 통해 송신 및 수신 트래픽 경로를 모두 갖습니다. 이렇게 하면 각 가용성 영역의 방화벽 엔드포인트에서 패킷 상태 저장 검사를 할 수 있습니다.
다음은 라우팅 테이블의 구성 예시입니다.
Public_Subnet_RouteTable_AZa(서브넷 연결: Public_Subnet_AZa)
대상 | 타깃 |
---|
0.0.0.0/0 | 인터넷 게이트웨이 |
10.0.0.0/16 | 로컬 |
10.0.128.0/20 | AZa의 방화벽 엔드포인트 |
참고: 이 예에서 10.0.128.0/20은 Private_Subnet_AZa의 CIDR입니다.
Public_Subnet_RouteTable_AZb(서브넷 연결:
Public_Subnet_AZb)
대상 | 타깃 |
---|
0.0.0.0/0 | 인터넷 게이트웨이 |
10.0.0.0/16 | 로컬 |
10.0.16.0/20 | AZb의 방화벽 엔드포인트 |
참고: 이 예에서 10.0.16.0/20은 Private_Subnet_AZb의 CIDR입니다.
Firewall_Subnet_RouteTable_AZa(서브넷 연결:
Firewall_Subnet_AZa)
대상 | 타깃 |
---|
0.0.0.0/0 | Public_Subnet_AZa의 NAT 게이트웨이 |
| |
10.0.0.0/16 | 로컬 |
Firewall_Subnet_RouteTable_AZb(서브넷 연결: Firewall_Subnet_AZb)
대상 | 타깃 |
---|
0.0.0.0/0 | NAT gateway in Public_Subnet_AZb |
10.0.0.0/16 | 로컬 |
Private_Subnet_RouteTable_AZa(서브넷 연결: Private_Subnet_AZa)
대상 | 타깃 |
---|
0.0.0.0/0 | AZa의 방화벽 엔드포인트 |
10.0.0.0/16 | 로컬 |
Private_Subnet_RouteTable_AZb(서브넷 연결: Private_Subnet_AZb)
대상 | 타깃 |
---|
0.0.0.0/0 | AZb의 방화벽 엔드포인트 |
10.0.0.0/16 | 로컬 |
라우팅이 올바르게 구성되었는지 확인하려면 프라이빗 서브넷 하나에 EC2 인스턴스를 배포하여 인터넷 연결을 테스트할 수 있습니다.
네트워크 방화벽 정책에 구성된 규칙이 없으면 트래픽 검사를 거치지 않고 인터넷에 도달합니다. 라우팅, 보안 그룹, 네트워크 액세스 제어 목록(네트워크 ACL)이 구성되어 있는지 확인한 후 방화벽 정책에 규칙을 추가합니다.
참고: 인터넷에서 방화벽을 통해 트래픽을 라우팅한 다음 NAT 게이트웨이로 라우팅하도록 네트워크 방화벽을 설정할 수도 있습니다.
자세한 내용은 인터넷 게이트웨이 및 NAT 게이트웨이가 있는 아키텍처를 참고하세요.
관련 정보
AWS Network Firewall에서 로깅 및 모니터링
라우팅 테이블 개념
VPC 라우팅 기능이 향상된 AWS Network Firewall의 배포 모델