본문 바로가기

Security

[실습] AWS Network Firewall 구성하기

반응형

안녕하세요 서후아빠입니다. ^_^

이번 세션은 AWS Network Firewall에 대해서 여러 가지 정책 시나리오와 함께 실습을 해보겠습니다.

독립형, 중앙집중형(TGW 통해 구현 가능) 구성이 가능하나, 이번 세션은 독립형으로 실습을 진행합니다. 중앙집중형은 TGW를 구성하여 모든(라우팅 : 0.0.0.0/0 -> TGW) 패킷을 Network Firewall이 존재하는 VPC로 전달하는 구성입니다. 


구성도

사전 작업

인프라 생성 : vpc, subnet, igw, routing table, ec2, nlb 등은 설명 생략합니다.

2022.07.02 - [Networking] - [실습] Amazon VPC 구성요소 생성하기

 

[실습] Amazon VPC 구성요소 생성하기

안녕하세요 서후아빠입니다. ^_^ 이번 세션은 VPC 관련 구성요소에 대해서 실습을 해보겠습니다. 구성도 1단계 : VPC 생성 VPC > Your VPCs > Create VPC 구분 VPC settings (VPC Only 방식) VPC settings (VPC a..

sh-t.tistory.com

1단계 : Network Firewall 생성

VPC > Firewalls > Create firewall : 생성까지 약 5~10분 소요

Firewall details Associated firewall policy Change protections
Name : nfA
VPC : vpcA
Firewall subnets : pubA-sn1, pubA-sn-2
Customize encryption settings : uncheck
Choose how you want to associate a firewall policy : Create and associate an empty firewall policy
New firewall policy name : nfAPolicy1
Delete protection : Enable
Subnet change protection : Enable
Policy를 미리 만들어 놓고 선택도 가능합니다. 
Change protections : 실수로 방화벽 및 서브넷 변경하는 상황을 방지하기 위해 활성화합니다.

VPC > Firewalls > nfA 선택 > Firewall details (tab) : Firewall endpoints 확인

EC2 > Network Interfaces : 2개의 VPC Endpoint interface 생성이 확인됩니다.

VPC > Firewalls > nfA 선택 : Status “Ready” 확인
VPC > Firewall policies : nfA_Policy1 생성 확인

2단계 : Network Firewall Policies 생성

VPC > Firewall policies > Create firewall policy

Describe firewall policy Add rule groups Select encryption options (KMS)
Name : nfA_Policy2 Stateless default actions
Choose how to treat fragmented packets : Use different actions for full packets and fragmented packets (or Use the same actions for all packets)
Default actions for full packets Action : Forward to stateful rule groups
Default actions for fragmented packets Action : Pass
Custom action(옵션) : disabled
-------------------------------------------------------------------------------------
Stateful rule evaluation order and default actions
Rule order : Default (or Strict)
Customize encryption settings : uncheck
1단계에서 Firewall 생성 시 nfA-Policy1을 생성하였기 때문에 2단계는 생략해도 됩니다. 다만, 설정 방법 가이드를 위해 정리한 부분이며, 생성된 Policy는 여러 방화벽에서 공유 가능하다고 합니다.

Stateless default actions 옵션 : Pass, Drop, Forward to stateful rule groups
Stateful reule order의 Strict 옵션 : Drop all, Drop established, Alert all, Alert established
 - Strict 옵션은 별도 테스트가 필요하며, 이번 세션은 기본값(Default)로 진행하였습니다.

3단계 : Network Firewall rule groups에서 Stateless rule group 생성

VPC > Network Firewall rule groups > Create Network Firewall rule group > Rule group type(Stateless rule group)

Stateless rule group  Add  rule (입력 후 > Add rule) Add  rule (입력 후 > Add rule)
Name : nfA_RG1
Capacity(1~30,000) : 100
Customize encryption settings : uncheck
Priority : 1
Protocol : ICMP, IPv6-ICMP
Source : Any IPv4 Address
Source port : Any port
Destination : 10.0.0.0/16
Destination port : Any port
Action : Drop 
Priority : 2
Protocol : ICMP, IPv6-ICMP
Source : 10.0.0.0/16
Source port : Any port
Destination : Any IPv4 Address
Destination port : Any port
Action : Drop 
Capacitys는 수동 지정해야 하며 하나의 Policy에 등록된 Stateless rule group 총합이 3만 이하이어야 합니다. 그런데 이것을 어떻게 산정해야 하는지 궁금하네요. ㅜㅜ

Protocol은 복수 선택이 가능합니다. 
Port는 Range 지정이 가능합니다. (ex : 80~8080 범위는 80:8080 입력)

위 정책은 Inbound / Outbound ICMP 차단입니다.

4단계 : Network Firewall rule groups에서 Stateful rule group 생성

VPC > Network Firewall rule groups > Create Network Firewall rule group > Rule group type(Stateful rule group)

Stateful rule group  Stateful rule order Rule variables
(옵션, 여러 개 추가 가능)
IP set references
(옵션, 여러 개 추가 가능)
Add  rule (입력 후 > Add rule)
Name : nfA_RG2
Capacity(1~30,000) : 100
Customize encryption settings : uncheck
Stateful rule group options : 5-tuple
Default (or Strict) IP set variable name : -
IP set variable values : -
Port variable name : -
Port variable values : -
IP set reference variable name : -
IP set resource ID : -
Protocol : IP
Source : Any
Source port : Any port
Destination : Any
Destination port : 80
Traffic direction : Forward (or Any)   
Action : Pass (or Drop or Alert)
Capacitys는 수동 지정해야 하며 하나의 Policy에 등록된 Statful rule group(5-tuple + Domain list) 총합이 3만 이하이어야 합니다. 그런데 이것을 어떻게 산정해야 하는지 궁금하네요. ㅜㅜ

Port는 Range 지정이 불가능합니다.

위 정책은 Inbound / Outbound TCP 80 허용입니다.
Stateful rule group  Domain list 비고
Name : nfA_RG3
Capacity(1~30,000) : 100
Customize encryption settings : uncheck
Stateful rule group options : Domain list
Domain name source : .google.com
Source IPs type : Default (or Defined)
Protocols : HTTPS
Action : Deny (or Allow)
-
Capacitys는 수동 지정해야 하며 하나의 Policy에 등록된 Statful rule group(5-tuple + Domain list) 총합이 3만 이하이어야 합니다. 그런데 이것을 어떻게 산정해야 하는지 궁금하네요. ㅜㅜ

Domain name source는 복수 등록이 가능합니다.

Soure Ips type의 Default : 방화벽이 배포된 VPC CIDR (vpcA = 10.0.0.0/16)

위 정책은 https://google.com 차단입니다. 그 외의 domain은 모두 허용이며, http://google.com도 허용입니다.

5단계 : Network Firewall Policies에 Network Firewall rule groups 등록

VPC > Firewall policies > nfA_Policy1 선택 > Stateless rule groups의 Actions > Add unmanaged stateless rule groups > nfA-RG1 선택

VPC > Firewall policies > nfA_Policy1 선택 > Stateful rule groups의 Actions > Add unmanaged stateful rule groups > nfA-RG2, nfA-RG3 선택

Stateless rule groups : Inbound / Outbound ICMP 차단
Stateful rule groups : Inbound / Outbound  TCP 80 허용, https://google.com 차단

6단계 : Route tables 생성

구성도 라우팅 테이블을 참조하여 생성

엣지 연결 : VPC > Route tables > ingress-rt > Edge associations (tab) > Edit edge associations > igwA 선택 > Save 

엣지 연결은 인터넷에서 들어오는 모든 패킷을 igwA에서 nf-ep-A1 또는 nf-ep-A2로 직접 전달하는 기능입니다.

7단계 : 테스트

pubA-ec2-1 or pubA-ec2-2 SSH 접속이 필요합니다.

번호 시나리오 결과
1 인터넷에서 nlb의 Public Domain으로 접속 시도 Stateful rule groups의 Inbound TCP 80 허용으로 Sucess
2 인터넷에서 nlb의 Public Domain으로 Ping 시도 Stateless rule groups의 Inbound ICMP 차단으로 Fail
3 pubA-ec2-1 or pubA-ec2-2에서 http://google.com 접속 시도 Stateful rule groups의 Outbound TCP 80 허용 Sucess
4 pubA-ec2-1 or pubA-ec2-2에서 https://google.com 접속 시도 Stateful rule groups의 https://google.com 차단으로 Fail
5 pubA-ec2-1 or pubA-ec2-2에서 http://google.com로 Ping 시도 Stateless rule groups의 Outbound ICMP 차단으로 Fail
정책 적용 순서에 대해서는 https://sh-t.tistory.com/90의 Firewall engine 참조 바랍니다.
반응형