본문으로 건너뛰기
김신건의 로그

[AWS] Security Group vs NACL: stateful vs stateless 방화벽

· 수정 · 📖 약 1분 · 271자/단어 #aws #security #network #vpc #cloud
Security Group, SG, NACL, Network ACL, stateful firewall, subnet ACL

정의

SG (Security Group)NACL (Network ACL)
상태StatefulStateless
적용ENI / instancesubnet
규칙allow 만allow + deny
평가모든 규칙번호 순
기본inbound deny + outbound allow allallow all

Stateful vs Stateless 의 의미

sequenceDiagram
    Client->>SG: TCP SYN (port 80 inbound)
    SG->>Server: forward
    Note over SG: connection 기억
    Server->>SG: SYN-ACK (응답)
    SG-->>Client: forward (state 인식, outbound 규칙 무시)
  • Stateful (SG): 들어온 연결 = 나가는 응답 자동 허용.
  • Stateless (NACL): 모든 패킷 양방향 규칙 필요. ephemeral port (1024-65535) 까지.

SG 예시

SecurityGroup:
  Description: web servers
  IngressRules:
    - Protocol: tcp
      Port: 443
      CidrIp: 0.0.0.0/0
    - Protocol: tcp
      Port: 22
      CidrIp: 10.0.0.0/16    # 내부 SSH
  EgressRules:
    - Protocol: -1            # 모든 outbound (기본)
      CidrIp: 0.0.0.0/0

SG referencing SG (강력!)

IngressRules:
  - Protocol: tcp
    Port: 5432
    SourceSecurityGroupId: sg-web   # web SG 가진 instance 만 허용

IP 가 아니라 다른 SG 자체. dynamic 환경에서 IP 추적 없이 권한 제어.

NACL 예시

Rules:
  - RuleNumber: 100
    Action: allow
    Protocol: 6   # TCP
    PortRange: { From: 443, To: 443 }
    CidrBlock: 0.0.0.0/0
  - RuleNumber: 200
    Action: allow
    Protocol: 6
    PortRange: { From: 1024, To: 65535 }   # ephemeral
    CidrBlock: 0.0.0.0/0
  - RuleNumber: 32767
    Action: deny
    Protocol: -1

평가 순서

flowchart TD
    Packet[Packet 도착]
    Packet --> SG_In[SG inbound 규칙 평가]
    SG_In --> NACL_In["NACL inbound 평가 (번호 순)"]
    NACL_In --> Routing[VPC routing]
    Routing --> NACL_Out[NACL outbound]
    NACL_Out --> SG_Out[SG outbound]

Default Deny vs Allow

SGNACL
기본 inbounddeny allallow all
기본 outboundallow allallow all
명시 deny불가가능

SG 는 허용만 추가. NACL 은 deny 도 가능특정 IP 차단 같은 용도.

흔한 함정

WARNING

  1. NACL 의 ephemeral port 누락 = 응답이 차단. SG 처럼 stateful 이 아님.
  2. SG 의 outbound 닫음 = NAT 응답 차단. 일반 적으로 outbound 는 기본 allow.
  3. SG 변경 즉시 반영 = 새 연결만. 기존 연결은 남아있을 수 있음.
  4. 너무 넓은 0.0.0.0/0 = SSH 22 public = 즉시 공격. Session Manager 사용.

관련 위키

이 글의 용어 (3개)
[AWS] EC2: 인스턴스 타입, AMI, EBScloud
정의 EC2 (Elastic Compute Cloud) = AWS 의 VM 서비스. instance type (CPU / RAM / NW) 결정 + AMI (OS 이미지) + E…
[AWS] VPC: subnet, route, NAT, peeringcloud
정의 VPC (Virtual Private Cloud) = AWS 안의 논리적 격리 네트워크. CIDR 정의 + subnet 분할 + 라우팅. 구조 Subnet 종류 | 종류 |…
[K8s] NetworkPolicy: pod 간 네트워크 차단kubernetes
정의 NetworkPolicy = pod 간 허용된 트래픽만 통과. 없으면 모든 pod ↔ pod 가 허용 (기본 open). [!IMPORTANT] NetworkPolicy 는…

이 개념을 다룬 위키 페이지 (1)

💬 댓글

사이트 검색 / 명령어

검색

스크롤 = 확대/축소 · 드래그 = 이동 · 0 = 원래 크기 · ESC = 닫기