[AWS] Fortigate를 이용한 Outbound traffic 통제, 구성[1/2]
[AWS] NetworkFirewall 기능 정리
[AWS] Traffic은 어떻게 통제해야 할까? AWS 에는 EC2 또는 VPC 기준으로 트래픽을 통제하는 방법이 다양하다. 대표적으로 Route53 DNS Firewall, NetworkFirewall, SG, NACL, 3rd Firewall이 있다. 각 서비스마다..
dobby-isfree.tistory.com
최초에 Networkfirewall을 이용하여 Outbound Traffic을 제어하고자 하였으나, 기능이 너무 부실하다.
그래서 많이들? 사용하고 있다는 Fortigate를 이용하여 Outbound를 통제하기 위한 구성을 하고, 기능을 나열한다.
Fortiagate 구성도
우선 대전제는 Fortigate를 위한 VPC를 별도로 분리하고, 모든 트래픽은 Fortigate에서 제어한다.
AWS Blog를 보면 다양한 구성 방안이 있으면 그 중에서 필자는 별도의 VPC를 생성하고 모든 트래픽을 집중화하는것을 선택했다.
이러한 구성을 선택한 이유는 트래픽을 집중화하면 단일 지점에서 장애 또는 로그 모니터링하기가 쉽고, VPC Endpoint 등의 확장성도 좋다고 판단했기 때문이다.
Fortigate 구성방안
위 구성도를 보면 어떻게 구성할지 대략적으로 알 수 있으나, 필자가 진행한 순서에 대해 정리하였다.
1. Fortigate전용 VPC를 분리하고 이에 맞춰서 Public, Private subnet을 분리한다. 2. Private subnet에 Fortigate 인스턴스를 생성하고, 라이선스를 넣어준다. 3. Fortigate 인스턴스를 대상으로 하는 Target group을 만들고 GWLB를 만든다. - Target group을 지정할 때는 health check 등을 고려해야하고, GWLB를 만든다음에 인스턴스에 SG를 반영해야 한다. 4. GWLB Arn을 서비스로 하는 VPC Endpoint Service를 만든다. 5. 4.에서 생성한 VPC Enpoint Service를 사용하는 VPC Enpoint를 Service VPC에 만든다. - VPC Enpoint를 Service VPC에 만드는것이 중요하다!!! 6. Service VPC, Fortiagate VPC 라우팅 설정을 한다. - Service VPC에서 0.0.0.0/0 → 5.에서 생성한 VPC Endpoint로 잡는다. 7. 이후 Fortigate에서 일부 설정을 해줘야한다. - 이건 설정은 할 수 있겠는데, 말로 설명하기가 어렵다.. 이부분은 Fortigate 엔지니어에게 문의하면 바로 해준다ㅎㅎ |
전체적인 트래픽은 흐름은 아래와 같다!!!
Service VPC Traffic -> VPC Enpoint -> VPC Enpoint Service -> GWLB -> Fortigate 인스턴스 -> NAT/IGW -> 인터넷
Fortigate 트래픽 흐름
• 내부 -> 외부
- GWLB Enpoint 서비스를 통해 모든 트래픽을 fortigate-poc로 전달
- fortigate에서 방화벽 정책에 따라 Allow/Drop 결정
- fortigate subnet의 NAT / Internet Gateway를 통해 외부 인터넷 사용 가능
→ 즉, 인터넷 사용시에는 fortigate의 public IP를 사용한다.
• 내부 -> 내부
- GWLB Enpoint 서비스를 통해 모든 트래픽을 fortigate-poc로 전달
- fortigate에서 방화벽 정책에 따라 Allow/Drop 결정
- 내부 IP 트래픽에 대해서는 transitGateway로 전송
→ transitGateway Routing에 따라서 VPC Routing되며, 서버간 통신 가능
AWS Blog 또는 기타 다른 게시물을 보면 AWS + Fortigate 구성 방안과 사례가 많이 나와있다.
근데 GWLB를 처음 사용해보는것이고, 게시물에서 구성방법이 잘 나와있지 않아서 많은 시행착오가 있었다;;
혹시 이글을 보고, 구성을 진행하시는분들중에서 잘 안되시는분이 있으면 댓글 남겨주시면 답변드리도록 하겠습니다~