轉自http://lduan.blog.51cto.com/5428084/1547139web
在RHEL7裏有幾種防火牆共存:firewalld、iptables、ebtables,默認使用firewalld來管理netfilter子系統,不過底層調用的命令仍然是iptables等。由於這幾個daemon是衝突的建議禁用其餘的幾種服務: 瀏覽器
systemctl mask iptables(ip6tables,ebtables)
在firewalld中使用了區域(zone)的概念,默認已經定義了幾個zone:安全
zone的解釋:網絡
數據包要進入到內核必需要經過這些zone中的一個,而不一樣的zone裏定義的規則不同(即信任度不同,過濾的強度也不同)。能夠根據網卡所鏈接的網絡的安全性來判斷,這張網卡的流量到底使用哪一個zone,好比上圖來自eth0的流量所有使用zone1的過濾規則,eth1的流量使用zone3。一張網卡同時只能綁定到一個zone。你們就能夠把這些zone想象成進入火車站(地鐵)的安檢,不一樣的入口檢測的嚴格度不同。tcp
默認的幾個zone(由firewalld 提供的區域按照從不信任到信任的順序排序):ide
dropspa
任何流入網絡的包都被丟棄,不做出任何響應,只容許流出的網絡鏈接。即便開放了某些服務(好比http),這些服務的數據也是不容許經過的。3d
blockorm
任何進入的網絡鏈接都被拒絕,並返回 IPv4 的 icmp-host-prohibited 報文或者 IPv6 的 icmp6-adm-prohibited 報文。只容許由該系統初始化的網絡鏈接。blog
public(默認)
用以能夠公開的部分。你認爲網絡中其餘的計算機不可信而且可能傷害你的計算機,只容許選中的服務經過。
external
用在路由器等啓用假裝的外部網絡。你認爲網絡中其餘的計算機不可信而且可能傷害你的計算機,只容許選中的服務經過。
dmz
用以容許隔離區(dmz)中的電腦有限地被外界網絡訪問,只容許選中的服務經過。
work
用在工做網絡。你信任網絡中的大多數計算機不會影響你的計算機,只容許選中的服務經過。
home
用在家庭網絡。你信任網絡中的大多數計算機不會影響你的計算機,只容許選中的服務經過。
internal
用在內部網絡。你信任網絡中的大多數計算機不會影響你的計算機,只容許選中的服務經過。
trusted
容許全部網絡鏈接,即便沒有開聽任何服務,那麼使用此zone的流量照樣經過(一路綠燈)。
查看當前的默認的區域:
設置默認的區域:
給某個區域開啓某個服務
關閉某個服務:
若是沒有指定zone的話,則是在默認的zone上操做。
查看某個zone上是否容許某個服務:
在firewalld裏添加一個端口,這樣就能夠訪問了:
查看開啓了哪些端口:
查看某個接口是屬於哪一個zone的:
把接口加入到某個zone:
查看某個zone裏開啓了哪些服務、端口、接口:
如今默認的zone是trusted,雖然如今已經不容許http訪問了,可是還能訪問,爲何?
記住:由於trusted是最被信任的,即便沒有設置任何的服務,那麼也是被容許的,由於trusted是容許全部鏈接的。
有多個不一樣的zone,每一個zone定義的規則是不同的,由於全部的數據都是從網卡進入,到底使用哪一個zone的規則,關鍵就在於這個網卡是在哪一個區域的,好比下面的例子:
如今eth0是在public這個zone裏的,此時public是容許http的:
可是默認的zone是external,且不容許http訪問:
可是瀏覽器卻能訪問,證實了上面的說法。
若是改變eth0所在的zone,好比改到external:
則訪問不了:
下面驗證下源地址的意思:
網卡的source地址,也能決定能夠使用哪一個zone,新添加了一張網卡,此網卡開始默認不屬於任何的zone:
此時經過訪問eth1來訪問web是訪問不了的:
下面咱們給public設置source,來自源192.168.30.0/24網段的都走public區:
經過驗證,如今訪問是成功的。
若是在external裏面同時也加入192.168.30.0/24這個源呢?
顯示爲衝突,即一個源只能屬於一個zone,不能同時屬於多個zone。
以上是對tcp協議作的實驗,下面對ICMP作一些演示:
首先獲取firewalld所支持的ICMP類型:
記住:默認狀況下是容許全部類型的ICMP經過。
下面阻斷public的request的包:
這樣凡是進來的是echo-request類型的包都會被拒絕,由於public是和eth0綁定在一塊的,因此ping 192.168.2.130的時候是不通的:
刪除此規則:
-端口的轉發
意思是凡是來從external進來的22端口的數據包所有轉發到192.168.30.254
驗證:
更詳細的寫法,能夠指定目標端口的:
查詢:
刪除: