網絡ACL(NACL)

關注公衆號:AWS愛好者(iloveaws)
文 | 沉默惡魔(禁止轉載,轉載請先經過作者同意)
網站:www.iloveaws.cn

Hello大家好,歡迎來到《AWS解決方案架構師認證 Professional(SAP)中文視頻培訓課程》,我們今天的視頻課程內容爲網絡ACL。網絡訪問控制列表 (ACL) 是 VPC 的一個可選安全層,可用作防火牆來控制進出一個或多個子網的流量。

我們開始今天的課程內容。

在這裏插入圖片描述
我們來看下網絡ACL的一些重要知識點。

網絡ACL知識點

1、網絡ACL是無狀態的,這意味着允許入站流量的響應,返回的數據流必須被出站規則明確允許(反之亦然)。
2、網絡ACL是在子網級別運行;而安全組在實例級別運行。我們看下PPT右側的圖:

子網1中有一臺EC2,安全組是與這臺EC2的網絡接口關聯的,因此安全組是在實例級別運行的。然而,對於網絡ACL,它不是在實例級別運行,而是在子網級別運行。

我們看下圖,子網1關聯了一個網絡ACL,這個子網1中可能有數百臺EC2實例,那麼對於這個網絡ACL規則的調整,是會影響關聯的子網1中的所有EC2實例的。

假設來自互聯網網關的數據流會使用路由表中的路由,路由到合適的子網,與子網關聯的網絡 ACL 規則控制允許進入子網的數據流,與實例關聯的安全組規則控制允許進入實例的數據流。

3、VPC中的每個子網都必須與一個網絡ACL相關聯。如果您沒有明確地將子網與網絡ACL相關聯,則子網將自動與默認網絡ACL關聯。

4、(上面提到了默認網絡ACL)默認網絡ACL的內容爲允許所有入站和出站的流量, 也就是允許所有流量流進和流出與其關聯的子網。所以,當我們在子網啓動實例後,如果使用的是默認網絡ACL,那麼至少網絡ACL對於啓動的實例是放行的。

5、您也可以創建自定義網絡 ACL 並將其與子網相關聯。

默認情況下,每個自定義網絡 ACL 都拒絕所有入站和出站流量,直至您添加規則。所以如果您自己創建了自定義網絡ACL,要注意默認情況下會拒絕所有出入站流量,需要根據實際需求自行調整規則,這一點也是容易忽視的地方。

在這裏插入圖片描述
安全組和NACL的差異

我們接下來看下安全組和網絡ACL的差異,這也是很多同學可能比較關心的部分。

1、安全組在實例級別運行,網絡ACL在子網級別運行。

2、安全組僅支持配置允許規則,在安全組無法配置拒絕規則。例如配置顯式拒絕某個IP地址訪問EC2實例,這個安全組做不到;而網絡ACL支持允許規則和拒絕規則。我舉個例子,比如我們有一臺EC2,對外開放了80端口的訪問,如果想要拒絕某個來源IP對實例的80端口訪問,這個通過安全組是做不到的,需要使用網絡ACL添加相應的拒絕規則。

3、安全組是有狀態的,返回的數據流會被自動允許;而網絡ACL是無狀態的,返回數據流必須被規則明確允許,就是說使用網絡ACL配置了允許進站的規則必須要有相應允許出站的規則。

4、規則判斷的區別,安全組會在決定是否允許數據流前評估所有規則;網絡ACL會按照規則的數字,順序處理所有規則,這塊我們後面會進行演示。

5、安全組只有在與實例關聯的情況下,規則纔會被應用到實例;而網絡ACL自動應用於與之關聯的子網的所有實例,網絡ACL提供了額外的防禦層。

以上就是安全組與網絡ACL的差異。

在這裏插入圖片描述
接下來的內容我們切換到AWS管理控制檯,演示前面講的內容。

NACL實操演示

我們切換到EC2的控制檯,當前有一臺EC2在運行,我們使用這個EC2來做下面的演示。

首先,看下這臺EC2的安全組的入站規則,當前對所有來源開放了ICMP,以及TCP的22端口。如果我們現在要禁止一個特定的IP訪問這臺EC2的22端口,使用安全組是做不到的,因爲前面講了,安全組只支持配置允許的規則,這就需要配置網絡ACL添加相應的拒絕規則。

我們看下當前的網絡ACL,進入到VPC控制檯,然後安全性-網絡ACL,可以看到目前我們有一個網絡ACL,默認值爲“是”,意味着它是創建的默認網絡ACL;

這個網絡ACL目前關聯了3個子網。您可以將網絡 ACL 與多個子網關聯。但是,一個子網一次只能與一個網絡 ACL 關聯。當您將一個網絡 ACL 與一個子網關聯時,將會刪除之前的關聯。

頁面下方是網絡ACL的入站規則和出站規則,當前入站和出站各包括兩條規則,我們看一下規則,規則左邊是編號列表,第一條規則編號爲100,允許了所有的流量入站;第二條規則編號爲*號,規則內容爲禁止所有流量入站。

網絡ACL是按順序評估規則,從編號最小的規則開始,以判斷是否允許流量進入或離開任何與網絡 ACL 關聯的子網,也就是說在網絡ACL中,規則的編號越小,它的優先級就越高。

假設現在有入站流量匹配到了編號100這條規則,那麼網絡ACL就會放行此入站流量,而不會在繼續向後評估規則。也就是說網絡ACL從最小編號的規則開始匹配,匹配了規則的流量就會執行該規則相應的放行或者禁止動作,而不在繼續向後匹配規則。

我們看下現在的默認網絡ACL的規則,默認允許了與其關聯的子網的所有入站和出站的流量。

接下來我們就測試下,在我的本地終端是否能夠訪問這臺EC2。

在這裏插入圖片描述
我們切換到EC2控制檯頁面,複製這臺EC2的外網IP,然後在切換到我本地的終端,使用PING命令來測試下:

ping 54.180.109.183

可以看到返回的信息顯示可以PING通的,我本地電腦是可以和這臺EC2通信的。

接下來我們做個測試,修改下這臺EC2所在子網關聯的網絡ACL的入站規則,我們添加一個入站規則:
添加規則,編號輸入90 ,然後選擇所有流量,協議,端口範圍以及源都保持和編號規則100的內容一致,然後允許/拒絕這裏選擇拒絕,然後完成添加規則。

我們看下,新添加的規則的編號爲90,內容爲拒絕所有入站流量;之前默認的規則編號100,內容爲允許所有入站流量。

然後我們切換到本地終端在PING一下EC2的IP :

ping 54.180.109.183

可以看到目前我們已經無法ping通ec2了,ping的訪問被拒絕了。

這是因爲我們新添加的規則拒絕了所有的入站流量,當我的本地流量到達網絡ACL時,網絡ACL規則開始評估流量,新添加的這個規則的編號爲90,目前優先級最高,規則內容爲禁止所有入站流量,我們剛剛訪問流量匹配了這條規則,所以被網絡ACL禁止訪問,有規則匹配後,就不會再繼續向下匹配其他規則,所以我們的入站流量被拒絕了。
在這裏插入圖片描述

我們繼續做測試,我們編輯下入站規則,把之前添加的規則編號由90修改爲110。然後,現在允許規則的優先級高於拒絕規則的優先級,我們繼續PING下EC2,可以看到我們的PING又被放行了。

接下來我們看下另一個案例,默認網絡ACL規則內容爲放行所有入站和出站的流量,我們前面講過,如果我們想要拒絕某個特定的來源IP對實例的訪問,這個需求通過安全組是做不到的,需要使用網絡ACL。

看下我現在本地出口的ip,爲114.245.93.139,假設我們現在要配置網絡ACL規則,拒絕我這個IP訪問EC2,但是允許除此IP外的其他訪問流量,我們來配置下網絡ACL。

編輯入站規則,我們將之前測試添加的規則刪除,然後新添加一個規則,配置編號爲90使其優先級當前最高,然後所有流量,所有協議,全部端口,將 “源” 配置爲我的出口IP,然後選擇拒絕,保存。

我們看下現在的規則,如果有來源IP爲114.245.93.139的流量到達網絡ACL,編號90的規則就會匹配流量,規則拒絕此來源IP的訪問並不會向後在匹配其他規則;

如果來源不是此特定IP的其他的流量,那麼就不會匹配編號90的規則,會繼續匹配後面的規則,也就是編號100的規則,規則內容是放行所有入站流量,所以最終入站請求會被放行。這樣就實現了上述案例的需求,禁止某個特定IP的入站訪問,但是允許其他除此IP外訪問的需求。
在這裏插入圖片描述

好的,我們在回到前面的PPT,默認網絡ACL的內容爲允許所有入站和出站的流量,但如果您自己創建了自定義網絡ACL,默認的情況下,自定義的網絡ACL是拒絕所有入站和出站流量的,直到您添加相應的規則,我們來測試下是不是這樣

在這裏插入圖片描述
我們創建一個自定義的網絡ACL,然後看下出站、入站的規則,可以看到創建的自定義的網絡ACL是拒絕所有入站和出站流量的,需要根據需求自行添加相應允許規則。

很多同學在實際使用網絡ACL的時候都忽視了這一點,導致無法訪問EC2,所以這裏單獨提出來講一下。

好的,以上就是我們今天的視頻課程內容,希望能夠幫助大家更深入的理解網絡ACL。

在這裏插入圖片描述
希望此係列教程能爲您通過 AWS解決方案架構師認證 Professional 認證考試帶來幫助,如您有任何疑問

關注公衆號:AWS愛好者(iloveaws)
文 | 沉默惡魔(禁止轉載,轉載請先經過作者同意)
網站:www.iloveaws.cn
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章