📚 네트워크 · 패킷 분석 › 06. 방화벽 · IDS 기초 — 253편
이전 글: 252. Firewall이란 무엇인가 · 다음 글: 254. Stateful Firewall

1. 개념

Packet Filtering Firewall은 패킷 한 개의 헤더 정보(IP 주소, 프로토콜, 포트, TCP 플래그)만 보고 규칙과 비교해 통과 여부를 정하는 방식입니다. 이전 패킷과의 관계, 즉 "이 패킷이 어떤 연결의 일부인가"를 기억하지 않기 때문에 Stateless(상태 비저장) 방화벽이라고도 부릅니다.

라우터·L3 스위치의 ACL이 대표적인 패킷 필터이며, 장비 설정 방법은 04 영역 178. ACL에서 다뤘습니다. 이 글은 상태를 모르는 판단이 어떤 약점과 흔적을 남기는가를 봅니다.

비교 항목Packet FilteringStateful (254. Stateful Firewall)
판단 단위패킷 하나연결(세션)
응답 패킷 처리별도 허용 규칙 필요세션 테이블로 자동 허용
기억하는 정보없음5-tuple, 상태, 타임아웃
처리 부담낮음세션 테이블 유지 비용
대표 사례라우터 ACL, 대용량 회선 앞단 필터대부분의 현대 방화벽

2. 동작 원리

내부 PC가 외부 웹 서버에 접속할 때, 패킷 필터는 요청과 응답을 서로 다른 패킷으로 판단합니다.

[요청] 192.168.10.25:51544 → 203.0.113.80:443  SYN
   ↓ 규칙 A: 내부 → 외부 TCP dport 443 허용  → 통과
[응답] 203.0.113.80:443 → 192.168.10.25:51544  SYN/ACK
   ↓ 이 패킷은 "외부 → 내부" 방향의 새 패킷
   ↓ 규칙 B가 없으면 → 차단 (연결 실패)
   ↓ 규칙 B: 외부 → 내부 TCP sport 443 허용  (문제의 시작)

응답을 통과시키려면 규칙 B처럼 출발지 포트 기준 허용이나 ACK 플래그 기준 허용(Cisco ACL의 established 키워드는 ACK 또는 RST 비트가 설정된 TCP 패킷과 일치)을 써야 합니다. 두 방법 모두 "진짜 응답인지"는 확인하지 않습니다.

  • 출발지 포트는 보내는 쪽이 마음대로 정할 수 있습니다. 공격자가 출발지 포트를 443으로 맞추면 규칙 B를 통과합니다(260. Source Port 정책).
  • ACK 플래그만 보고 허용하면, 연결 요청(SYN)은 막지만 ACK가 설정된 임의의 패킷은 통과합니다.

3. 주요 특징

특징내용관제 의미
순서대로 비교, 첫 일치 적용규칙 순서가 결과를 결정차단 원인은 "어느 규칙"인지로 설명
헤더만 확인페이로드는 보지 않음허용 포트 안의 공격은 보이지 않음
조각 패킷 처리두 번째 이후 조각에는 TCP/UDP 헤더(포트)가 없음조각 처리 정책이 약하면 우회 가능성
빠른 처리상태 저장 없음대용량 구간 앞단 1차 필터로 적합
  • 조각(Fragment) 문제: IP 조각의 첫 번째 조각에만 포트 정보가 있습니다. 패킷 필터가 비첫 조각을 어떻게 처리하는지(허용/차단/재조립)는 장비마다 다릅니다. IP 조각 구조는 28. MTU와 IP 단편화 — 큰 패킷이 쪼개질 때을 참고합니다.
  • ACK Scan과의 관계: ACK만 설정된 패킷을 보내는 ACK Scan은 방화벽이 상태 기반인지 판별하는 데 쓰입니다. Stateless 필터는 ACK 패킷을 통과시켜 대상이 RST로 응답하게 만들고, Stateful 방화벽은 세션에 없는 ACK를 버립니다. 해석은 05 영역 222. ACK Scan에서 다룹니다.

4. 예시

nftables로 상태 추적을 쓰지 않는 필터를 만들면 응답용 규칙이 따로 필요하다는 점을 확인할 수 있습니다. 실습 예시(값은 환경마다 다름)이며 Rocky/Ubuntu 공통입니다.

# 실습 예시: 상태 추적 없이 웹 접속만 허용하려는 필터 (문제점 확인용)
table inet stateless_lab {
    chain forward {
        type filter hook forward priority 0; policy drop;
        iifname "ens37" tcp dport 443 accept comment "요청"
        iifname "ens33" tcp sport 443 accept comment "응답 (출발지 포트만 확인)"
    }
}

두 번째 규칙은 "외부에서 출발지 포트 443으로 오는 모든 TCP"를 허용합니다. 같은 목적을 상태 기반으로 쓰면 ct state established,related accept 한 줄로 실제로 내부에서 시작된 연결의 응답만 허용할 수 있습니다(254. Stateful Firewall).

Cisco 계열 ACL의 로그는 다음과 같은 형식으로 남습니다.

# 형식 예시 (값은 환경마다 다름)
%SEC-6-IPACCESSLOGP: list OUTSIDE-IN denied tcp 198.51.100.7(40022) -> 10.20.0.10(3389), 1 packet

5. 보안 관점

  • 패킷 필터만으로 경계를 보호하면 출발지 포트 위조와 ACK 패킷을 이용한 통과 시도에 약합니다.
  • 패킷 필터는 여전히 유용합니다. 명백히 불필요한 대역·프로토콜을 앞단에서 걸러 방화벽 부하를 줄이는 1차 필터로 씁니다.
  • 위조 출발지(인터넷에서 들어오는 사설 IP 출발지 등)를 걸러내는 규칙은 상태와 무관하므로 패킷 필터에서도 효과적입니다(258. Source IP 정책).
  • 조각 패킷 처리 방식이 문서화되어 있는지 확인합니다.

6. SOC 관점

관제자가 확인할 질문

  • 이 로그를 남긴 장비는 Stateless 필터(ACL)인가, Stateful 방화벽인가? 판단 방식에 따라 "허용"의 의미가 다릅니다.
  • 외부에서 들어온 패킷이 출발지 포트 53·80·443 같은 잘 알려진 값인데 목적지가 내부의 높은 포트라면, 정상 응답인가 위조인가? 앞선 내부발 요청이 있었는지 확인합니다.
  • ACK·FIN만 설정된 패킷이 세션 없이 대량으로 들어오는가? 스캔 가능성을 봅니다.
흔적의심 방향
요청 기록 없이 외부발 "응답 형태" 패킷 다수출발지 포트 위조, 스캔
ACL deny 로그의 목적지 포트가 넓게 분포포트 스캔
조각 패킷만 반복 수신필터 우회 시도 또는 MTU 문제

오탐 주의: 비대칭 라우팅이나 타임아웃으로 세션이 먼저 끊긴 뒤 도착한 늦은 응답도 "요청 없는 응답"처럼 보입니다. 같은 시간대 반대 방향 통신을 함께 확인합니다.


7. 핵심 정리

  • Packet Filtering Firewall은 패킷 한 개의 헤더만 보고 판단하는 Stateless 방식입니다.
  • 응답 패킷을 위해 출발지 포트나 ACK 플래그 기반 허용이 필요하고, 이것이 위조에 약한 지점이 됩니다.
  • 비첫 조각 패킷에는 포트 정보가 없어 조각 처리 방식이 중요합니다.
  • ACK Scan 결과는 필터가 Stateless인지 Stateful인지 드러냅니다.
  • 로그 해석 시 먼저 "어떤 방식의 장비가 남긴 로그인가"를 확인합니다.
profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글