📚 네트워크 · 패킷 분석 › 04. 네트워크 장비 실습 — 181편
이전 글: 180. DMZ · 다음 글: 182. Inbound 정책

1. 개념

Firewall 정책(Policy) 은 방화벽이 통과하는 트래픽마다 "허용할 것인가, 차단할 것인가, 기록할 것인가"를 결정하는 규칙(Rule)들의 집합입니다. 방화벽 장비의 역할과 배치는 155. Firewall이란 무엇인가에서 다뤘고, 이 글은 정책이 장비 안에서 어떤 구조로 저장·평가되고, 조직에서 어떻게 관리되는가를 다룹니다. 개별 규칙의 필드(IP·포트·프로토콜)별 분석은 256. Firewall Rule부터 이어집니다.

제품마다 화면은 다르지만, 한 줄의 규칙은 대체로 다음 요소로 구성됩니다.

구성 요소의미예
출발지 / 목적지 Zone(인터페이스)어느 구역에서 어느 구역으로users → servers
출발지 / 목적지 주소IP·대역·주소 객체192.168.10.0/24 → WEB-SRV
서비스프로토콜 + 목적지 포트TCP 443
동작(Action)허용·차단(Drop/Reject)Allow (184. Allow와 Deny)
로그기록 여부·시점세션 시작/종료 시 기록
부가 정보규칙 이름, 설명, 요청자, 만료일"CHG-0412 웹 서비스 공개"

NGFW 계열은 여기에 사용자·애플리케이션·URL 분류 같은 조건이 추가되지만, 기본 뼈대는 같습니다.


2. 동작 원리

대부분의 방화벽은 정책 테이블을 위에서부터 차례로 비교해 처음 일치한 규칙을 적용합니다(178. ACL의 ACL과 같은 원리). 상태 기반 방화벽은 그 앞에 세션 테이블 확인 단계가 있습니다(185. Stateful Firewall).

패킷 도착
   ↓
[세션 테이블에 이미 있는 연결인가?] ─ 예 → 통과 (정책 재평가 없음)
   ↓ 아니오 (새 연결)
[NAT 판단: 목적지 변환 여부]  ← 제품마다 순서 다름 (186편)
   ↓
[정책 1번 → 2번 → … 비교, 첫 일치 규칙 적용]
   ↓
[끝까지 일치 없음 → 기본 정책(Default Deny)]
   ↓
허용이면 세션 생성 + 로그 / 차단이면 폐기 + 로그

정책 테이블의 권장 배치 순서입니다.

위치규칙 성격예
최상단반드시 먼저 막아야 할 것위조 출발지, 알려진 악성 대역
상단방화벽 자체 보호관리망 → 방화벽 관리 포트만 허용
중간업무 허용 규칙(구체적인 것부터)사용자망 → 웹 서버 443
하단넓은 범위 규칙내부 → 인터넷 웹
최하단명시적 전체 차단 + 로그any → any deny, log

마지막에 명시적 deny 규칙을 로그와 함께 두는 이유는, 암묵적 기본 차단은 제품에 따라 로그가 남지 않기 때문입니다.


3. 주요 특징

Linux 방화벽 도구에서 같은 구조가 어떻게 표현되는지 비교하면 정책 구조를 이해하기 쉽습니다.

개념nftablesfirewalldiptables
정책 묶음table (inet fw)zone, policytable (filter)
평가 지점chain + hook (input, forward, output)zone(유입), policy(구역 간)INPUT / FORWARD / OUTPUT 체인
규칙 순서chain 안 규칙 순서내부적으로 정해진 순서 (rich rule priority로 조정)체인 안 규칙 순서
기본 정책chain의 policy dropzone target (default, DROP, REJECT, ACCEPT)-P INPUT DROP
  • 정책은 객체로 관리합니다. IP를 규칙마다 직접 쓰면 서버 IP가 바뀔 때 여러 규칙을 고쳐야 하므로, 주소·서비스 객체(nftables의 set)를 만들어 참조합니다.
  • 로그는 정책의 일부입니다. 로그를 켜지 않은 허용 규칙으로 통과한 트래픽은 사후 분석에서 보이지 않습니다.
  • 정책 수가 늘수록 가려진 규칙(shadowed), 중복 규칙, 아무도 쓰지 않는 규칙이 쌓입니다. 적중 수(hit count)는 정리의 근거가 됩니다.

4. 예시

실습 예시 — nftables로 정책 구조를 만드는 방법입니다(Rocky/Ubuntu 공통). 파일로 작성해 한 번에 적용하면 규칙 순서를 관리하기 쉽습니다. 값은 예시(값은 환경마다 다름)입니다.

# /etc/nftables/lab-fw.nft (예시 파일)
table inet fw {
    set web_servers {
        type ipv4_addr
        elements = { 10.20.0.10, 10.20.0.11 }
    }
    chain forward {
        type filter hook forward priority 0; policy drop;
        ct state established,related accept
        ct state invalid drop
        iifname "ens37" oifname "ens38" ip daddr @web_servers tcp dport 443 counter accept comment "CHG-0412 users->web"
        iifname "ens37" oifname "ens33" tcp dport { 80, 443 } counter accept comment "users->internet web"
        counter log prefix "FW-DEFAULT-DROP " drop
    }
}
sudo nft -c -f /etc/nftables/lab-fw.nft    # 문법만 검사 (적용 안 함)
sudo nft -f /etc/nftables/lab-fw.nft       # 적용
sudo nft -a list chain inet fw forward      # 규칙 handle 번호와 counter(적중 수) 확인

Rocky에서 부팅 시 자동 적용하려면 /etc/sysconfig/nftables.conf에서 이 파일을 include하고 nftables 서비스를 활성화합니다. Ubuntu는 /etc/nftables.conf를 사용합니다. firewalld를 쓰는 환경에서는 sudo firewall-cmd --list-all-zones와 --list-all-policies로 정책 구조를 확인합니다.

📷 [실습 화면 삽입 위치] sudo nft -a list chain inet fw forward 결과에서 각 규칙의 counter packets/bytes 값과 comment, 마지막 기본 차단 규칙을 표시한 화면


5. 보안 관점

  • "임시 허용"은 영구가 되기 쉽습니다. 규칙마다 요청자·목적·만료일을 남기지 않으면 정리가 불가능해집니다.
  • any 규칙은 정책을 무력화합니다. 출발지·목적지·서비스 중 하나라도 any인 허용 규칙은 정기 검토 우선순위가 높습니다.
  • 정책 변경 권한은 곧 네트워크 전체의 통제 권한입니다. 관리 접속을 관리망으로 제한하고, 변경 전후 설정을 백업·비교합니다.
  • 정책이 의도대로 동작하는지는 설정 화면이 아니라 실제 트래픽 테스트와 로그로 확인해야 합니다.

6. SOC 관점

흔적의미
정책 변경 로그(관리·감사 로그)누가, 언제, 어떤 규칙을 추가·수정·삭제했는가
규칙별 적중 수사용되지 않는 규칙, 갑자기 사용량이 늘어난 규칙
기본 차단 규칙의 로그정책에 없는 통신 시도 전체
허용 로그의 규칙 ID·이름 필드어떤 규칙이 이 통신을 허용했는가

관제자가 확인할 질문

  • 이 통신을 허용한 규칙 이름·ID는 무엇이고, 그 규칙의 원래 목적과 맞는가?
  • 사건 직전에 정책 변경이 있었는가? 변경 요청 기록과 일치하는가?
  • 업무 시간 외에 이루어진 정책 변경이 있는가?

오탐 주의: 정기 작업 창에 몰리는 정책 변경과 차단 로그 증가는 정상일 수 있습니다. 변경 관리 일정과 대조합니다. 방화벽 로그 형식은 187. Firewall Log, 로그 분석은 273. Firewall Log 분석에서 다룹니다.


7. 핵심 정리

  • Firewall 정책은 Zone·주소·서비스·동작·로그·부가 정보로 구성된 규칙들의 집합입니다.
  • 새 연결은 위에서부터 첫 일치 규칙으로 판단되고, 이미 수립된 세션은 세션 테이블로 통과합니다.
  • 최하단에는 로그를 남기는 명시적 전체 차단 규칙을 둡니다.
  • nftables는 table·chain·hook·policy, firewalld는 zone·policy, iptables는 체인과 기본 정책으로 같은 구조를 표현합니다.
  • 규칙 이름·요청 기록·적중 수·변경 로그가 있어야 "누가 왜 이 통신을 허용했는가"에 답할 수 있습니다.
profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글