실제 방화벽(iptables, 클라우드 보안 그룹 등)은 규칙을 위에서부터 순서대로 검사하다가
가장 먼저 일치하는 규칙에서 즉시 멈춘다. 아래에서 패킷을 골라 보내고
어떤 규칙에서 멈추는지, 그리고 순서를 바꾸면 결과가 어떻게 달라지는지 관찰해보자.
대기 중...
0STATE: ESTABLISHED, RELATED (상태 기반)ACCEPT
1TCP 22(SSH) ← 203.0.113.0/24 (사무실 고정 IP)ACCEPT
2TCP 22(SSH) ← ANYDROP
3TCP 80, 443(HTTP/S) ← ANYACCEPT
4TCP 3389(RDP) ← ANYDROP
·기본 정책 (Default Policy) — 나머지 전부DROP
// 패킷 대기 중...
📄 iptables 규칙 예시
# 기본 정책: 들어오는 건 일단 다 막는다iptables -P INPUT DROP# ① 상태 기반: 이미 맺어진 연결의 응답은 무조건 허용iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT# ② 사무실 대역만 SSH 허용iptables -A INPUT -p tcp --dport 22 \
-s 203.0.113.0/24 -j ACCEPT# ③ 그 외 SSH는 차단iptables -A INPUT -p tcp --dport 22 -j DROP# ④ 웹 서비스 포트는 전체 허용iptables -A INPUT -p tcp -m multiport --dports80,443 -j ACCEPT
🗂️ 연결 추적 테이블 conntrack
PROTO
SRC
DST
STATE
TCP
10.0.0.5:51322
93.184.216.34:443
ESTABLISHED
TCP
10.0.0.5:51410
172.217.0.4:443
TIME_WAIT
UDP
10.0.0.5:60111
8.8.8.8:53
ESTABLISHED
내 PC가 먼저 나간(outbound) 연결만 이 표에 올라간다. 표에 있는 연결의 응답은
인바운드 규칙 1~4를 다시 확인하지 않고 규칙 0에서 즉시 통과 — 이것이 스테이트풀 검사의 핵심.
🔍 헷갈리기 쉬운 개념
방화벽 —
IP·포트·프로토콜 기준으로 통과 여부를 결정 (허가증 검사).
NAT —
사설 IP ↔ 공인 IP 주소를 변환. 통과 여부와는 별개 (본문 「NAT」 참고).
VLAN —
스위치를 여러 방송 도메인으로 분할. 필터링이 아니라 격리 (본문 「VLAN」 참고).
WAF —
IP·포트가 아니라 HTTP 요청 내용(SQL 인젝션·XSS 패턴 등)을 검사.