네트워크 액세스 제어목록(ACL) 이란?
네트워크 액세스 제어 목록(ACL)은 서브넷 수준에서 특정 인바운드 또는 아웃바운드 트래픽을 허용하거나 거부합니다.
VPC에 대한 기본 네트워크 ACL을 사용하거나 보안 그룹에 대한 규칙과 유사한 규칙을 사용하여 VPC에 대한 사용자 지정 네트워크 ACL을 생성하여 VPC에 보안 계층을 추가할 수 있습니다.
보안 그룹 및 네트워크 ACL 비교
보안 그룹 | 네트워크 ACL |
인스턴스 레벨에서 운영됩니다. | 서브넷 레벨에서 운영됩니다. |
인스턴스와 연결된 경우에만 인스턴스에 적용됨 | 연결된 서브넷에서 배포된 모든 인스턴스에 적용됨(보안 그룹 규칙이 지나치게 허용적일 경우 추가 보안 계층 제공) |
허용 규칙만 지원 | 허용 및 거부 규칙 지원 |
트래픽 허용 여부를 결정하기 전에 모든 규칙을 평가 | 트래픽 허용 여부를 결정할 때 가장 낮은 번호의 규칙부터 순서대로 규칙을 평가합니다. |
Stateful: 규칙에 관계없이 반환 트래픽이 허용됨 | Stateless: 반환 트래픽(아웃바운드)이 규칙에 따라 명시적으로 허용되어야 함 |
https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/VPC_Security.html#VPC_Security_Comparison
보안 그룹만을 사용하여 인스턴스를 보호할 수 있습니다. 그러나 네트워크 ACL을 추가 방어 계층으로 추가할 수 있습니다. 앞서 말했듯, 보안그룹 (SG)는 인스턴스에 적용되고 NACL는 Subnet 에 적용되기 때문에 SG보다 NACL이 먼저 트래픽을 필터링합니다.
NACL은 보안그룹보다 세세한 설정이 가능하지만 인바운드와 아웃바운드를 전부 설정해야하기 때문에 보안상 엄격한 서비스가 아니라면 굳이 사용하지 않는 경우도 많습니다.
📌 네트워크 ACL 적용
📚 살펴보기
AWS 콘솔 창 - VPC 검색 - 왼쪽 카테고리 네트워크 ACL 선택
콘솔 창에서 연결 대상을 클릭하면 해당 NACL이 어떤 서브넷에 적용되어있는지 확인할 수 있습니다.
NACL 은 보안그룹과는 달리, 규칙 번호가 있습니다. NACL은 트래픽의 허용 여부를 결정할 때, 순서번호가 낮은 규칙부터 평가하여 허용 여부를 결정합니다.
🔐 NACL 생성
1. NACL 생성
AWS 콘솔 창 - VPC 검색 - 왼쪽 카테고리 네트워크 ACL 선택 - 네트워크 ACL 생성 버튼 클릭
이름 및 VPC를 지정하고 네트워크 ACL을 생성합니다.
2. 서브넷 추가
ACL 생성 후 적용할 서브넷을 추가합니다.
서브넷 연결 편집 → NACL을 적용할 서브넷을 선택하고 변경사항 저장 버튼을 눌러 서브넷을 추가합니다.
아직은 서브넷에 대해 모든 인바운드 규칙을 Deny 시켰기 때문에 해당 서브넷은 접속할 수 없습니다. (방화벽 역할)
3. NACL 규칙 추가 (인바운드)
NACL에서 허용할 트래픽에 대해 인바운드 규칙을 추가합니다.
본 화면에서 새 규칙을 추가해주면 됩니다.
NACL 에서는 트래픽을 허용할 규칙에 대해 규칙 번호가 낮은 규칙부터 순서대로 확인하기 때문에 순서를 꼭 기입해야합니다. 보통 100, 200, 300 .. 처럼 100단위로 많이 사용합니다.
4. NACL 규칙 추가 (아웃바운드)
보안 그룹은 Stateful 방식으로, 허용된 트래픽의 주소를 기억하기 때문에 아웃바운드 규칙은 자동으로 적용됩니다. 하지만, NACL은 Stateless하게 동작하기 때문에 아웃바운드 규칙도 명시해주어야 정상적인 통신이 가능합니다.
아웃 바운드 포트는 랜덤이기 때문에 AWS에서 사용되지 않는 1024부터 65535까지의 포트를 지정해주어야 합니다.
VPC에서 외부로 나갈 수 있는 대상 IP를 지정해주면 됩니다. (0.0.0.0/0 - 모든 대상)