Linux OS/관리

firewalld

서버엔지니어 2023. 3. 12. 05:28
728x90

firewalld 이란


firewalld는 CentOS7부터 이전의 많이 불편했던 iptables를 대체해 새롭게 선보인 패킷 필터링 방화벽 프로그램이라고 합니다. firewalld 명령어는 해당 데몬이 실행된 상태여야 명령어들을 실행하여 적용할 수 있으며, firewalld 데몬은 이러한 명령어들로부터 설정 내용을 전달받아 명령어 iptables로 전달합니다.

(firewalld 데몬은 systemctl start firewalld 를 통해 서비스를 시작할 수 있으며, 재부팅 할 때마다 계속 서비스를 실행하기 위해서는 systemctl enable firewalld 를 해주면 됩니다.)

Netfilter


이러한 firewall 관련 명령어가 firewalld 데몬을 통해 iptables로 전달되고 iptables로 들어오면 리눅스 커널에서 Netfilter 모듈이 활성화되어야 제대로 동작합니다. (default로 활성화되어 있습니다.)
 
firewalld 명령어 사용법
 
firewalld 목록보기

# firewall-cmd --list-all


firewalld 기본 존 변경하기

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


서버 랜포트 NIC마다 변경하기

# firewall-cmd --zone=dmz --change-interface=eth0
# firewall-cmd --zone=dmz --change-interface=eth1

 

존 만들기

# firewall-cmd --permanent --new-zone=webdmz

* permanent 설명 : 영구적으로 적용합니다.

존 목록 확인

# firewall-cmd --get-zones

firewall 정책 추가, 제거, 해제, 설정 적용

추가

# firewall-cmd --permanent --zone=[zone이름] --add-service=서비스이름
# firewall-cmd --permanent --zone=[zone이름] --add-interface=이더넷이름
# firewall-cmd --permanent --zone=[zone이름] --add-source=소스이름
# firewall-cmd --permanent --zone=[zone이름] --add-protocol=프로토콜
# firewall-cmd --permanent --zone=[zone이름] --add-forward-port=포트번호
# firewall-cmd --permanent --zone=[zone이름] --add-source-port=포트번호
# firewall-cmd --permanent --zone=[zone이름] --add-rich-rule
# firewall-cmd --permanent --zone=public --add-port=포트번호/tcp
# firewall-cmd --permanent --zone=[zone이름] --add-port=포트범위/tcp
(UDP 의 경우에는 tcp 말고 udp 라고 기입해야 합니다. )

 

제거

# firewall-cmd --permanent --remove-port=포트번호/tcp

 

저장 및 실행적용

# firewall-cmd --reload
firewall 개별적으로 명령어를 입력하고 설정 후 reload 하지 않으면 적용이 안됩니다. 꼭 해주어야 합니다.


firewalld ddos 의심패킷 차단 방법

# iptables -I INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 10 -j DROP 
초당 10번 이상 접속은 drop 하라는 의미이다. 
firewall-cmd 에서도 iptables 를 확장하여 사용할 수가 있다. 
# firewall-cmd --permanent --direct --add-passthrough ipv4 -I INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 10 -j DROP 
# firewall-cmd --reload 
# iptables -L | grep DROP 
DROP       tcp  --  anywhere             anywhere             tcp dpt:http flags:FIN,SYN,RST,ACK/SYN #conn src/32 > 10


firewalld 서비스데몬 관리 명령어

# systemctl enable | disable | stop | start | restart firewalld