標籤:instead 主機 panic lin may 運行 list 策略配置 ctrl
firewall-cmd 常用參數及作用
參數 作用--get-default-zone 查詢預設的地區名稱--set-default-zone=<地區名稱> 設定預設的地區,使其永久生效--get-zones 顯示可用的地區--get-services 顯示預先定義的服務--get-active-zones 顯示當前正在使用的地區與網卡名稱--add-source= 將源自此IP或子網的流量導向指定的地區--remove-source= 不再將源自此IP或子網的流量導向某個指定地區--add-interface=<網卡名稱> 將源自該網卡的所有流量都導向某個指定地區--change-interface=<網卡名稱> 將某個網卡與地區進行關聯--list-all 顯示目前範圍的網卡配置參數、資源、連接埠以及服務等資訊--list-all-zones 顯示所有地區的網卡配置參數、資源、連接埠以及服務等資訊--add-service=<服務名> 設定預設區域允許該服務的流量--add-port=<連接埠號碼/協議> 設定預設區域允許該連接埠的流量--remove-service=<服務名> 設定預設區域不再允許該服務的流量--remove-port=<連接埠號碼/協議> 設定預設區域不再允許該連接埠的流量--reload 讓“永久生效”的配置規則立即生效,並覆蓋當前的配置規則--panic-on 開啟應急狀況模式--panic-off 關閉應急狀況模式
與Linux系統中其他的防火牆策略組態工具一樣,使用firewalld配置的防火牆策略預設為運行時(Runtime)模式,又稱為當前生效模式,而且隨著系統的重啟會失效。如果想讓配置策略一直存在,就需要使用永久(Permanent)模式了,方法就是在用firewall-cmd命令正常設定防火牆策略時添加--permanent參數,這樣配置的防火牆策略就可以永久生效了。但是,永久生效模式有一個“不近人情”的特點,就是使用它設定的策略只有在系統重啟之後才能自動生效。如果想讓配置的策略立即生效,需要手動執行firewall-cmd --reload命令。
查看firewalld服務當前所使用的地區:
[[email protected] ~]# firewall-cmd --get-default-zone public
查看eth0網卡在firewalld服務中的地區:
[[email protected] ~]# firewall-cmd --get-zone-of-interface=eth0public
把firewalld服務中eth0網卡的預設區域修改為external,並在系統重啟後生效。分別查看當前與永久模式下的地區名稱:
[[email protected] ~]# firewall-cmd --permanent --zone=external --change-interface=eth0success
查看eth0網卡在firewalld服務中的地區: 可以看到,在經過上邊的修改之後並沒有改變eth0網卡的預設區域,因為我們設定的是--permanent(永久)模式,需要執行命令firewall-cmd --reload 命令才能立即生效。
[[email protected] ~]# firewall-cmd --get-zone-of-interface=eth0public
把firewalld服務中eth0網卡的預設區域修改為external,並在系統重啟後生效。分別查看當前與永久模式下的地區名稱:
[[email protected] ~]# firewall-cmd --zone=external --change-interface=eth0 --permanent success[[email protected] ~]# firewall-cmd --get-zone-of-interface=eth0public[[email protected] ~]# firewall-cmd --get-zone-of-interface=eth0 --permanent external
把firewalld服務的當前預設區域設定為public:
[[email protected] ~]# firewall-cmd --set-default-zone=publicWarning: ZONE_ALREADY_SET: public[[email protected] ~]# firewall-cmd --get-default-zone public
啟動/關閉firewalld防火牆服務的應急狀況模式,阻斷一切網路連接(當遠端控制伺服器時請慎用):
[[email protected] ~]# firewall-cmd --panic-on #阻斷一切網路Warning: ALREADY_ENABLED[[email protected] ~]# firewall-cmd --panic-off success
查詢public地區是否允許請求SSH和HTTPS協議的流量:
[[email protected] ~]# firewall-cmd --zone=public --query-service=ssh yes[[email protected] ~]# firewall-cmd --zone=public --query-service=httpsno
把firewalld服務中請求HTTPS協議的流量設定為永久允許,並立即生效:
[[email protected] ~]# firewall-cmd --zone=public --add-service=httpssuccess[[email protected] ~]# firewall-cmd --zone=public --add-service=https --permanent success[[email protected] ~]# firewall-cmd --reload success[[email protected] ~]# firewall-cmd --zone=public --query-service=httpsyes
把firewalld服務中請求HTTP協議的流量設定為永久拒絕,並立即生效:
[[email protected] ~]# firewall-cmd --reloadsuccess[[email protected] ~]# firewall-cmd --zone=public --query-service=httpno
服務的存取控制清單(TCP wrappers):
TCP Wrappers是RHEL 7系統中預設啟用的一款流量監控程式,它能夠根據來訪主機的地址與原生目標服務程式作出允許或拒絕的操作。
TCP Wrappers服務的防火牆策略由兩個控制列表檔案所控制,使用者可以編輯允許控制列表檔案來允許存取對服務的請求流量,也可以編輯拒絕控制列表檔案來阻止對服務的請求流量。控制列表檔案修改後會立即生效,系統將會先檢查允許控制列表檔案(/etc/hosts.allow),如果匹配到相應的允許策略則允許存取流量;如果沒有匹配,則去進一步匹配拒絕控制列表檔案(/etc/hosts.deny),若找到匹配項則拒絕該流量。如果這兩個檔案全都沒有匹配到,則預設允許存取流量。
用戶端類型 樣本 滿足樣本的用戶端列表單一主機 192.168.10.10 IP地址為192.168.10.10的主機指定網段 192.168.10. IP段為192.168.10.0/24的主機指定網段 192.168.10.0/255.255.255.0IP段為192.168.10.0/24的主機指定DNS尾碼.jianghua.com 所有DNS尾碼為.jianghua.com的主機指定主機名稱www.jianghua.com 主機名稱為www.jianghua.com的主機指定所有用戶端ALL 所有主機全部包括在內
在配置TCP Wrappers服務時需要遵循兩個原則:
- 編寫拒絕策略規則時,填寫的是服務名稱,而非協議名稱;
- 建議先編寫拒絕策略規則,再編寫允許策略規則,以便直觀地看到相應的效果.
下面編寫拒絕策略規則檔案,禁止訪問本機sshd服務的所有流量(無須/etc/hosts.deny檔案中修改原有的注釋資訊):
[[email protected] ~]# vim /etc/hosts.deny ## hosts.deny This file contains access rules which are used to# deny connections to network services that either use# the tcp_wrappers library or that have been# started through a tcp_wrappers-enabled xinetd.## The rules in this file can also be set up in# /etc/hosts.allow with a ‘deny‘ option instead.## See ‘man 5 hosts_options‘ and ‘man 5 hosts_access‘# for information on rule syntax.# See ‘man tcpd‘ for information on tcp_wrapperssshd:*[[email protected] ~]# ssh 192.168.38.251ssh_exchange_identification: read: Connection reset by peer
效果就是用戶端ssh串連失敗:
[c:\~]$ ssh 192.168.38.251Connecting to 192.168.38.251:22...Connection established.To escape to local shell, press ‘Ctrl+Alt+]‘.Connection closed by foreign host.Disconnected from remote host(192.168.38.251:22) at 00:09:10.Type `help‘ to learn how to use Xshell prompt.
接下來,在允許策略規則檔案中添加一條規則,使其允許存取源自192.168.38.0/24網段,訪問本機sshd服務的所有流量。可以看到,伺服器立刻就允許存取了訪問sshd服務的流量,效果非常直觀:
[[email protected] ~]# vim /etc/hosts.allow ## hosts.allow This file contains access rules which are used to# allow or deny connections to network services that# either use the tcp_wrappers library or that have been# started through a tcp_wrappers-enabled xinetd.## See ‘man 5 hosts_options‘ and ‘man 5 hosts_access‘# for information on rule syntax.# See ‘man tcpd‘ for information on tcp_wrapperssshd:192.168.38.
成功串連:
[c:\~]$ ssh 192.168.38.251Connecting to 192.168.38.251:22...Connection established.To escape to local shell, press ‘Ctrl+Alt+]‘.Last login: Mon May 28 23:54:47 2018 from 192.168.38.1[[email protected] ~]#
firewall-cmd 防火牆命令詳解 及 TCP Wrappers