Firewalld服務是紅帽RHEL7系統中默認的防火牆管理工具,特色是擁有運行時配置與永久配置選項且可以支持動態更新以及"zone"的區域功能概念,使用圖形化工具firewall-config或文本管理工具firewall-cmd網絡
配置文件的位置:ssh
firewalld
的配置儲存在 /usr/lib/firewalld/
和 /etc/firewalld/
裏的各類 XML 文件裏,firewalld
優先使用 /etc/firewalld/services/
裏的文件。tcp
經過編輯 /etc/firewalld/services/
中的 XML 文件,服務能夠被增長和刪除,/usr/lib/firewalld/services/
文件能夠做爲模板使用。工具
區域概念與做用:spa
防火牆的網絡區域定義了網絡鏈接的可信等級,咱們能夠根據不一樣場景來調用不一樣的firewalld區域,區域規則有:3d
特別須要注意的是firewalld服務有兩份規則策略配置記錄,必須要可以區分:code
RunTime:當前正在生效的。orm
Permanent:永久生效的。blog
當下面實驗修改的是永久生效的策略記錄時,必須執行"--reload"參數後才能當即生效,不然要重啓後再生效。ip
開啓firewalld
systemctl start firewalld
systemctl enable firewalld
查看當前的區域:
[root@Centos7 ~]# firewall-cmd --get-default-zone public
查詢網卡的區域:
[root@Centos7 ~]# firewall-cmd --get-zone-of-interface=eno16777736 public
在public中分別查詢ssh與http服務是否被容許:
[root@Centos7 ~]# firewall-cmd --zone=public --query-service=ssh yes [root@Centos7 ~]# firewall-cmd --zone=public --query-service=http no
設置默認規則爲dmz:
[root@Centos7 ~]# firewall-cmd --set-default-zone=dmz
success
讓「永久生效」的配置文件當即生效:
[root@Centos7 ~]# firewall-cmd --reload
success
啓動/關閉應急情況模式,阻斷全部網絡鏈接:
應急情況模式啓動後會禁止全部的網絡鏈接,一切服務的請求也都會被拒絕,小心,請慎用。
[root@Centos7 ~]# firewall-cmd --panic-on
success [root@Centos7~]# firewall-cmd --panic-off
success
實例:
模擬訓練A:容許https服務流量經過public區域,要求當即生效且永久有效:
方法一:分別設置當前生效與永久有效的規則記錄:
[root@Centos7 ~]# firewall-cmd --zone=public --add-service=https success [root@Centos7 ~]# firewall-cmd --permanent --zone=public --add-service=https success
方法二:設置永久生效的規則記錄後讀取記錄:
[root@Centos7 ~]# firewall-cmd --permanent --zone=public --add-service=https success [root@Centos7 ~]# firewall-cmd --reload success
模擬訓練B:再也不容許http服務流量經過public區域,要求當即生效且永久生效:
[root@Centos7 ~]# firewall-cmd --permanent --zone=public --remove-service=http success [root@Centos7 ~]# firewall-cmd --reload success
模擬訓練C:容許8080與8081端口流量經過public區域,當即生效且永久生效:
[root@Centos7 ~]# firewall-cmd --permanent --zone=public --add-port=8080-8081/tcp success [root@Centos7 ~]# firewall-cmd --reload success
模擬訓練D:查看模擬實驗中的規則:
[root@Centos7 ~]# firewall-cmd --zone=public --list-services dhcpv6-client http https ssh [root@Centos7 ~]# firewall-cmd --zone=public --list-ports 8080-8081/tcp
模擬實驗F:設置富規則,拒絕192.168.10.0/24網段的用戶訪問ssh服務:
[root@Centos7 ~]# firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.10.0/24" service name="ssh" reject" success
模擬實驗G:將訪問主機888端口的請求轉發至22端口:
[root@Centos7 ~]# firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.0.85 success [root@Centos7 ~]# firewall-cmd --reload success
在別的機器訪問192.168.0.85(Centos7)
[root@wls12c ~]$ ssh -p 888 192.168.0.85 root@192.168.0.85's password: Last login: Mon Jan 16 17:22:42 2017 from 192.168.0.85 [root@Centos7 ~]#