본문 바로가기
IT/리눅스

Firewalld 방화벽 설정 및 관리 가이드

by JGSHIN 2025. 2. 15.
반응형

1. firewalld 기본 개념

firewalld는 CentOS, RHEL, Fedora 등에서 동적인 방화벽 관리를 위한 서비스입니다. iptables와 비교하여 존(zone) 개념을 사용하여 더 유연한 방화벽 정책을 적용할 수 있습니다.

 

(1) Zone(존) 개념

각 네트워크 인터페이스는 특정 Zone(보안 영역) 에 할당되며, 각 존마다 다른 방화벽 규칙을 적용할 수 있습니다.

 

 

2. Firewalld 상태 확인

 
# firewall-cmd --state
  • running이면 Firewalld 활성화 상태
 
# systemctl status firewalld
  • Firewalld 서비스 상태 확인

3. Firewalld 활성화 및 비활성화

 
# systemctl enable firewalld # 부팅 시 자동 실행
# systemctl disable firewalld # 부팅 시 실행 안 함
# systemctl start firewalld # Firewalld 시작
# systemctl stop firewalld # Firewalld 중지
# systemctl restart firewalld # Firewalld 재시작

4. Firewalld 기본 설정

(1) 현재 사용 중인 Zone 확인

 
# firewall-cmd --get-active-zones

(2) 기본 Zone 확인

 
# firewall-cmd --get-default-zone

(3) 기본 Zone 변경

 
# firewall-cmd --set-default-zone=public

5. 서비스 및 포트 관리

(1) 특정 서비스 허용

 
# firewall-cmd --permanent --add-service=http
# firewall-cmd --permanent --add-service=https
  • HTTP(80) 및 HTTPS(443) 서비스 허용

(2) 특정 서비스 차단

 
# firewall-cmd --permanent --remove-service=http
  • HTTP 서비스 차단

6. 특정 포트 관리

(1) 포트 허용

 
# firewall-cmd --permanent --add-port=8080/tcp
# firewall-cmd --permanent --add-port=3306/tcp
  • 8080 포트(TCP)MySQL 3306 포트(TCP) 허용

(2) 포트 차단

 
# firewall-cmd --permanent --remove-port=8080/tcp
  • 8080 포트 차단

7. 특정 IP에서의 접근 허용 및 차단

(1) 특정 IP에서 SSH(22번 포트) 허용

 
# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="22" protocol="tcp" accept'
  • 192.168.1.100 IP에서 SSH 접근 허용

(2) 특정 IP에서 HTTP 차단

 
# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.200" service name="http" drop'
  • 192.168.1.200 IP에서 HTTP 접근 차단

8. 특정 Zone(보안 영역) 설정

(1) 특정 인터페이스를 public 존에 추가

 
# firewall-cmd --permanent --zone=public --add-interface=eth0

(2) 특정 Zone의 서비스 확인

 
# firewall-cmd --zone=public --list-services

9. Firewalld 규칙 적용 및 확인

(1) 방화벽 규칙 즉시 적용

 
# firewall-cmd --reload

(2) 현재 설정된 방화벽 규칙 확인

 
# firewall-cmd --list-all

10. Firewalld 초기화 (모든 규칙 초기화)

 
# firewall-cmd --complete-reload
  • 모든 방화벽 설정을 초기화하고 기본 설정으로 되돌림

 

📌 직접 수정 후 적용하는 방법

  1. 설정 파일 수정
    • <port protocol="tcp" port="8080"/> 또는 <service name="http"/> 같은 항목을 추가 또는 수정.
       
      # vi /etc/firewalld/zones/public.xml
  2. 방화벽 리로드
    • 변경 사항을 적용.
       
      # firewall-cmd --reload
  3. 설정 확인
    • 방화벽 규칙이 제대로 반영되었는지 확인.
       
    • # firewall-cmd --list-all


⚠ 주의할 점

  • 직접 수정하면 firewall-cmd 명령어로 추가한 규칙과 일관성이 깨질 수 있음.
  • firewall-cmd --reload는 현재 적용된 설정을 재적용할 뿐 초기화는 하지 않음.
  • 최선의 방법은 firewall-cmd --permanent 옵션을 사용하는 것!
 
# firewall-cmd --permanent --add-port=8080/tcp # firewall-cmd --reload

이 방식이 더 안전하고 일관된 방법입니다. 하지만 수동 수정도 가능합니다! 🚀

 

🔥 Firewalld 요약

명령어설명

firewall-cmd --state Firewalld 실행 상태 확인
firewall-cmd --get-default-zone 기본 Zone 확인
firewall-cmd --set-default-zone=public 기본 Zone 변경
firewall-cmd --permanent --add-service=http HTTP 서비스 허용
firewall-cmd --permanent --add-port=8080/tcp 8080 포트 허용
firewall-cmd --permanent --add-rich-rule=… 특정 IP의 접근 제어
firewall-cmd --reload 방화벽 설정 적용
firewall-cmd --list-all 현재 방화벽 설정 확인
firewall-cmd --complete-reload 모든 방화벽 규칙 초기화

 

위 명령어들을 활용하여 Firewalld 방화벽을 효율적으로 설정하고 관리할 수 있습니다! 🚀

반응형
📧 이메일 문의
by @ 2025 JGSHIN