명령어/Linux

[RHEL] firewall-cmd 방화벽 제어

jykim23 2026. 7. 18. 19:08
반응형

부제: firewalld를 명령 한 줄로 조회하고 규칙을 여닫는다

firewall-cmd --state              # 방화벽 동작 여부
firewall-cmd --get-default-zone   # 기본 존 확인
firewall-cmd --list-all           # 현재 존의 전체 규칙
running
public
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp6s18
  sources:
  services: cockpit dhcpv6-client ssh
  ports:
  protocols:
  forward: yes
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

firewall-cmd는 RHEL 계열의 기본 방화벽 프런트엔드 firewalld를 제어한다. iptables 규칙을 직접 쓰는 대신 "존(zone)"과 "서비스(service)" 같은 추상 단위로 다루는 게 핵심이다. 위 public 존에는 ssh, cockpit이 열려 있고 인터페이스 enp6s18이 이 존에 묶여 있다. 규칙 변경은 기본이 런타임(임시)이고, --permanent를 붙여야 재부팅 후에도 남는다. 데비안에서 ufw로 하던 일을 RHEL에서는 이 명령이 맡는다고 보면 된다.

이렇게도 쓴다

http 서비스를 임시로 연다. (재부팅하면 사라짐)

firewall-cmd --add-service=http

 

특정 서비스가 열려 있는지 물어본다.

firewall-cmd --query-service=ssh

 

영구 규칙으로 포트를 열고 즉시 반영한다. (reload 조합)

firewall-cmd --permanent --add-port=8080/tcp && firewall-cmd --reload

 

정의 가능한 서비스 이름 목록을 훑는다. (tr 조합)

firewall-cmd --get-services | tr ' ' '\n' | grep http

 

활성 존과 거기 묶인 인터페이스를 함께 본다. (ip 조합)

firewall-cmd --get-active-zones && ip -br addr
반응형