Cloud/AZURE

Azure Gateway Load Balancer(GWLB)

지기(ZIGI) 2021. 11. 20. 21:19

Today Keys :   GWLB, Gateway, Load Balancer, 부하 분산 장치, 게이트웨이 로드밸런서, 보안, endpoint, nva, appliance, azure, cloud, 클라우드


이번 포스팅에서는 방화벽, 패킷분석, IDS/IPS, Inline DDoS와 같은 3rd-Party NVA(Network Virtual Appliance)를 Azure 트래픽 경로 상에서 Transparent하에 위치할 수 있도록 도와주는 Gateway Load Balancer를 구성하여 테스트해봅니다. 지난 11월 2일에 Azure에서 새로 나온 서비스이며, 현재 Preview로만 제공되고 있습니다. 사용자는 추가적인 관리 오버헤드없이, 고급 네트워크 기능을 Gateway Load Balancer를 통해서 사용이 가능합니다.


 오늘 Azure Gateway Loadbalancer 포스팅에서 다뤄질 구성입니다.

우측에 VNet에 ZIGI-GWLB라는 Gateway Load Balancer와 Load Balancer의 Backend Pool로 사용 될 Fortigate Next Generation Firewall이 있습니다.

좌측의 VNet에는 ZIGI-GWLB를 통해서 트래픽을 Fortigate NGFW로 보낼 웹 서버가 있습니다.

 

 
 
 

현재 Azure Gateway Load Balancer는 Preview 상태이며, 해당 feature가 활성화 된 상태가 아니기 때문에 먼저 feature를 활성화 하는 것이 필요합니다.

현재(11/19일 기준) Gateway Load Balancer Feature 활성화는 Azure Portal에서는 불가하기 때문에 Powershell이나, Azure CLI를 통해서 Feature를 활성화 합니다.

본 포스팅에서는 Azure CLI를 이용해서, 해당 Feature를 활성화합니다.

 

 

az feature show 명령으로 AllowGatewayLoad Balancer feature가 등록된(Registered) 상태임을 확인할 수 있습니다 .

 

본 포스팅에서는 Gateway Load Balancer에 연결을 위해서 FortiGate NGFW를 사용합니다.

FortiGate NGFW 구성 시에 사용되는 NSG(Network Security Group)에서는 Any 오픈 정책을 추가해서 사용합니다.

실제 보안 정책 적용은 FortiGate NGFW 내의 설정에서 적용합니다.

 

FortiGate NGFW는 Azure Marketplace를 이용해서 배포 할 수 있습니다.

만약 테스트 라이선스가 있다면, 테스트 라이선스를 이용해서 배포를 하면 되고,

별도 테스트 라이선스가 없는 경우에 배포 시에 Pay-as-you-go 모델로 선택해서 배포를 하면 됩니다.

본 포스팅에서는 Fortinet 배포는 구성에 대한 부분은 다루지는 않습니다.

 

 

Gateway Load Balancer에 연결할 FortiGate NGFW 배포까지 끝나고 나면, 이제 본격적으로 Gateway Load Balancer를 생성합니다

SKU에 Standard와 Basic 이외에 Gateway가 추가된 것을 볼 수 있습니다. 하지만, 처음에는 Gateway SKU가 비활성화 상태로 보이는 데, Gateway SKU는 Internal Type으로만 사용이 가능하기 때문입니다.

Public으로 되어 있는 Type의 기본 값을 Internal로 바꾸고 나면, Gateway SKU를 선택 할 수 있습니다.

 

 
 
 

이제 Gateway Load Balancer의 Front IP를 설정합니다.

Front IP는 Gateway Load Balancer에 연결된 FortiGate NGFW와 연결을 위해서 사용되며,

또한, 나중에 이 Front IP가 Gateway Load Balancer를 이용해서 FortiGate NGFW로 경유하고자 하는

가상머신의 네트워크 인터페이스나 Load Balancer의 연결에 사용됩니다.

 

 
 

이제 Gateway Load Balancer의 backend pool을 설정합니다.

실제 Gateway Load Balancer를 이용해서 서비스 할 보안 장비가 backend pool에 들어갑니다.

그리고 보안 장비와 연결은 VXLAN을 이용하는 데, VXLAN 구성을 위한 값(Gateway load balancer configuration)을 함께 입력합니다.

Virtual machines에 앞서 미리 생성한 FortiGate NGFW를 연결합니다.

참고로, Gateway Load Balancer의 Backend Pool로 연결되는 NIC에는 공인 IP 주소가 없거나,

혹은 Standard SKU를 갖고 있어야만 연결이 되며, Basic SKU의 공인 IP를 가진 NIC의 경우에는 연결이 불가합니다.

  
 
 
Backend pool을 설정하고, Add를 하면 아래와 같이 Backend pool에  등록된 것을 볼 수 있습니다.
만약 이중화 이상을 구성하려면, 추가로 Fortigate NGFW와 같은 장비를 만들어서 동일하게 연결하면 됩니다.
 
 

다음은 Inbound Rule를 설정합니다.

Front IP는 앞서 입력한 Front IP를 선택하고,

Backend pool도 앞서 만든 ZIGI-GWLB-Backend를 선택합니다.

FortiGate NGFW 상태 체크를 위한 Health Probe도 만들어서 선택합니다.  

 
 

  참고로 Fortigate NGFW를 상태 체크를 위한 health probe는 아래와 같이 만들었습니다.  

 

 

이제 정상적으로, Inbound rule이 설정이 완료된 것을 볼 수 있습니다.  

 

 Outbound rule와 Tag는 추가 설정 없이 진행합니다.  

 

  마지막으로 설정한 값을 확인 후, Gateway Load Balancer를 생성합니다.  

 

생성된 Gateway Load Balancer를 아래와 같이 확인 할 수 있습니다.  

 

이제 Gateway Load Balancer를 이용해서, 웹서버 하나를 FortiGate NGFW를 경유하여 보안 설정을 적용해 보겠습니다.   

아래 그림과 같이 웹서버(ZIGI-WEB)는 Gateway Load Balancer와 FortiGate NGFW가 있는 VNET과는 분리되어 있습니다.

 

웹서버를 만드는 것은 일반 가상 머신 생성과 동일하기 때문에 별도로 다루지는 않습니다.

현재 웹서버는 기본 웹페이지를 띄우도록 미리 설정되어 있습니다.   

ZIGI-WEB이라는 웹서버의 Network Interface 선택하여, IP Configuration을 보면,

현재 10.1.0.4이라는 내부 IP 주소와 함께 외부에서 접속이 가능한 Public IP로 20.X.X.12가 연결된 것을 볼 수 있습니다.

그리고 중간 설정에 보면, 'Gateway Load balancer'라는 메뉴가 있는 것을 볼 수 있습니다.

여기에 방금 전에 만든 ZIGI-GWLB의 Front IP 주소인 ZIGI-GWLB-Front(172.16.10.4)를 선택합니다. 그리고 Save를 클릭합니다.

그럼 이제부터 ZIGI-WEB 가상 머신에 접근 시에,  Gateway Load Balancer를 경유하여 FortiGate NGFW를 통해서 보안 적용이 가능해집니다.

 

이제 20.X.X.12로 웹페이지를 접속해보면, 아래 그림의 하단처럼 정상적으로

ZIGISPACE-Azure-GWLB 라는 메시지가 표기되는 웹피이지가 뜬 것을 볼 수 있습니다.

현재 테스트를 하는 PC의 IP는 223.X.X.4 입니다.  

 

그럼 이제 Fortigate NGFW에서 Log를 확인해 봅니다.

Source와 Service를 각각 223.X.X.4, HTTP로 Filter를 걸어서 확인해보면,

정상적으로 로그를 통과하여 허용된 것을 볼 수 있습니다. 

 

Log를 선택하여 상세 창을 보면, 아래와 같이 상세 로그를 확인 할 수 있습니다. 

 
 

현재의 보안 설정은 아래와 같이 Any Any Open으로 전체 허용이 되어 있습니다.  

 

테스트를 위해서 상단 정책에 HTTP 서비스에 대해서 Deny 정책을 추가해서 테스트 해 보겠습니다.

 

ZIGI-Web에서으로 다시 접속 시에 이제는 정상적으로 페이지에 연결되지 않는 것을 볼 수 있습니다.  

 

Fortigate NGFW Log에서 보면, 방금 전에 위에서 추가한 ZIGI-WEB-DENY라는 Policy에 의해서 차단(Deny)된 것을 확인 할 수 있습니다.