안녕하세요 서후아빠입니다. ^_^
이번 세션은 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 구성요소 생성하기
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 참조 바랍니다. |
'Security' 카테고리의 다른 글
[실습] AWS WAF 구성하기 (0) | 2022.08.05 |
---|---|
[이론] AWS WAF 기본 개념 (0) | 2022.08.04 |
[이론] AWS Network Firewall 기본 개념 (1) | 2022.07.27 |
[이론] AWS KMS (Key Management Service) 기본 개념 (0) | 2022.07.27 |
[실습] AWS Certificate Manager (ACM)을 이용하여 인증서(Public, Private) 발급하여 Route 53과 ELB 연동하기-2편 (2) | 2022.07.26 |