692. 상태 기반 감시 (Stateful Inspection) - 세션 테이블 체크 기술

핵심 인사이트: 1세대 패킷 필터 방화벽은 심각한 건망증 환자였다. 내가 아까 자장면을 시켰는지 짬뽕을 시켰는지 기억하지 못해서, 다방 배달부로 위장한 해커가 갑자기 짜장면(정상 IP 패킷)을 들고 오면 문을 활짝 열어주었다. 이를 고치기 위해 방화벽 안에 '주문 장부(세션 테이블)'를 달아주고, "내가 시킨 것만 통과시켜라!"라고 똑똑하게 진화시킨 2세대 방화벽이 상태 기반 감시다.

Ⅰ. 상태 기반 감시 (Stateful Inspection)의 탄생

  • 개념: 방화벽 내부에 통신의 맥락(Context)을 기억하는 상태 테이블(State/Session Table)이라는 메모리를 두고, 현재 오고 가는 모든 패킷이 '이전에 맺어진 정당한 연결(Session)의 연장선인가?'를 검사하는 2세대 방화벽 기술입니다. Check Point 사가 특허를 내며 방화벽 시장의 표준을 바꿨습니다.
  • 작동 계층: 기본적으로 3~4계층을 보지만, 응용 프로그램의 연결 상태(세션)를 추적한다는 점에서 제한적인 7계층 기능까지 포괄합니다.

Ⅱ. 핵심 동작 원리 (세션 테이블의 마법) 🌟

상태 기반 방화벽은 TCP 3-Way Handshake 과정을 철저히 기록합니다.

  1. 내부망 ➜ 외부망 요청 (장부 기록):
    • 사내 직원이 네이버(외부) 웹서버로 접속하기 위해 [SYN] 패킷을 던집니다.
    • 방화벽은 이 패킷을 통과시키면서, 즉시 자신의 세션 테이블(장부)에 **"직원 A (IP: 10.0.0.1, Port: 5000) ➜ 네이버 (IP: 220.x.x.x, Port: 80) 접속 요청 중"**이라고 한 줄을 기록(State)합니다.
  2. 외부망 ➜ 내부망 응답 (장부 대조):
    • 0.1초 뒤 네이버 서버가 [SYN+ACK] 응답 패킷을 방화벽으로 보냅니다.
    • 방화벽은 ACL(허용 규칙)을 보기 전에 먼저 자기의 '세션 테이블(장부)'부터 뒤집니다.
    • "어? 아까 우리 직원 A가 80번 포트로 네이버에 요청했던 그 대화의 연장선이네?"라고 문맥을 파악한 뒤, 이 패킷을 묻지도 따지지도 않고 무사통과시킵니다.
  3. 해커의 위장 패킷 (차단):
    • 만약 해커가 뜬금없이 네이버 IP로 위장하여 [ACK][RST] 패킷을 사내망으로 툭 던졌다고 가정해 봅시다 (세션 하이재킹 등).
    • 방화벽이 장부를 까봅니다. **"내 장부에 이 녀석이 먼저 나한테 요청한 기록이 없는데? 넌 가짜다!"**라며 즉각 이 패킷을 버립니다(Drop).

Ⅲ. 상태 기반 감시의 장단점

  • 장점 (보안과 속도의 타협점):
    • 1세대 패킷 필터링보다 보안성이 압도적으로 높습니다(위장 공격, 비정상 패킷 원천 차단).
    • 3세대 애플리케이션 프록시처럼 매번 짐칸(Payload)을 다 뜯어볼 필요 없이 장부(세션)만 확인하므로 속도 병목이 크지 않아 가장 가성비 좋은 대중적인 방화벽이 되었습니다.
  • 치명적 단점 (세션 테이블 고갈 공격, SYN Flood):
    • 해커가 이를 역이용합니다. 방화벽의 장부(메모리) 용량이 한정되어 있다는 점을 노려, 가짜 [SYN] 요청 패킷을 1초에 10만 개씩 들이부어 방화벽이 장부에 쓰다가 메모리가 터져서(세션 테이블 풀) 방화벽이 다운되게 만드는 **DDoS 공격(SYN Flooding)**에 취약해졌습니다.

📢 섹션 요약 비유: 상태 기반 감시는 대기업 1층 로비의 안내 데스크입니다. 예전 경비원(1세대)은 사원증(IP) 모양만 비슷하면 무조건 출입증을 줬습니다. 하지만 지금 안내 데스크 직원은 방문객 장부(세션 테이블)를 꼼꼼히 적습니다. "영업부 김 대리님이 2시에 피자 배달을 불렀음"이라고 적혀있지 않으면, 아무리 정상적인 피자 배달부(위장 패킷)가 와도 절대 윗층으로 올려보내지 않는 영리함을 갖췄습니다. 하지만 장난 전화 배달을 수만 통 시키면 직원이 장부 적다가 과로사(메모리 초과)하는 단점이 있습니다.