ACL存取控制(Access Control List)
在 Cisco 的 switch / Router 裡,都能針對來往傳輸的資料進行過濾的動作,這個過濾稱作為存取控制(Access Control List, ACL),當然現今的大部分具網管功能的網路設備,也都有ACL的控制功能。
官方說明:
Cisco provides basic traffic filtering capabilities with access control lists (also referred to as access lists). Access lists can be configured for all routed network protocols (IP, AppleTalk, and so on.) to filter those protocols' packets as the packets pass through a router.
ACL運作模式
(A)防禦主機與屏蔽路由器
防火牆最普遍的建構是架設封包過濾器,但它過濾的條件應該有許多條件。最簡單的建置是將所需的過濾條件歸納為『存取控制清單』(Access Control List, ACL),Cisco 路由器大多具有此功能,如果管理得妥當,也是一個很理想的防火牆功能。但路由器 ACL 的過濾條件並沒有專屬防火牆那麼強,大多僅能過濾 IP 位址與 TCP/UDP 埠口為主,並無法辨識訊息型號,譬如TCP 的 SYN 與 ACK 旗標,或 ICMP 訊息等等。雖然利用 ACL 製作的防火牆的功能較低,但是學習防火牆的入門功課,本章就先以 ACL 管理方式,來介紹防火牆的架設方法。
其實,ACL 控制封包進出並非只有路由器,一般伺服主機也大多具有,如果依照 ACL 所安裝的裝置,可區分為:
- 防禦主機: 伺服主機具有 ACL 功能,可過濾封包是否可以存取主機內所安裝的伺服器系統。
- 屏蔽路由器:路由器具有 ACL 功能,可過濾封包是否允許通過路由器,進入或出去內部網路。
(B) ACL 運作模式
當封包進入路由器時,會依照 ACL 表內過濾條件逐條列出,比對順序如下:
(1) 由上而下依序比對每筆條件,一直到條件符合為止;
(2) 比對中,如符合條件是『允許』(permit) 表示允許該封包通過,並停止往下比對;
(3) 比對中,如符合條件是『禁止』(deny),表示禁止該封包通過,並停止往下比對;
(4) 如果都沒有符合,但最後一筆是『 Permit Any』,則該封包允許通過;
(5) 如果都沒有符合,但最後一筆是『Deny Any』,則該封包不允許通過。
ACL條件與種類
(A) ACL 從嚴或從寬條件敘述
每一個封包進入或出去都會逐條比對存取控制清單,但以上皆非時,最後一筆條件有兩種處理方式:
(1) 從嚴條件:最後一筆如是 Deny any,表示以上條件都不符合,則拒絕通過。
(2) 從寬條件:最後一筆如是 Permit any,表示以上條件都不符合,則允許通過。
(B) Cisco 路由器 ACL 種類
Cisco 路由器的存取控制清單有三種:
(1) 『標準存取控制清單』( Standard ACL):僅檢視 IP 封包中的來源位址(source address) ,來決定封包是否允許通過,編號由 1~99, 1300~1999。
(2) 『延伸式存取清單』(Extended ACL):可比對 IP 封包中的 IP 標頭與上一層(TCP、UDP、、)標頭內的多個欄位,屬於比較進階細膩的過濾條件。編號由 100 ~ 199、2000 ~ 2699。
(3) 『名稱式存取清單』(Named ACL):是屬於前面兩種存取清單,但僅以名稱命名,也許這樣比較能了解該清單目的與功能。
(C) 存取條件的方向性
每筆存取條件都有其方向性:
(1) 『進入』(Inbound): 如存取清單被宣告成 Inbound,表示是針對進入裝置(路由器)封包的條件過濾。
(2) 『出去』(Outbound):如存取清單被應用於 Outbound,表示是針對離開裝置(路由器)封包的過濾條件。
ACL語法
(A) Standard ACL 語法
每筆 ACL 都有編號,由 1 ~ #,其中 1 ~ 99 保留給 Standard ACL 使用,每一個編號表示可以多筆 ACL 紀錄,宣告語法如下:
# access-list 1~99 deny | permit host IP_address wildmask
譬如,在路由器的 fa0/1 介面哩,產生一個『進入』(in) 封包的過濾條件是:
- 禁止 192.168.1.1 主機通過、
- 允許 192.168.10.1 主機通過、
- 允許 192.168.2.0/24 網路內主機通過、
- 以上皆非時,進入所有封包通過
吾人將條件歸納於 ACL 10 表內,範例如下:
範例 |
功能 |
# access-list 10 deny host 192.168.11.1 |
禁止 192.168.11.1 主機通過 |
# access-list 10 permit host 192.168.10.1 |
允許 192.168.10.1 通過 |
# access-list 10 permit host 192.168.2.0 0.0.0.255 |
允許 192.168.2.0/24 主機通過 |
# access-list 10 deny host any |
禁止任何主機通過(從嚴條件) |
#int fa0/1 #ip access-group 10 in |
在 fa0/1 中啟動 IN 方向的 ACL 10 過濾條件 |
(B) Extended ACL 語法
Extended ACL 過濾條件包含有 IP 封包標頭外,還可增加 TCP、UDP 或 ICMP 標頭訊息,語法如下:
# access-list 100~199 deny|permit ip|TCP|UDP|ICMP host
語法順序如下:
- List-number (100 ~ 199)、
- 阻擋或通過 (Deny 或 Permit)、
- 封包標頭( IP、TCP、UDP、ICMP、、、)、
- 標頭內欄位內容,或服務名稱。
範例如下:
範例 |
功能 |
# access-list 101 permit ip any any |
允許任何主機通過 |
# access-list 101 deny ip 192.168.3.4 192.168.4.5 |
阻擋 192.168.3.4 主機存取192.168.4.5。 |
# access-list 101 deny 192.168.2.0 0.0.0.255 |
阻擋 192.168.2.0/24 主機 |
# access-list 101 permit tcp host 192.168.3.4 host 192.168.4.5 eq 80 |
允許192.168.2.4 存取 192.168.4.5 主機的 tcp 埠口 80。 |
#int fa0/1 #ip access-group 101 out |
在 fa0/1 中啟動 OUT 方向的 ACL 10 過濾條件 |
(C) Named ACL語法
Names ACL 過濾條件允許包含 IP、TCP、UDP 或 ICMP 標頭訊息,取一只 ACL 條件名稱,再加入各種條件敘述,語法如下:
# access-list extended ACL_Name
範例如下:
範例 |
功能 |
# ip access-list extended Server-ACL |
|
# permit tcp host 192.168.12.50 any eq WWW |
允許 192.168.12.50 存取 www |
# permit tcp host 192.168.12.51 any eq ftp |
允許 192.168.12.51 存取 ftp |
# deny ip any any |
阻擋所有 |
#int fa0/1 #ip access-group Server-ACL out |
嵌入埠口 |
留言列表