摘要: 一.前言 Centos7以上的發行版都試自帶了firewalld防火牆的,firewalld去帶了iptables防火牆。其緣由是iptables的防火牆策略是交由內核層面的netfilter網絡過濾器來處理的,而firewalld則是交由內核層面的nftables包過濾框架來處理。服務器
Centos7以上的發行版都試自帶了firewalld防火牆的,firewalld去帶了iptables防火牆。其緣由是iptables的防火牆策略是交由內核層面的netfilter網絡過濾器來處理的,而firewalld則是交由內核層面的nftables包過濾框架來處理。 相較於iptables防火牆而言,firewalld支持動態更新技術並加入了區域(zone)的概念。簡單來講,區域就是firewalld預先準備了幾套防火牆策略集合(策略模板),用戶能夠根據生產場景的不一樣而選擇合適的策略集合,從而實現防火牆策略之間的快速切換。網絡
區域對於 firewalld 來講是一大特點,可是對於咱們使用Centos7通常是在服務器上,須要切換zone的需求比較少,因此本文不作介紹了,網上資料也比較多,你們能夠去百度找找資料。框架
啓動服務:ssh
systemctl start firewalld
這裏不用擔憂啓用了防火牆之後沒法經過ssh遠程,22端口默認加入了容許規則tcp
中止服務:spa
systemctl stop firewalld
重啓服務:rest
systemctl restart firewalld
查看服務狀態:code
systemctl status firewalld
firewalld 存放配置文件有兩個目錄,/usr/lib/firewalld
和 /etc/firewalld
,前者存放了一些默認的文件,後者主要是存放用戶自定義的數據,因此咱們添加的service或者rule都在後者下面進行。server
server
文件夾存儲服務數據,就是一組定義好的規則。xml
zones
存儲區域規則
firewalld.conf
默認配置文件,能夠設置默認使用的區域,默認區域爲 public,對應 zones目錄下的 public.xml
這裏須要首先說明的是,在執行命令時,若是沒有帶 --permanent
參數表示配置當即生效,可是不會對該配置進行存儲,至關於重啓服務器就會丟失。若是帶上則會將配置存儲到配置文件,,可是這種僅僅是將配置存儲到文件,卻並不會實時生效,須要執行 firewall-cmd --reload
命令重載配置纔會生效。
firewall-cmd --reload
firewall-cmd --state
firewall-cmd --list-all
firewall-cmd --panic-on # 拒絕全部流量,遠程鏈接會當即斷開,只有本地能登錄 firewall-cmd --panic-off # 取消應急模式,但須要重啓firewalld後才能夠遠程ssh firewall-cmd --query-panic # 查看是否爲應急模式
firewall-cmd --add-service=<service name> #添加服務 firewall-cmd --remove-service=<service name> #移除服務
firewall-cmd --add-port=<port>/<protocol> #添加端口/協議(TCP/UDP) firewall-cmd --remove-port=<port>/<protocol> #移除端口/協議(TCP/UDP) firewall-cmd --list-ports #查看開放的端口
firewall-cmd --add-protocol=<protocol> # 容許協議 (例:icmp,即容許ping) firewall-cmd --remove-protocol=<protocol> # 取消協議 firewall-cmd --list-protocols # 查看容許的協議
firewall-cmd --add-rich-rule="rule family="ipv4" source address="<ip>" accept"
例:
firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.2.1" accept" # 表示容許來自192.168.2.1的全部流量
firewall-cmd --add-rich-rule="rule family="ipv4" source address="<ip>" protocol value="<protocol>" accept"
例:
firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.2.208" protocol value="icmp" accept" # 容許192.168.2.208主機的icmp協議,即容許192.168.2.208主機ping
firewall-cmd --add-rich-rule="rule family="ipv4" source address="<ip>" service name="<service name>" accept"
例:
firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.2.208" service name="ssh" accept" # 容許192.168.2.208主機訪問ssh服務
firewall-cmd --add-rich-rule="rule family="ipv4" source address="<ip>" port protocol="<port protocol>" port="<port>" accept"
例:
firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.2.1" port protocol="tcp" port="22" accept" # 容許192.168.2.1主機訪問22端口
8-11 的各個命令都支持 source address
設置爲網段,即這個網段的ip都是適配這個規則:
例如:
firewall-cmd --zone=drop --add-rich-rule="rule family="ipv4" source address="192.168.2.0/24" port protocol="tcp" port="22" accept"
表示容許192.168.2.0/24網段的主機訪問22端口 。
8-12 各個命令中,將 accept
設置爲 reject
表示拒絕,設置爲 drop
表示直接丟棄(會返回timeout鏈接超時)
例如:
firewall-cmd --zone=drop --add-rich-rule="rule family="ipv4" source address="192.168.2.0/24" port protocol="tcp" port="22" reject"
表示禁止192.168.2.0/24網段的主機訪問22端口 。
firewalld防火牆詳解 by xuad88.