Firewalld · 상세 정리
01 / 28
RED HAT FIREWALL SERVICE

Firewalld & Rich Rules

Netfilter(nftables/iptables)를 쉽게 설정·관리할 수 있게 해주는
방화벽 관리 서비스와 그 확장 규칙 언어

대상
RHEL 계열
Rocky · CentOS · Fedora
→
핵심
Zone 기반
신뢰 수준별 정책
→
확장
Rich Rules
세밀한 조건 조합
정의

Firewalld란?

  • Linux에서 사용하는 방화벽 관리 서비스
  • Linux 커널의 Netfilter(nftables/iptables)를 쉽게 설정하고 관리할 수 있도록 해주는 프로그램
  • 주로 Red Hat 계열 리눅스 배포판(RHEL, Rocky, CentOS, Fedora)에서 기본 방화벽 관리자로 사용됨
관계 비교

Netfilter · nftables/iptables · Firewalld

실제 방화벽

Netfilter

리눅스 커널에 있는 실제 방화벽 기능(패킷 처리)

제어 도구

nftables / iptables

Netfilter를 직접 제어하는 도구

관리 서비스

Firewalld

nftables/iptables를 더 쉽게 관리하도록 만든 서비스

개요

Firewalld의 대표적인 특징

01

Zone 기반 관리

신뢰 수준별 정책 그룹

02

서비스 단위 허용

이름으로 포트 개방

03

Runtime/Permanent

임시·영구 설정 구분

04

무중단 규칙 변경

재시작 없이 반영

대표 특징 01

Zone(영역)이란?

  • 네트워크의 신뢰 수준에 따라 서로 다른 방화벽 정책을 적용하는 논리적인 그룹
  • NIC나 연결을 특정 영역(Zone)에 할당하여 관리
  • Zone마다 독립적인 방화벽 규칙을 가진다
대표 특징 01 · 예시

인터페이스별 Zone 할당

인터페이스 → Zone 매핑
ens160 → public Zone   # 외부망
ens192 → trusted Zone  # 내부망

같은 서버라도 네트워크 인터페이스마다 다른 방화벽 정책을 적용할 수 있다 → 외부망/내부망 정책을 쉽게 분리.

대표 특징 02

서비스 단위 허용

포트를 직접 입력할 수도 있지만, 서비스 이름으로도 열 수 있다.

bash
firewall-cmd --add-service=http   # 실제로는 TCP 80을 의미
대표 특징 03

Runtime / Permanent 구분

Runtime — 재부팅 시 사라짐
firewall-cmd --add-port=8080/tcp
Permanent — 재부팅 후에도 유지
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload
대표 특징 04

서비스 재시작 없이 규칙 변경

iptables는 저장·재적용이 번거롭지만, Firewalld는 기존 연결을 유지하며 동적으로 규칙을 반영한다.

bash
firewall-cmd --reload
Zone 목록

Rocky 기본 제공 Zone

Zone신뢰 수준기본 정책사용 예시
drop매우 낮음모든 패킷 폐기(응답 없음)공격자 차단
block매우 낮음모든 연결 거부(응답 있음)접근 차단
public낮음필요한 서비스만 허용인터넷
external낮음NAT 환경게이트웨이
dmz중간DMZ 서버웹 서버
work / home / internal높음내부망 정책사내·가정·사설망
trusted매우 높음거의 모든 연결 허용관리망
대표 Zone 01

Public Zone

  • 가장 많이 사용하는 Zone
  • 인터넷에 연결된 서버는 대부분 이 Zone을 사용
  • 필요한 서비스만 열어 놓는 방식
bash
firewall-cmd --zone=public --add-service=http
firewall-cmd --zone=public --add-service=https
대표 Zone 02

Trusted Zone

  • 가장 신뢰하는 네트워크
  • 거의 모든 연결을 허용
  • 주로 관리망과 같이 안전이 보장된 네트워크에 사용
신뢰 수준: 매우 높음사용 예시: 관리망
대표 Zone 03

DMZ Zone

  • DMZ(DeMilitarized Zone)는 외부에 서비스를 제공해야 하는 서버를 배치하는 네트워크 영역
  • 내부망과 외부망 사이의 완충 지대 역할
  • 웹 서버와 같이 외부 노출이 필요한 서버에 사용
신뢰 수준: 중간사용 예시: 웹 서버
대표 Zone 04

block Zone

  • 모든 연결을 거부하지만 상대에게 Response(응답)를 전송한다
  • ICMP 응답 등이 가능하여 상대는 "차단되었다"는 사실을 인지할 수 있음
  • 접근을 명시적으로 차단하고 싶을 때 사용
신뢰 수준: 매우 낮음사용 예시: 접근 차단
대표 Zone 05

drop Zone

  • 가장 강력한 차단 — 모든 패킷을 폐기하고 응답을 전혀 보내지 않음
  • 공격자는 서버가 존재하는지조차 확인하기 어려워짐
  • 공격자 차단, 스캐닝 방지 등에 사용
신뢰 수준: 매우 낮음사용 예시: 공격자 차단
Zone 정리

Zone 기반 정책의 핵심

Zone을 기준으로 인터페이스나 네트워크 출처마다 서로 다른 정책을 적용한다.

인터넷
public
필요한 서비스만
+
내부망
internal
더 넓은 허용
+
관리망
trusted
거의 전체 허용

하나의 서버가 여러 네트워크에 연결되어 있어도 각 네트워크의 신뢰 수준에 맞는 방화벽 정책을 손쉽게 구성할 수 있다.

비교

UFW vs Firewalld

UFWFirewalld
Ubuntu 계열에서 주로 사용RHEL·Rocky·CentOS·Fedora 기본 사용
명령어가 매우 단순Zone 기반으로 더 유연한 관리
초보자가 배우기 쉬움서버 환경에서 많이 사용
내부적으로 Netfilter 사용내부적으로 Netfilter(nftables) 사용
확장 규칙

Rich Rules란?

  • Rich Language Rules — firewalld에서 제공하는 고급 방화벽 규칙 작성 방식
  • 기존 firewalld는 Zone(존) 개념을 기반으로 기본 동작이 단순함
  • firewalld 방화벽의 확장 규칙 언어(문법)
  • IP, 포트, 프로토콜, 로그, 속도 제한, 동작(허용/차단) 등을 세밀하게 조합해야 할 때 사용
필요성

Rich Rules가 필요한 이유

구분일반 firewalld 규칙Rich Rules
포트 허용가능가능
서비스 허용가능가능
특정 IP 지정제한적가능
로그 기록어려움가능
시간 제한, 조건 조합어려움가능
세밀한 정책 설정제한적가능
문법 비교

일반 규칙 vs Rich Rules 명령

일반적인 firewalld 명령 — 간단한 설정만 가능
firewall-cmd --add-service=ssh
firewall-cmd --add-port=80/tcp
Rich Rules — 세밀한 조건 조합
firewall-cmd --permanent \
--add-rich-rule='rule family="ipv4"
source address="192.168.1.100"
port port="22" protocol="tcp"
accept'
Rich Rules 예시 01

특정 IP의 SSH만 허용

bash
firewall-cmd --permanent \
--add-rich-rule='rule family="ipv4"
source address="192.168.1.100"
port port="22" protocol="tcp"
accept'

IPv4만 사용, 출발지 IP 192.168.1.100, SSH(22번 포트), accept(허용)

Rich Rules 예시 02

특정 IP 전체 차단

bash
firewall-cmd --permanent \
--add-rich-rule='rule family="ipv4"
source address="192.168.1.200"
drop'

192.168.1.200에서 오는 모든 패킷을 DROP(폐기)한다.

Rich Rules 예시 03

SSH 접속 로그 기록 후 허용

bash
firewall-cmd --permanent \
--add-rich-rule='rule
service name="ssh"
log prefix="SSH_ACCESS "
accept'

SSH 접속을 SSH_ACCESS 접두어로 로그에 기록한 뒤 허용한다.

Rich Rules 예시 04

ICMP(Ping) 차단

bash
firewall-cmd --permanent \
--add-rich-rule='rule
protocol value="icmp"
drop'

ICMP 패킷을 DROP하여 Ping 요청을 차단한다.

구조

Rich Rules는 Zone에 소속되는 규칙

  • Rich Rule은 반드시 특정 Zone 안에 저장된다.
  • Firewalld 전체에 적용되는 전역 규칙이 아니다.
  • 패킷은 먼저 Zone이 결정된 후 해당 Zone의 Rich Rule만 검사한다.

예) public Zone의 Rich Rule은 public Zone으로 분류된 패킷에만 적용된다.

문법 비교

iptables vs Rich Rules

iptables 규칙
iptables -A INPUT \
-s 192.168.1.100 \
-p tcp \
--dport 22 \
-j ACCEPT
rich rules 규칙
firewall-cmd --add-rich-rule='rule
source address="192.168.1.100"
port port="22" protocol="tcp"
accept'

firewalld에서는 조금 더 읽기 쉬운 형태로 작성할 수 있다. Rich Rules는 iptables에서는 사용할 수 없는, firewalld 전용 문법이다.

배경

Rich Rules가 만들어진 이유

iptables는 강력하지만 문법이 복잡하다 — 처음 배우는 사람은 읽기가 쉽지 않음.

iptables — 복잡한 문법
iptables -A INPUT -p tcp -m state --state NEW \
-s 192.168.1.0/24 \
--dport 22 \
-j ACCEPT
Rich Rules — 사람이 읽기 쉬운 문법
rule
source=192.168.1.0/24
port=22
accept

Rich Rules는 정책을 사람이 읽기 쉽게 표현하는 데 초점을 맞춘다.

정리

iptables · firewalld 기본 규칙 · Rich Rules

iptablesfirewalld 기본 규칙Rich Rules
세밀하지만 문법이 복잡단순하지만 세밀한 조합 어려움iptables 수준의 세밀함 + 읽기 쉬운 문법

Rich Rules는 iptables에서 사용할 수 있는 문법이 아니라, firewalld 전용의 고급 규칙 언어다. 대부분의 기능은 iptables로도 구현 가능하지만, 문법과 관리 방식이 다르다.