NACL (네트워크 ACL)
: 1개 이상의 서브넷 내부와 외부의 트래픽을 제어하기 위한 방화벽 역할을 하는 VPC를 위한 선택적 보안 계층.
- 보안 그룹 처럼 방화벽 역할
- 서브넷 단위
- 인스턴스 단위로 제어할 수 없음.
- 다양한 서브넷에 연동 가능함(1:N) ( 하나의 서브넷은 하나의 NACL에 연동 가능)
- Port 및 IP를 직접 Deny 가능함.
- 외부 공격을 받는 상황 등 특정 IP를 블록하고 싶을 때 사용함.
- 보안 그룹으로 해결하지 못하는 부분을 허용하는 역할
- Stateless: 들어오는 트래픽 and 나가는 트래픽 구분 X
- Outbound에 Ephemeral Port(임시 포트) 범위를 열어 주어야 정상적으로 통신이 가능
Stateful
- client는 임의의 큰 숫자포트 (Ephemeral Port)를 사용
- Server는 Well Known Port를 사용하여 client의 트래픽 허용
- 보안 그룹이 Outbound Allow 가 none 이라도 어떤 조건이 들어오더라도 트래픽을 내보냄
Stateless
- NACL은 Outbound Allow가 none 이라면, 트래픽을 내보내지 X
- 한 Client의 Ephemeral Port(ex 56630)를 허용하더라도 다른 Client가 같은 56630을 사용한다는 보장이 없음. 다른 Port를 Allow 하기 까다로움
NACL 규칙
- 규칙번호: 규칙에 부여되는 고유 숫자, 낮은 번호부터 규칙이 순서대로 평가됨. => 낮은 규칙번호를 우선적용
- AWS추천은 100씩 증가함. 규칙 중간 중간 추가하기 용이하게 하기 위함
- 유형: 트래픽 유형(SSH = 22, DNS = 53, UDP = 17)
- 프로토콜: 통신 프로토콜(TCP, UDP ...)
- 포트 범위: 허용 or 거부
- 소스: IP주소의 CIDR 블록
- 허용/거부(Allow/Deny)
좋지 않은 규칙순서
규칙번호 | 프로토콜 | 포트 범위 | 소스 | 허용/거부 |
100 | TCP | 80 | 0.0.0.0/0 | Allow |
200 | TCP | 80 | 112.12.35.2/32 | Deny |
* | ALL | ALL | 0.0.0.0/0 | Deny |
올바른 규칙순서
규칙번호 | 프로토콜 | 포트 범위 | 소스 | 허용/거부 |
100 | TCP | 80 | 112.12.35.2/32 | Deny |
200 | TCP | 80 | 0.0.0.0/0 | Allow |
* | ALL | ALL | 0.0.0.0/0 | Deny |
규칙번호 간격이 커 추가 규칙을 넣기 용이함.
규칙번호 | 프로토콜 | 포트 범위 | 소스 | 허용/거부 |
50 | TCP | 3306 | 112.12.35.2/32 | Allow |
100 | TCP | 80 | 112.12.35.2/32 | Deny |
200 | TCP | 80 | 0.0.0.0/0 | Allow |
* | ALL | ALL | 0.0.0.0/0 | Deny |
NACL 고려할 점
- Stateless 방화벽이기에 Outbound 신경써야함.
- 임시포트 Allow / Linux(32768~61000), Windows(49152~65535) , Windows XP(1025~5000)
- 서브넷 내부 트래픽에는 적용 X / 서브넷에서 들어오거나 나가는 트래픽에만 적용이 됨.
- 멀티 아키텍쳐(서브넷이 2개 이상이라면) --> 복잡 --> 보안그룹 우선 사용
- VPC 생성할 때 기본적으로 하나 생성됨(모든 트래픽 Allow)
- 직접 NACL을 생성할 때는 모든 트래픽이 Deny
- 하나의 서브넷 -- 하나의 NACL
- 하나의 NACL -- N개의 서브넷
'Public Cloud > AWS' 카테고리의 다른 글
fdgxfgd (0) | 2023.01.30 |
---|---|
55 (0) | 2023.01.27 |
[AWS] Amazon API Gateway (0) | 2023.01.18 |
[AWS] Lambda (0) | 2023.01.18 |
[AWS] - 이벤트 매칭 규칙 (0) | 2023.01.17 |