Firewalld를 활용한 방화벽 관리 완벽 가이드

방화벽

firewalld의 설정 파일은 두 가지 디렉토리에 위치합니다. /usr/lib/firewalld 디렉토리에는 기본 설정 파일이 저장되어 있고, /etc/firewalld 디렉토리에는 사용자가 직접 정의한 규칙이 저장됩니다. 따라서 새로 추가하는 서비스나 규칙은 후자의 디렉토리에서 관리하게 됩니다.

  • services 폴더: 사전 정의된 규칙들의 집합인 서비스 데이터를 저장
  • zones 폴더: 네트워크 영역별 규칙을 저장
  • firewalld.conf: 기본 설정 파일로, 사용할 기본 영역을 지정 (기본값: public, zones/public.xml에 대응)

대부분의 명령어는 소스 주소에 네트워크 대역을 지정할 수 있습니다. 예를 들어, 172.16.0.0/24 대역의 호스트가 2222 포트에 접근하도록 허용하려면 다음과 같이 입력합니다.

firewall-cmd --zone=drop --add-rich-rule='rule family="ipv4" source address="172.16.0.0/24" port protocol="tcp" port="2222" accept'

accept를 reject로 변경하면 해당 대역의 접근을 거부하게 됩니다. drop으로 설정하면 패킷을 즉시 폐기하며 연결 시간 초과가 발생합니다.

firewall-cmd --zone=drop --add-rich-rule='rule family="ipv4" source address="172.16.0.0/24" port protocol="tcp" port="2222" reject'

--permanent 옵션을不加하면 방화벽 재로드 시 규칙이 사라집니다. 해당 옵션을 추가하면 영구적으로 적용됩니다.

기본 명령어

방화벽 설정 재로드

firewall-cmd --reload

방화벽 실행 상태 확인

firewall-cmd --state

기본 영역 설정 확인

firewall-cmd --list-all

긴급 명령어

firewall-cmd --panic-on  # 모든 트래픽 거부, 원격 연결 즉시 끊어짐 (로컬 로그인만 가능)
firewall-cmd --panic-off  # 긴급 모드 해제, 원격 SSH는 firewalld 재시작 후 사용 가능
firewall-cmd --query-panic  # 긴급 모드 상태 확인

서비스 관리

firewall-cmd --add-service=<service name> #서비스 추가
firewall-cmd --remove-service=<service name> #서비스 제거

서비스에 포트 추가

firewall-cmd --permanent --service=samba --add-port=9000/tcp
firewall-cmd --permanent --service=samba --add-port=9000/udp

포트 활성화

firewall-cmd --add-port=<port>/<protocol> --permanent #포트를protocol 추가 (TCP/UDP)
firewall-cmd --remove-port=<port>/<protocol> --permanent #포트/protocol 제거
firewall-cmd --list-ports --permanent #열린 포트 목록 확인

프로토콜 관리

firewall-cmd --add-protocol=<protocol>         #프로토콜 허용 (예: icmp - ping 허용)
firewall-cmd --remove-protocol=<protocol>    #프로토콜 해제
firewall-cmd --list-protocols                  #허용된 프로토콜 목록 확인

명령어 활용 예시

특정 IP의 모든 트래픽 허용

firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.0.0.50" accept' --permanent

특정 IP의 특정 프로토콜 허용

firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.0.0.50" protocol value="ICMP" accept' --permanent
firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.0.0.50" protocol value="tcp" accept' --permanent

특정 IP의 특정 서비스 접근 허용

firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.0.0.50" service name="samba" accept' --permanent

특정 IP의 특정 포트 접근 허용

firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.0.0.50" port protocol="tcp" port="8080" accept' --permanent

태그: firewalld linux firewall network-security CentOS

5월 29일 01:03에 게시됨