1. 程式人生 > >centos7版本firewalld防火墻的基本命令配置管理

centos7版本firewalld防火墻的基本命令配置管理

samba pre forward out 位置 lis remove emc 進行

centos7/redhat7已經默認使用firewalld作為防火墻,其使用的方式已經變化,基於iptables的防火墻默認
不啟用,但是仍可以繼續使用
註意:centos7/redhat7中有幾種防火墻共存:firewalld、iptables、ebtablesd、
默認使用的是firewalld作為防火墻,管理工具是firewalld

Centos7的內核版本是3.10

uname  -r

技術分享圖片

在此版本的內核裏防火墻的包過濾機制是firewalld,使用firewalld來管理netfilter,不過底層調用的還是iptables,因為這幾種damon是沖突的,所以建議禁用其他服務

systemctl status {firewalld,iptables,ip6tables,ebtables}

技術分享圖片

禁止iptables、ip6tables、ebtables

systemctl mask  {iptables,ip6tables,ebtables}

firewalld提供了支持網絡/防火墻區域(zone)定義網絡鏈接以及接口安全等級的防火墻管理工具。擁有運行時配置和永久配置選項。它

也支持允許服務或者應用程序直接添加防火墻規則的接口。以前的system-config-firewall防火墻模型是靜態的,每次修改都要求防火墻

完全重啟。這個過程包括內核netfilter防火墻模塊的卸載和新配置所需模塊的裝載等。 相反,firewall daemon動態管理防火墻,不需要重啟整個防火墻便可應用更改。因而也就沒有必要重載所有內核防火墻模塊了。

技術分享圖片

什麽是區域:網路區域定義了網絡連接的等級


技術分享圖片

數據包要想進入到內核裏必須通過某一個區域zone中的一個區域,而不同的區域裏定義的規則不一樣(即信任度不一樣,過濾簽強度也不一樣),可以根據網卡所連接的安全性來判斷,這張網卡的流量到底使用哪一個區域。

例如: 上圖網卡eth0的流量全部使用zone區域1過濾規則,網卡eth1的流量全部使用zione區域2過濾規則 。。。。。

註意:一張網卡只能綁定到一個區域,而一個區域可以綁定多塊網卡

什麽是服務 :服務就是 端口和協議入口的組合

區域的概念:

丟棄區域(Drop Zone):如果使用丟棄區域,任何進入的數據包將被丟棄。這個類似我們之前使用的 iptables -j drop,一旦使用丟棄規則將意味著不存在響應。

阻塞區域(Block Zone):阻塞區域會拒絕進入網絡的連接,並且返回icmp-host-prohibited,只有服務器已經建立的連接會被通過即只允許由該系統初始化的網絡連接

公共區域(Public Zone):只接受那些被選中的連接,默認只允許ssh和dhcpv6-client,這個區域是缺省區域zone

外部區域(External Zone):這個區域相當於路由器的啟用偽裝(masqmasquerading)選項。只有指定的連接會被接受,即ssh,而其他的連接將被丟棄或者不被接受

隔離區域(DMZ Zone):如果想要只允許給部分服務能被外部訪問,可以在DMZ區域中定義。它也擁有只通過被選中連接的特性,即ssh。

工作區域(Work Zone):在這個區域,我們只能定義內部網絡。比如私有網絡通信才被允許,只允許ssh,ipp-client和dhcpv6-client

家庭區域(Home Zone):這個區域專門用於家庭環境。它同樣只允許被選中的連接,即ssh,ipp-client,mdns,Samba-client和dhcpv6-client

內部區域(Internal Zone):這個區域和工作區域(Work Zone)類似,它也只有通過被選中的連接,和home區域一樣。

信任區域(Trusted Zone):信任區域允許所有網絡通信通過。記住:因為trusted是最被信任的,即使設置沒有任何的服務,那麽也是被允許的,因為trusted是允許所有連接的以上是系統定義的所有的zone,但是這些zone區域並不是在使用,只有活躍的區域才有實際操作意義。


  1. 獲取firewalld的狀態

firewall-cmd  --state

技術分享圖片

2.在不改變狀態的情況下重新加載防火墻

firewall-cmd  --reload

技術分享圖片

註意:如果你使用--complete-reload,狀態信息將會丟失

3.獲取支持的區域列表

firewall-cmd --get-zones

技術分享圖片

這條命令輸出後分別用空格分開

4.獲取所有支持的服務

firewall-cmd  --get-services

技術分享圖片

這條命令輸出後分別用空格分開

每個服務都是firewalld相關的端口和選項還有規則的集合,也就是把服務看成是firewalld的某一個選項規則或端口的集合,被啟動的服務會在firewalld開啟時、運行時自動加載。

默認情況下很多服務是有效的


列出有效的服務

cd  /usr/lib/firewalld/services/

技術分享圖片

想要創建自己的服務就可以在目錄下面指定好

例如:現在我想添加一個rhmp服務,端口號為1935。

首先任選一種服務復制過來:

cp  /usr/lib/firewalld/services/ssh.xml  /etc/firewalld/services/

技術分享圖片

接下來把復制過來的文件重命名為rhmp.xml

mv ssh.xml rhmp.xm

技術分享圖片

接下來打開並編輯文件的頭部、描述、協議和端口號,以供rhmp服務使用

vim rhmp.xml

技術分享圖片

重啟firewalld服務激活這些設置

firewall-cmd --reload

為確認服務是否已經正常啟動 ,獲取服務列表

firewall-cmd  --get-services

技術分享圖片

5.獲取所有支持的ICMP類型

firewall-cmd --get-icmptype

技術分享圖片

這條命令輸出之後用空格分隔列表

6.列出全部啟用的區域防火墻策略

例如:服務、端口和協議的組合、端口、數據包轉發、偽裝、ICMP攔截或自定義規則等

firewall-cmd  --list-all-zones

技術分享圖片

上面的命令將會列出每種區域如block、dmz、drop、external、home、internal、public、trusted以及work。如果區域還有其它詳細規則(rich-rules)、啟用的服務或者端口,這些區域信息也會分別被羅列出來。

7.輸出區域全部啟用的防火墻策略,如果省略區域,將顯示默認的區域

firewall-cmd  --list-all

技術分享圖片

輸出指定啟動區域的防火墻策略

firewall-cmd --zone=public --list-all

技術分享圖片

8.查看默認區域

firewall-cmd --get-default-zone

技術分享圖片

public是默認區域在/etc/firewalld/firewalld.conf文件中定義成DefaultZone=public。

9.設置默認區域

firewall-cmd  --set-default-zone=drop

技術分享圖片

查看默認區域

firewall-cmd  --get-default-zone

流入默認區域中配置的接口的新訪問請求將被置入新的默認區域,當前活動的連接請求將不受影響。

10、獲取活動的區域

firewall-cmd  --get-active-zones

技術分享圖片

這條命令將輸出每個區域所含的接口:區域名、接口名

11.查看某個接口是屬於哪個區域的

firewall-cmd  --get-zone-of-interface=eno16777736

技術分享圖片

這條命令將輸出接口所屬的區域的名稱

12.將接口(網卡)添加到區域中

firewall-cmd --zone=public --add-interface=eno16777736

技術分享圖片

如果接口不屬於區域,將被增加到區域中,如果區域省略了,將使用默認區域,接口在重新加載後將重新應用

13.修改接口所屬區域

firewall-cmd --zone=public --Change-interface=eno16777736

技術分享圖片

這個選項與--add-interface相似,但是當接口已經存在於另一個區域的時候,該接口將被添加到新的區域。

14、從區域中刪除一個接口

firewall-cmd --zone=public --remove-interface=eno16777736

技術分享圖片

如果某個接口不屬於任何區域,那麽這個接口所有的數據包使用默認的區域(zone)規則。

15.查詢區域中是否包含某個接口

firewall-cmd  --zone=drop --query-interface=eno33554984

技術分享圖片

如果區域被省略了,將使用默認區域

16.列舉區域中啟用的服務

firewall-cmd  --zone=public --list-services

技術分享圖片

如果區域被省略了,將使用默認區域

17.啟用、禁用及查詢應急模式阻斷所有網絡連接 ,以防出現緊急狀況

firewall-cmd --panic-on
firewall-cmd --panic-off
firewall-cmd --query-panic

技術分享圖片

技術分享圖片

技術分享圖片


處理運行時區域:

運行時模式下對區域進行的修改不是永久有效的。重新加載或者重啟後修改將失效。

  1. 給某個區域開啟某個服務

firewall-cmd --zone=public --add-service=ipp-client --timeout=60

技術分享圖片

上述配置給默認區域開啟ipp-client服務,如果不指定區域,將使用默認區域,如果設置了超時時間,服務將只啟用特定秒數。

使ipp-client服務生效60秒

2.禁用某個區域中的某個服務

firewall-cmd  --remove-service=ipp-client

技術分享圖片

如果未指定區域,將使用默認區域。

3.查詢區域中是否啟動了特定的服務

firewall-cmd  --zone=public --query-service=ssh

技術分享圖片

yes表示服務啟用,no表示服務關掉了

4.啟用區域端口和協議組合

firewall-cmd --zone=public --add-port=8080/tcp
firewall-cmd --zone=public --add-port=25-80/tcp

技術分享圖片

上述命令啟用端口和協議,端口可以是單獨的端口也可以是一個範圍的端口。

5.禁用區域端口和協議組合

firewall-cmd --zone=public  --remove-port=8080/tcp

技術分享圖片

6.查詢區域中是否啟用了端口和協議組合

firewall-cmd  --zone=public --query-port=25-80/tcp

技術分享圖片

7.啟用區域中的IP偽裝功能

firewall-cmd  --zone=public --add-masquerade

技術分享圖片

此操作啟用地址偽裝功能,私有網絡的地址將被隱藏,並映射到一個公有網絡的IP,這是地址轉換的一種形式,常用於路由,由於內核的限制,偽裝功能僅可用於ipv4。

8.禁用區域中的IP偽裝功能

firewall-cmd --zone=public --remove-masquerade

技術分享圖片

9.查詢區域中的偽裝狀態

firewall-cmd  --zone=public --query-masquerade

技術分享圖片

註意:啟用偽裝功能的主機同時也需要開啟轉發服務。

echo 1 > /proc/sys/net/ipv4/ip_forward

#vi /etc/sysctl.conf  添加如下內容
net.ipv4.ip_forward = 1
保存退出並執行#sysctl -p 使修改生效

10、啟用區域的ICMP阻塞功能

firewall-cmd  --zone=public --add-icmp-block=echo-request

技術分享圖片

此操作是互聯網選中的報文(icmp)進行阻塞,ICMP可以是創建、請求、應答報文。

11.禁止區域的ICMP阻塞功能

firewall-cmd  --zone=public  --remove-icmp-block=echo-request

技術分享圖片

12.查詢區域的ICMP阻塞功能

firewall-cmd  --zone=public --query-icmp-block=echo-request

技術分享圖片

13.在區域中啟用端口轉發或映射

下面的命令的意思是凡是從external區域進來的22端口的數據包全部轉發到211.106.65.50IP地址上面

firewall-cmd  --zone=external --add-forward-port=port=22:proto=tcp:toaddr=211.106.65.50

技術分享圖片

端口可以映射到另一臺主機的同一端口,也可以是同一臺主機或另一臺主機的不同端口,端口可以是一個單獨的端口或者是範圍端口,協議可以為tcp或udp,目標可以是端口號和端口範圍,目標地址可以是IPv4地址,受內核限制 ,端口轉發功能僅可用於IPV4

14.禁止區域中的端口轉發或映射

firewall-cmd  --zone=external --remove-forward-port=port=22:proto=tcp:toaddr=211.106.65.50

技術分享圖片

15.查詢區域的端口轉發或者端口映射

firewall-cmd  --zone=external  --query-forward-port=port=22:proto=tcp:toaddr=211.106.65.50

技術分享圖片

處理永久區域:

永久選項不直接影響運行時狀態。這些選項僅在重載或者重啟服務時可用。為了使用運行時和永久設置,需要分別設置兩者。

註意:需要永久時候,--permanent 這項參數永遠都是第一添加的位置

1.獲取永久選項所支持的服務

firewall-cmd --permanent --get-services

技術分享圖片

2.獲取永久選項所支持的icmp類型列表

firewall-cmd  --permanent  --get-icmptypes

技術分享圖片

3. 獲取支持的永久區域

firewall-cmd  --permanent  --get-zones

技術分享圖片

4.配置防火墻在public區域打開HTTP協議,並保存,以致重啟生效

firewall-cmd --permanent --zone=public --add-service=http

技術分享圖片

查看永久模式下public區域是否打開http服務

firewall-cmd --permanent  --zone=public  --query-service=http

技術分享圖片

5.防火墻開放8080端口在public區域

firewall-cmd  --permanent --zone=public --add-port=8080/tcp

技術分享圖片

6.命令行配置富規則

查看富規則:

firewall-cmd --list-rich-rules

技術分享圖片

創建富規則:

firewall-cmd  --add-rich-rule 'rule  family=ipv4 source address=10.35.89.0/24
service name=ftp log prefix="ftp" level=info accept' --permanent

技術分享圖片

firewall-cmd  --add-rich-rule 'rule  family=ipv4 source address=10.35.89.0/24
port port=80 protocol=tcp log prefix="80" level=info accept' --permanent

.技術分享圖片


2018年 祝願大家有個好的心情!!!

新的一年新的開始,希望對你有所幫助!!!


centos7版本firewalld防火墻的基本命令配置管理