📚 네트워크 · 패킷 분석 › 06. 방화벽 · IDS 기초 — 256편
이전 글: 255. Application Firewall · 다음 글: 257. ACL

1. 개념

Firewall Rule(방화벽 규칙) 은 "어떤 조건에 맞는 트래픽을 어떻게 처리할 것인가"를 적은 정책의 한 줄입니다. 정책 전체의 저장 구조와 운영 주기는 04 영역 181. Firewall 정책에서 다뤘고, 이 글은 규칙 한 줄을 읽고, 규칙들 사이의 관계에서 생기는 문제를 찾는 방법을 다룹니다.

규칙은 조건(Match) 과 동작(Action) 으로 나뉩니다.

구분요소자세히 다루는 글
조건출발지 IP258. Source IP 정책
조건목적지 IP259. Destination IP 정책
조건출발지 / 목적지 포트260. Source Port 정책, 261. Destination Port 정책
조건프로토콜262. Protocol 정책
조건방향(Zone·인터페이스)263. Inbound Policy, 264. Outbound Policy
동작Allow / Deny, 로그265. Allow Policy, 266. Deny Policy, 271. Firewall Logging

한 규칙 안의 조건들은 모두 만족(AND) 해야 일치합니다. 조건 하나에 여러 값을 넣으면(예: 포트 80, 443) 그 안에서는 하나만 만족(OR) 하면 됩니다.


2. 동작 원리

규칙은 위에서부터 비교하며 처음 일치한 규칙의 동작이 적용됩니다. 이 방식 때문에 규칙 사이에 다음 관계가 생깁니다.

규칙 1: 10.10.0.0/16  → any        tcp any   Allow
규칙 2: 10.10.5.0/24  → 10.20.0.30 tcp 3389  Deny   ← 규칙 1에 가려짐
   ↓
10.10.5.14 → 10.20.0.30:3389 패킷
   ↓ 규칙 1 조건(출발지 포함, 목적지 any, TCP any) 모두 일치
   ↓ Allow 적용, 비교 종료
규칙 2는 한 번도 적중하지 않음 (hit count 0)
규칙 관계정의결과
가려진 규칙(Shadowed)위 규칙이 아래 규칙의 범위를 모두 포함하고 동작이 다름아래 규칙은 절대 적용되지 않음
중복 규칙(Redundant)위 규칙이 포함하고 동작도 같음삭제해도 결과 동일, 관리 혼란
상관 규칙(Correlated)범위가 일부만 겹치고 동작이 다름순서를 바꾸면 결과가 달라짐
과도한 허용(Overly Permissive)any가 포함된 넓은 허용의도하지 않은 통신까지 허용

3. 주요 특징

  • 구체적인 규칙을 위에, 넓은 규칙을 아래에 둡니다. 예외(특정 차단)는 일반 규칙(대역 허용)보다 먼저 와야 합니다.
  • 규칙에는 이름·설명이 있어야 로그에서 역추적할 수 있습니다. 로그의 규칙 필드가 번호만 담고 있으면 규칙 순서가 바뀐 뒤 과거 로그의 의미가 달라질 수 있습니다.
  • 적중 수(hit count) 는 규칙 검토의 근거입니다. 오래 적중이 0인 허용 규칙은 정리 후보이고, 갑자기 적중이 늘어난 규칙은 원인 확인 대상입니다.
  • 규칙은 객체(주소 그룹·서비스 그룹) 를 참조하는 경우가 많아, 규칙 한 줄만 보고는 실제 범위를 알 수 없습니다. 객체의 현재 구성도 함께 확인합니다.

4. 예시

iptables에서 규칙 번호와 적중 수를 확인하는 실습 예시입니다(Rocky/Ubuntu 공통, 값은 환경마다 다름).

# 규칙 번호, 패킷/바이트 적중 수, 숫자 주소로 출력
sudo iptables -L FORWARD -n -v --line-numbers

# nftables 환경: handle 번호와 counter 확인 (규칙에 counter가 있어야 표시)
sudo nft -a list chain inet fw forward
# 출력 형식 예시 (값은 환경마다 다름)
num   pkts bytes target  prot opt in    out   source          destination
1     8421  612K ACCEPT  tcp  --  ens37 ens38 10.10.0.0/16    0.0.0.0/0
2        0     0 DROP    tcp  --  ens37 ens38 10.10.5.0/24    10.20.0.30   tcp dpt:3389

2번 규칙의 적중 수가 0인 것은 "그런 트래픽이 없었다"가 아니라 1번 규칙이 먼저 가져갔기 때문일 수 있습니다. 순서를 바꾸면(2번을 1번 위로) 의도대로 동작합니다.

분석 방법 — 가려진 규칙을 찾을 때는 각 규칙의 출발지·목적지·서비스를 범위로 보고, 위쪽 규칙이 아래 규칙의 범위를 모두 포함하는지 비교합니다.


5. 보안 관점

  • 가려진 차단 규칙은 "막고 있다고 믿지만 실제로는 열려 있는" 상태를 만듭니다. 보안 점검에서 가장 위험한 유형입니다.
  • any 규칙은 편하지만 공격자의 내부 이동 경로가 됩니다. 출발지·목적지·서비스 중 하나라도 any인 허용 규칙은 검토 우선순위를 높입니다.
  • 규칙마다 요청자·목적·만료일을 남겨야 "왜 열려 있는가"에 답할 수 있습니다.
  • 규칙 변경은 반드시 변경 이력(감사 로그)으로 추적할 수 있어야 합니다.

6. SOC 관점

관제자가 확인할 질문

  • 이 로그의 규칙 ID·이름은 무엇이고, 그 규칙의 목적과 이 통신이 일치하는가?
  • 차단되어야 할 통신이 허용됐다면, 위쪽에 더 넓은 허용 규칙이 있지 않은가?
  • 사건 시각 전후로 규칙이 추가·수정·순서 변경되지 않았는가?
로그 상황의심할 규칙 문제
의도와 다른 규칙 이름으로 허용가려진 규칙, 넓은 허용 규칙
특정 규칙 적중이 급증새 서비스, 스캔, 악성 통신
기본 차단 규칙 적중 급증누락된 허용 규칙 또는 외부 스캔

오탐 주의: 적중 수 0인 규칙이 모두 불필요한 것은 아닙니다. 재해 복구·분기 작업처럼 드물게 쓰이는 규칙도 있으므로 담당자 확인 후 정리합니다.


7. 핵심 정리

  • 방화벽 규칙은 조건(출발지·목적지·포트·프로토콜·방향)과 동작(허용·차단·로그)으로 구성됩니다.
  • 규칙 안의 조건은 AND, 한 조건의 여러 값은 OR로 평가됩니다.
  • 첫 일치 방식 때문에 가려진·중복·상관·과도한 허용 규칙 문제가 생깁니다.
  • 규칙 이름·설명·적중 수·변경 이력은 로그에서 규칙을 역추적하는 근거가 됩니다.
  • "적중 0"은 트래픽 부재가 아니라 위쪽 규칙에 가려진 결과일 수 있습니다.
profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글