Firewalld常用命令


原文地址:http://www.excelib.com/article/288/show

Firewalld防火牆中所使用到的命令可以分為三大類:安裝卸載、維護和策略操作。

安裝

在Centos7中默認已經安裝了firewalld,如果需要自行安裝,可以直接使用yum安裝

 [root@excelib.com ~]# yum install firewalld 

如果需要使用圖形化配置工具還需要安裝firewall-config

 [root@excelib.com ~]# yum install firewall-config 

這樣firewalld就安裝完成了,不過要注意firewalld跟iptables不能同時使用,所以在使用firewalld之前首先需要將iptables停用。

維護命令

firewalld的維護相對來說是非常簡單的,其命令主要分為三大類:啟動停止和查詢狀態、設置開機自動啟動以及更新規則。

啟動停止和查詢狀態

在Centos7中默認將原來的服務管理工具service升級為了systemctl,其實原來的service只是一個腳本執行工具,而systemctl的功能非常強大,關於systemctl的詳細用法大家可以閱讀linux中國的一篇文章,地址是:https://linux.cn/article-5926-1.html,這篇文章寫的非常詳細,所以學生就不再給大家做補充了,下面來說一說怎么用它來操作firewalld。

啟動

 [root@excelib.com ~]# systemctl start firewalld 

停止

 [root@excelib.com ~]# systemctl stop firewalld 

重啟

 [root@excelib.com ~]# systemctl restart firewalld 

查詢狀態

 [root@excelib.com ~]$ systemctl status firewalld 

另外,對於firewalld來說還可以使用自身的firewall-cmd工具來查詢運行狀態

 [root@excelib.com ~]$ firewall-cmd --state 

設置開機自動啟動

設置開機自動啟動也是使用systemctl來操作的,命令如下

啟用開機自動啟動

 [root@excelib.com ~]$ systemctl enable firewalld 

禁用開機自動啟動

 [root@excelib.com ~]$ systemctl disable firewalld 

查看自動啟動狀態

 [root@excelib.com ~]$ systemctl is-enabled firewalld 

當然,systemctl的這些命令不只適用於firewalld,也適用於其他服務,使用時只要將firewalld換成相應服務的名稱就可以了。

更新規則

直接使用firewall-cmd修改的規則是不需要更新就可以直接生效的,但是如果加了--permanent參數,或者直接編輯xml文件之后就需要我們手動reload了,firewall-cmd提供了兩個更新規則的參數:--reload和--complete-reload,前者只是更新需要更新規則,而且更新的過程中不會影響現有的連接,而后者在更新時會將所有的規則清除掉然后重建,而且為了安全考慮,在更新之前首先會將策略設置為DROP,等更新完成之后再恢復為ACCEPT,這樣就會對現有連接造成影響,所以如果沒有特殊需求我們應該盡量使用前者。具體命令如下

 [root@excelib.com ~]# firewall-cmd --reload [root@excelib.com ~]# firewall-cmd --complete-reload 

策略操作

對於firewalld來說最重要的就是策略操作了,策略操作主要有三種方法:使用firewall-config操作、使用firewall-cmd操作和直接編輯xml文件,學生在上節已經給大家介紹過了,firewall-config是圖形化工具,firewall-cmd是命令行工具,我們這里主要以命令行工具為主來給大家介紹。

firewall-cmd中關於規則的命令非常多,如果在這里全部列出來再給大家解釋一遍應該效果也不會太好,所以學生在后面講到具體相關內容時再給大家講相應的命令,比如講到zone的時候給大家介紹跟zone相關的命令,這樣大家更容易理解和記憶。

firewall-cmd中的命令雖然非常多,但是有四大類使用頻率非常高的命令:--add-xxx、--remove-xxx、--query-xxx、--get-xxx以及--list-xxx,這里前兩個非常容易理解,一個是添加一個是刪除,而后三個從名字上就不太容易區分了,下面學生給大家解釋一下。

--query-xxx主要用於布爾值的查詢,比如

 [root@excelib.com ~]$ firewall-cmd --zone=public --query-service=ssh 

這個命令用於查詢在public這個zone中是否包含ssh這個服務。

--get-xxx主要用於獲取特定的內容,比如

 [root@excelib.com ~]$ firewall-cmd --get-zones 

這樣就可以獲取到預設的zones,默認情況下返回結果為

 block dmz drop external home internal public trusted work 

--list-xxx主要用於按一定條件進行查詢(不過有的list命名也不需要條件),比如

 [root@excelib.com ~]$ firewall-cmd --zone=public --list-services 

這個命令可以返回public這個zone中所包含的services。

 

query還是比較容易理解的,但是get和list從字面上並不容易區分,剛開始學生以為get命令用於獲取單個結果,list用於獲取多個結果,但后來發現並不是這樣。當然,我們在使用的時候按照文檔中的說明來使用就可以了。

 

另外,在firewall-cmd中有一個比較特殊的參數:--permanent,他表示是否將修改后的規則保存下來,如果不加這個參數,那么所做的修改當時會立即生效,但是在firewalld重啟之后就會丟失,而加上這個參數后所做的修改就會永久保存下來,不過這時的修改不會立即生效而是需要reload后才可以生效。其實這個也非常容易理解,當不加--permanent修改規則時firewalld會實際修改運行時的規則,而如果加了這個參數firewalld其實是去修改的xml配置文件,和我們直接編輯xml文件一樣,所以就需要reload才可以生效。

 

參考文獻

1、https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Security_Guide/sec-Using_Firewalls.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM