CentOS 7에서 firewalld 방화벽 실용 가이드

개요

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'

태그: CentOS firewalld 리눅스보안 방화벽관리 시스템관리

6월 14일 02:03에 게시됨