W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
第2章在講解Linux命令時曾經(jīng)聽到,命令行終端是一種極富效率的工作方式,firewall-cmd是firewalld防火墻配置管理工具的CLI(命令行界面)版本。它的參數(shù)一般都是以“長格式”來提供的,大家不要一聽到長格式就頭大,因為RHEL 7系統(tǒng)支持部分命令的參數(shù)補齊,其中就包含這條命令(很酷吧)。也就是說,現(xiàn)在除了能用Tab鍵自動補齊命令或文件名等內(nèi)容之外,還可以用Tab鍵來補齊表8-3中所示的長格式參數(shù)了(這太棒了)。
表8-3 firewall-cmd命令中使用的參數(shù)以及作用
參數(shù) | 作用 |
---|---|
--get-default-zone | 查詢默認(rèn)的區(qū)域名稱 |
--set-default-zone=<區(qū)域名稱> | 設(shè)置默認(rèn)的區(qū)域,使其永久生效 |
--get-zones | 顯示可用的區(qū)域 |
--get-services | 顯示預(yù)先定義的服務(wù) |
--get-active-zones | 顯示當(dāng)前正在使用的區(qū)域與網(wǎng)卡名稱 |
--add-source= | 將源自此IP或子網(wǎng)的流量導(dǎo)向指定的區(qū)域 |
--remove-source= | 不再將源自此IP或子網(wǎng)的流量導(dǎo)向某個指定區(qū)域 |
--add-interface=<網(wǎng)卡名稱> | 將源自該網(wǎng)卡的所有流量都導(dǎo)向某個指定區(qū)域 |
--change-interface=<網(wǎng)卡名稱> | 將某個網(wǎng)卡與區(qū)域進(jìn)行關(guān)聯(lián) |
--list-all | 顯示當(dāng)前區(qū)域的網(wǎng)卡配置參數(shù)、資源、端口以及服務(wù)等信息 |
--list-all-zones | 顯示所有區(qū)域的網(wǎng)卡配置參數(shù)、資源、端口以及服務(wù)等信息 |
--add-service=<服務(wù)名> | 設(shè)置默認(rèn)區(qū)域允許該服務(wù)的流量 |
--add-port=<端口號/協(xié)議> | 設(shè)置默認(rèn)區(qū)域允許該端口的流量 |
--remove-service=<服務(wù)名> | 設(shè)置默認(rèn)區(qū)域不再允許該服務(wù)的流量 |
--remove-port=<端口號/協(xié)議> | 設(shè)置默認(rèn)區(qū)域不再允許該端口的流量 |
--reload | 讓“永久生效”的配置規(guī)則立即生效,并覆蓋當(dāng)前的配置規(guī)則 |
--panic-on | 開啟應(yīng)急狀況模式 |
--panic-off | 關(guān)閉應(yīng)急狀況模式 |
與Linux系統(tǒng)中其他的防火墻策略配置工具一樣,使用firewalld配置的防火墻策略默認(rèn)為運行時(Runtime)模式,又稱為當(dāng)前生效模式,而且隨著系統(tǒng)的重啟會失效。如果想讓配置策略一直存在,就需要使用永久(Permanent)模式了,方法就是在用firewall-cmd命令正常設(shè)置防火墻策略時添加--permanent參數(shù),這樣配置的防火墻策略就可以永久生效了。但是,永久生效模式有一個“不近人情”的特點,就是使用它設(shè)置的策略只有在系統(tǒng)重啟之后才能自動生效。如果想讓配置的策略立即生效,需要手動執(zhí)行firewall-cmd --reload命令。
接下來的實驗都很簡單,但是提醒大家一定要仔細(xì)查看劉遄老師使用的是Runtime模式還是Permanent模式。如果不關(guān)注這個細(xì)節(jié),就算是正確配置了防火墻策略,也可能無法達(dá)到預(yù)期的效果。
查看firewalld服務(wù)當(dāng)前所使用的區(qū)域:
[root@linuxprobe ~]# firewall-cmd --get-default-zone
public
查詢eno16777728網(wǎng)卡在firewalld服務(wù)中的區(qū)域:
[root@linuxprobe ~]# firewall-cmd --get-zone-of-interface=eno16777728
public
把firewalld服務(wù)中eno16777728網(wǎng)卡的默認(rèn)區(qū)域修改為external,并在系統(tǒng)重啟后生效。分別查看當(dāng)前與永久模式下的區(qū)域名稱:
[root@linuxprobe ~]# firewall-cmd --permanent --zone=external --change-interface=eno16777728
success
[root@linuxprobe ~]# firewall-cmd --get-zone-of-interface=eno16777728
public
[root@linuxprobe ~]# firewall-cmd --permanent --get-zone-of-interface=eno16777728
external
把firewalld服務(wù)的當(dāng)前默認(rèn)區(qū)域設(shè)置為public:
[root@linuxprobe ~]# firewall-cmd --set-default-zone=public
success
[root@linuxprobe ~]# firewall-cmd --get-default-zone
public
啟動/關(guān)閉firewalld防火墻服務(wù)的應(yīng)急狀況模式,阻斷一切網(wǎng)絡(luò)連接(當(dāng)遠(yuǎn)程控制服務(wù)器時請慎用):
[root@linuxprobe ~]# firewall-cmd --panic-on
success
[root@linuxprobe ~]# firewall-cmd --panic-off
success
查詢public區(qū)域是否允許請求SSH和HTTPS協(xié)議的流量:
[root@linuxprobe ~]# firewall-cmd --zone=public --query-service=ssh
yes
[root@linuxprobe ~]# firewall-cmd --zone=public --query-service=https
no
把firewalld服務(wù)中請求HTTPS協(xié)議的流量設(shè)置為永久允許,并立即生效:
[root@linuxprobe ~]# firewall-cmd --zone=public --add-service=https
success
[root@linuxprobe ~]# firewall-cmd --permanent --zone=public --add-service=https
success
[root@linuxprobe ~]# firewall-cmd --reload
success
把firewalld服務(wù)中請求HTTP協(xié)議的流量設(shè)置為永久拒絕,并立即生效:
[root@linuxprobe ~]# firewall-cmd --permanent --zone=public --remove-service=http
success
[root@linuxprobe ~]# firewall-cmd --reload
success
把在firewalld服務(wù)中訪問8080和8081端口的流量策略設(shè)置為允許,但僅限當(dāng)前生效:
[root@linuxprobe ~]# firewall-cmd --zone=public --add-port=8080-8081/tcp
success
[root@linuxprobe ~]# firewall-cmd --zone=public --list-ports
8080-8081/tcp
把原本訪問本機888端口的流量轉(zhuǎn)發(fā)到22端口,要且求當(dāng)前和長期均有效:
流量轉(zhuǎn)發(fā)命令格式為firewall-cmd --permanent --zone=<區(qū)域> --add-forward-port=port=<源端口號>:proto=<協(xié)議>:toport=<目標(biāo)端口號>:toaddr=<目標(biāo)IP地址>
[root@linuxprobe ~]# firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.10.10
success
[root@linuxprobe ~]# firewall-cmd --reload
success
在客戶端使用ssh命令嘗試訪問192.168.10.10主機的888端口:
[root@client A ~]# ssh -p 888 192.168.10.10
The authenticity of host '[192.168.10.10]:888 ([192.168.10.10]:888)' can't be established.
ECDSA key fingerprint is b8:25:88:89:5c:05:b6:dd:ef:76:63:ff:1a:54:02:1a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[192.168.10.10]:888' (ECDSA) to the list of known hosts.
root@192.168.10.10's password:此處輸入遠(yuǎn)程root管理員的密碼
Last login: Sun Jul 19 21:43:48 2017 from 192.168.10.10
firewalld中的富規(guī)則表示更細(xì)致、更詳細(xì)的防火墻策略配置,它可以針對系統(tǒng)服務(wù)、端口號、源地址和目標(biāo)地址等諸多信息進(jìn)行更有針對性的策略配置。它的優(yōu)先級在所有的防火墻策略中也是最高的。比如,我們可以在firewalld服務(wù)中配置一條富規(guī)則,使其拒絕192.168.10.0/24網(wǎng)段的所有用戶訪問本機的ssh服務(wù)(22端口):
[root@linuxprobe ~]# firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.10.0/24" service name="ssh" reject"
success
[root@linuxprobe ~]# firewall-cmd --reload
success
在客戶端使用ssh命令嘗試訪問192.168.10.10主機的ssh服務(wù)(22端口):
[root@client A ~]# ssh 192.168.10.10
Connecting to 192.168.10.10:22...
Could not connect to '192.168.10.10' (port 22): Connection failed.
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: