개요
CentOS 7부터 기본 방화벽 시스템이 iptables에서 firewalld로 변경되었습니다. firewalld는 nftables 프레임워크를 기반으로 동적 규칙 업데이트와 영역(zone) 개념을 도입했습니다. 서버 환경에서는 영역 전환이 자주 필요하지 않으므로 본 문서에서는 기본 운영에 초점을 맞춥니다.
서비스 관리
# 방화벽 서비스 시작
systemctl start firewalld
# 방화벽 서비스 중지
systemctl stop firewalld
# 서비스 재시작
systemctl restart firewalld
# 상태 확인
systemctl status firewalld
기본적으로 SSH(22번 포트)는 허용 규칙이 적용되어 있습니다.
설정 파일 구조
/usr/lib/firewalld: 기본 제공 설정 파일/etc/firewalld: 사용자 정의 설정 저장 위치- 주요 디렉토리:
services/: 미리 정의된 서비스 규칙zones/: 영역별 설정
firewalld.conf: 기본 구성 파일(기본 영역: public)
핵심 명령어
주의: --permanent 옵션 없이 실행하면 변경사항이 즉시 적용되지만 재부팅 시 사라집니다. 영구 저장을 원할 경우 --permanent 추가 후 --reload 필수.
기본 명령
# 설정 재적용
firewall-cmd --reload
# 실행 상태 확인
firewall-cmd --state
# 현재 영역 설정 보기
firewall-cmd --list-all
긴급 모드
firewall-cmd --panic-on # 모든 연결 차단(로컬만 접속 가능)
firewall-cmd --panic-off # 긴급 모드 해제
firewall-cmd --query-panic # 긴급 모드 상태 확인
서비스 관리
firewall-cmd --add-service=http # HTTP 서비스 허용
firewall-cmd --remove-service=ftp # FTP 서비스 차단
포트 제어
firewall-cmd --add-port=8080/tcp # TCP 8080 포트 개방
firewall-cmd --remove-port=53/udp # UDP 53 포트 차단
firewall-cmd --list-ports # 허용된 포트 목록
프로토콜 관리
firewall-cmd --add-protocol=icmp # ICMP(ping) 허용
firewall-cmd --remove-protocol=igmp # IGMP 차단
고급 규칙(Rich Rules)
# 특정 IP 전체 허용
firewall-cmd --add-rich-rule='rule family=ipv4 source address=203.0.113.5 accept'
# IP별 프로토콜 허용
firewall-cmd --add-rich-rule='rule family=ipv4 source address=203.0.113.10 protocol value=icmp accept'
# IP별 서비스 접근 허용
firewall-cmd --add-rich-rule='rule family=ipv4 source address=203.0.113.15 service name=ssh accept'
# IP별 포트 접근 허용
firewall-cmd --add-rich-rule='rule family=ipv4 source address=203.0.113.20 port port=3306 protocol=tcp accept'
# 네트워크 대역 허용 (예: 203.0.113.0/24)
firewall-cmd --add-rich-rule='rule family=ipv4 source address=203.0.113.0/24 port port=22 protocol=tcp accept'
# 접근 차단 (reject/drop 사용)
firewall-cmd --add-rich-rule='rule family=ipv4 source address=203.0.113.0/24 service name=http reject'