本文將教大家如何設定Cisco路由器來當作網路防火牆,從基本概念說起,講解如何設計防火牆規則,並透過範例來說明如何設定規則以達成防火牆的功效。
假設中間是Cisco路由器設備,左右各接上一個介面連到不同的網段,只要是從目前這台路由器設備流出去的網路封包都稱為「Outbound」,如同圖1內的箭頭所示。相反地,如果是流向路由器設備方向的網路封包,則為「Inbound」,如圖2所示。
|
▲圖2 Inbound示意圖。 |
但是,到底Cisco路由器在什麼時候會去套用這些存取控制清單呢?假設有一個Cisco路由器設備沒有設定存取控制清單,當拿到一個網路封包時,會做怎樣的處理,其流程如圖3所示。
|
▲圖3 沒有使用存取控制清單的運作流程。 |
沒有使用存取控制清單的流程看起來其實並不複雜,接下來看看所謂的Outbound存取控制清單的運作流程,如圖4所示。
|
▲圖4 Outbound存取控制清單的運作流程。 |
以上就是Outbound存取控制清單的運作流程,看起來可能有點複雜,但其實不會,Outbound存取控制清單最主要的重點在於「存取控制清單的規則是當網路封包在準備要由Outbound介面出去的時候
才做」。
相反地,Inbound存取控制清單就是在Inbound介面取得網路封包時,先套用存取控制清單以便決定是否要做進一步的動作。其中最大的差異就是動作的順序性,接著說明Inbound存取控制清單的運作流程,如圖5所示。
|
▲圖5 Inbound存取控制清單的運作流程。 |
由圖5的流程圖可以看出,Inbound存取控制清單的運作方式和Outbound存取控制清單的運作方式只在於「套用存取控制清單」和「查詢路由表格」的順序差異。
不過,若要嚴格的比較的話,Inbound存取控制清單可能可以擁有比較好的效能,因為如果先套用存取控制清單,再決定是否要查詢路由表格的話,就能夠大幅縮短路由表格查詢的時間。
除此之外,符合規則的方式其實也與防火牆類似,一般存取控制清單當然都會有許多規則,而每一個網路流量也可能符合存取控制清單中一條以上的規則,但是在決定使用哪一條規則時,是由第一條規則開始嘗試,當找到第一條符合的規則時,就直接套用其符合的規則,也就是「First Match」的精神。
換句話說,假設存取控制清單中第一條規則是「允許TCP協定23埠的網路封包」,但是後面的規則可能是「拒絕TCP協定23埠的網路封包」,則因為在套用規則時會先找到一條規則,所以最終結果是「允許TCP協定23埠的網路封包」。如果存取控制清單中都找不到符合的規則,則預設就會拒絕這個網路封包。
字元遮罩的使用方式
除了了解上面這些知識外,在存取控制清單中,位址的部分可以使用字元遮罩來指定一個以上的位址,這也是在設定之前必須要先了解的。
不過,在存取控制清單中的字元遮罩,位元值為0代表符合(Match)目前這個位元值所對應的位址值,而位元值為1則代表忽略(Ignore)。這點與子網路遮罩剛好是相反的,在子網路遮罩中,位元值為0代表忽略(Ignore),而位元值為1則代表要符合(Match),這點要特別留意。
舉例來說,如果存取控制清單中規則的位址是「192.168.10.55 0.0.0.0」,代表一定要完整符合192.168.10.55這樣的位址才能套用這個規則,因為這裡的字元遮罩是0.0.0.0,表示要檢查並且符合位址中每一個位元值。
所以,如果想要將存取控制清單的某個規則套用到192.168.0.1?192.168.0.255,代表位址中最後一個位元組可以完全忽略,所以存取控制清單規則中的位址可以是「192.168.0.0 0.0.0.255」。
設定存取控制清單
設定存取控制清單的指令其實並不是很複雜,以下就來詳細介紹。設定存取控制清單大致上分為以下兩個步驟。
步驟一:準備存取控制規則
顧名思義,這個步驟就是先把存取控制清單內的規則準備好,其設定指令的格式如下所示:
一開始的access-list是保留字,接著的number指的是存取控制規則的識別碼,由使用者自行指定。而permit和deny是保留字,兩者選擇一個,代表若符合這筆規則時要如何處置相對應的網路封包。最後的test condition,則是代表所要符合的條件是什麼,這裡可以指定多個符合條件。
步驟二:在介面上套用存取控制規則
接下來必須選擇所要套用的介面,然後在介面上決定要套用哪一條已經設定好的存取控制規則。由於存取控制規則是要套用在介面上,所以這樣的設定動作是要先進入某個介面的Interface Mode。