Linux OS/관리

firewalld

서버엔지니어 2023. 3. 12.
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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

댓글