개인의 기록
  • 소개
  • 프로젝트
  • 글
  • 링크

© 2026 newgirok

← 글 목록

Security Group & NACL — AWS 네트워크 방화벽

2026년 2월 28일
AWSSecurity GroupNACL방화벽

AWS VPC 안에서 트래픽을 제어하는 방화벽은 두 계층으로 구성됩니다. 하나는 인스턴스 수준에서 동작하는 Security Group이고, 다른 하나는 서브넷 수준에서 동작하는 NACL(Network Access Control List)입니다. 두 방화벽은 동시에 적용되며, 트래픽은 NACL → Security Group 순서로 검사를 통과해야 인스턴스에 도달합니다.

Security Group — 인스턴스 수준 방화벽

Security Group은 EC2 인스턴스, RDS 데이터베이스 등 개별 리소스에 연결되는 가상 방화벽입니다.

Security Group의 핵심 특성은 Stateful(상태 저장) 방식입니다.

Stateful이란 인바운드 요청을 허용하면, 그에 대한 아웃바운드 응답 트래픽은 별도 규칙 없이 자동으로 허용된다는 의미입니다. 즉 연결 상태를 추적하여 요청과 응답을 하나의 세션으로 인식합니다.

[클라이언트] ---(인바운드 80 허용)---> [EC2]
[클라이언트] <--(응답 자동 허용)------ [EC2]
             (아웃바운드 규칙 불필요)

Security Group의 또 다른 특성은 기본 거부(Implicit Deny)입니다. 규칙에 명시적으로 Allow한 트래픽 외에는 모두 차단됩니다. Deny 규칙은 존재하지 않으며 Allow 규칙만 추가할 수 있습니다.

Inbound / Outbound 규칙 예시

Inbound Rules (웹 서버용)
+----------+-------+------------------+---------------------+
| Protocol | Port  | Source           | 설명                |
+----------+-------+------------------+---------------------+
| TCP      | 80    | 0.0.0.0/0        | HTTP 허용           |
| TCP      | 443   | 0.0.0.0/0        | HTTPS 허용          |
| TCP      | 22    | 10.0.0.0/8       | 내부망 SSH만 허용   |
+----------+-------+------------------+---------------------+

Outbound Rules (기본값)
+----------+-------+------------------+---------------------+
| Protocol | Port  | Destination      | 설명                |
+----------+-------+------------------+---------------------+
| All      | All   | 0.0.0.0/0        | 모든 아웃바운드 허용|
+----------+-------+------------------+---------------------+

하나의 Security Group을 여러 인스턴스에 연결할 수 있고, 하나의 인스턴스에 여러 Security Group을 동시에 적용할 수 있습니다.

NACL — 서브넷 수준 방화벽

NACL(Network ACL)은 서브넷 경계에서 동작하는 방화벽입니다. 서브넷으로 들어오거나 나가는 모든 트래픽에 적용됩니다.

NACL의 핵심 특성은 Stateless(무상태) 방식입니다. 인바운드 트래픽을 허용했더라도 그에 대한 응답 아웃바운드 트래픽은 별도로 명시적 허용 규칙이 필요합니다. 각 패킷을 독립적으로 평가하기 때문입니다.

[클라이언트] ---(인바운드 80 허용 필요)---> [Subnet]
[클라이언트] <--(아웃바운드 임시포트 허용 필요)-- [Subnet]

NACL 규칙에는 번호 순서가 있습니다. 낮은 번호의 규칙부터 순서대로 평가하며, 조건에 일치하는 첫 번째 규칙이 적용되면 이후 규칙은 더 이상 확인하지 않습니다. Allow와 Deny를 모두 명시할 수 있습니다.

NACL Inbound Rules
+------+----------+-------+-----------+--------+
| 규칙 | Protocol | Port  | Source    | Action |
+------+----------+-------+-----------+--------+
| 100  | TCP      | 80    | 0.0.0.0/0 | Allow  |
| 200  | TCP      | 443   | 0.0.0.0/0 | Allow  |
| 300  | TCP      | 22    | 1.2.3.4/32| Deny   |  <- 특정 IP 차단
| *    | All      | All   | 0.0.0.0/0 | Deny   |  <- 기본 거부
+------+----------+-------+-----------+--------+

Security Group vs NACL 비교

+------------------+------------------+------------------+
|                  |  Security Group  |  NACL            |
+------------------+------------------+------------------+
| 적용 범위        | 인스턴스(ENI)    | 서브넷           |
| 상태 추적        | Stateful         | Stateless        |
| 규칙 유형        | Allow만 가능     | Allow + Deny     |
| 규칙 평가        | 모든 규칙 적용   | 번호 순서대로    |
| 기본 동작        | 모두 거부        | 모두 허용(신규)  |
| 규칙 수          | 제한적           | 상대적으로 많음  |
+------------------+------------------+------------------+

두 방화벽의 협력 구조

인터넷
  |
  v
NACL 인바운드 검사 (서브넷 입구)
  |
  v
Security Group 인바운드 검사 (인스턴스 입구)
  |
  v
EC2 인스턴스 (요청 처리)
  |
  v
Security Group 아웃바운드 검사 (Stateful: 자동 허용)
  |
  v
NACL 아웃바운드 검사 (Stateless: 명시적 허용 필요)
  |
  v
인터넷

일반적으로 Security Group만으로도 대부분의 트래픽 제어가 가능합니다. NACL은 특정 IP를 명시적으로 차단(Deny)해야 하거나, 서브넷 전체에 일괄 규칙을 적용해야 할 때 추가로 사용합니다.

← 이전 글VPC — AWS 안에 나만의 네트워크 구축
다음 글 →S3 — 객체 스토리지