centos7版本firewalld防火墻的基本命令配置管理
不啟用,但是仍可以繼續使用
註意: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區域並不是在使用,只有活躍的區域才有實際操作意義。
獲取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
處理運行時區域:
運行時模式下對區域進行的修改不是永久有效的。重新加載或者重啟後修改將失效。
給某個區域開啟某個服務
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防火墻的基本命令配置管理