firewalld是CentOS7源生支持的防火牆,firewalld最大的好處有兩個:支持動態更新,不用重啓服務;第二個就是加入了防火牆的「zone」概念。bash
firewalld的字符界面管理工具是 firewall-cmdtcp
firewalld默認配置文件有兩個:/usr/lib/firewalld/ (系統配置,儘可能不要修改)和 /etc/firewalld/ (用戶配置地址)工具
zone概念相似於劃分適用規則區域,firewalld引入這一律念系統默認存在如下區域:spa
drop:默認丟棄全部包blog
block:拒絕全部外部鏈接,容許內部發起的鏈接接口
public:指定外部鏈接能夠進入rem
external:這個不太明白,功能上和上面相同,容許指定的外部鏈接get
dmz:和硬件防火牆同樣,受限制的公共鏈接能夠進入cmd
work:工做區,概念和workgoup同樣,也是指定的外部鏈接容許io
home:相似家庭組
internal:信任全部鏈接
CentOS7默認安裝firewalld。firewalld能夠經過yum來安裝和管理。
$ sudo yum install firewalld firewall-config
啓動:
$ systemctl start firewalld
查看狀態:
$ systemctl status firewalld
$ firewall-cmd --state
中止:
$ systemctl disable firewalld
禁用:
$ systemctl stop firewalld
查看版本:
$ firewall-cmd --version
查看幫助:
$ firewall-cmd --help
顯示狀態:
$ firewall-cmd --state
查看區域信息:
$ firewall-cmd --get-active-zones
查看指定接口所屬區域:
$ firewall-cmd --get-zone-of-interface=eth0
拒絕全部包:
$ firewall-cmd --panic-on
取消拒絕狀態:
$ firewall-cmd --panic-off
查看是否拒絕:
$ firewall-cmd --query-panic
更新防火牆規則:
$ firewall-cmd --reload
$ firewall-cmd --complete-reload
二者的區別就是第一個無需斷開鏈接,就是firewalld特性之一動態添加規則,第二個須要斷開鏈接,相似重啓服務
將接口添加到區域,默認接口都在public
$ firewall-cmd --zone=public --add-interface=eth0
設置默認接口區域
$ firewall-cmd --set-default-zone=public
查看全部打開的端口:
$ firewall-cmd --zone=dmz --list-ports
加入一個端口到區域:
$ firewall-cmd --zone=dmz --add-port=8080/tcp
打開一個服務,相似於將端口可視化,服務須要在配置文件中添加,/etc/firewalld 目錄下有services文件夾
$ firewall-cmd --zone=work --add-service=smtp
移除服務
$ firewall-cmd --zone=work --remove-service=smtp
以上設置若要永久生效需再加上 --permanent 而後reload防火牆