網路技術:配置擴充套件 ACL
ACL 資料包過濾
使用標準 ACL 就可以實現流量過濾功能,但是標準 ACL 的功能是有限的。首先標準 ACL 會將符合過濾規則的源 IP 地址的所有流量都篩出來,但是有時候並不希望過濾掉所有的流量,例如我們只是想限制某網路對 HTTP 服務的訪問時,標準 ACL 會將一切流量都過濾而非只過濾 HTTP。其次標準 ACL 只能在網路層進行過夜,也就是隻能對於資料包的源 IP 地址進行過濾,這就導致了最好將標準 ACL 配置在儘可能靠近目的地的介面。在實際的情況下往往目的是由目的地的管理員才有許可權配置,這就導致標準 ACL 的功能效果有限。
擴充套件 ACL
ACL 的放置
對於介面來說,無論是擴充套件 ACL 還是標準 ACL,配置的規則是一樣的——可以在每種協議、每個方向、每個介面上配置一個 ACL。
- 每種協議一個 ACL:控制介面的流量,必須為介面上啟用的每種協議定義一個 ACL。
- 每個方向一個 ACL:一個 ACL 一次只能在一個介面上控制一個方向的流量,若要同時控制入站和出站流量,則必須分別建立兩個 ACL。
- 每個介面一個 ACL:ACL 為一個介面控制流量,例如GigabitEthernet O/0。
對於整個網路來說,將擴充套件 ACL 放置在儘可能靠近需要過濾的流量源的位置上。這樣不需要的流量會在靠近源網路的位置遭到拒絕,而無需通過網路基礎設施。由於標準 ACL 不指定目的地址,所以其位置應該儘可能靠近目的地。除了 ACL 本身的功能決定了配置的方式,還有一些因素需要考慮:
- 網路管理員的控制範圍:ACL 的放置位置取決於網路管理員是否能夠同時控制源網路和目的網路。
- 相關網路的頻寬:在源上過濾不需要的流量,可以在流量消耗通往目的地的路徑上的頻寬之前阻止流量傳輸。
- 配置的難易程度:擴充套件 ACL 可以在每臺發出流量的路由器上使用,這通過在源上過濾流量而節省了頻寬,但需要在多臺路由器上建立擴充套件ACL。
配置標準 ACL 還是擴充套件 ACL,需要放置在什麼地方,需要具體問題具體分析。
擴充套件 ACL 建立語法
擴充套件 ACL 根據多種屬性過濾 IP 資料包:
- 協議型別;
- 源 IPv4 地址;
- 目的 IPv4 地址;
- 源 TCP 或 UDP 埠;
- 目的 TCP 或 UDP 埠;
- 用於進行精確控制的可選協議型別資訊。
擴充套件 ACL 建立語法如下,命令涉及到了很多的引數。
Router(config)# access-list access-list-number {deny | permit | remark description protocol {source source-wildcard) [operator port [port-number|acl-name]]{destination destination-wildcard) [operator port [port-number | acl-name]]
引數 | 說明 |
---|---|
access-list-number | 使用 100~199 和 2000~2699 之間的編號標識訪問列表 |
deny | 匹配條件時拒絕訪問 |
permit | 匹配條件時允許訪問 |
remark description | 用於輸入註釋,便於理解 |
protocol | Internet 協議的名稱或編號,常用關鍵字包括 icmp、ip、tcp 或 udp,要匹配所有 Internet 協議可以使用 ip 關鍵字 |
source | 指定了傳送資料包的網路號或主機號 |
source-wildcard | 指定了用於源地址的萬用字元位元 |
destination | 指定了接收資料包的網路號或主機號 |
destination-wildcard | 指定了用於目的地址的萬用字元位元 |
operator | (可選)比較源或目的埠,運算子包括 lt(小於)、gt(大於)、ea(等於)、neq(不等於)、range(包括的範圍) |
port | (可選)指定 TCP 或 UDP 埠的編號或名稱 |
established | (可選)僅用於 TCP 協議,指示已建立的連線 |
配置擴充套件 ACL
實驗拓撲
裝置 | 介面 | IP 地址 | 子網掩碼 | 預設閘道器 |
---|---|---|---|---|
R1 | G0/1 | 192.168.10.1 | 255.255.255.0 | 不適用 |
Lo0 | 192.168.20.1 | 255.255.255.0 | 不適用 | |
S0/0/0 (DCE) | 10.1.1.1 | 255.255.255.252 | 不適用 | |
ISP | S0/0/0 | 10.1.1.2 | 255.255.255.252 | 不適用 |
S0/0/1 (DCE) | 10.2.2.2 | 255.255.255.252 | 不適用 | |
G0/0 | 209.165.200.226 | 255.255.255.224 | 不適用 | |
G0/1 | 209.165.201.2 | 255.255.255.224 | 不適用 | |
R3 | G0/1 | 192.168.30.1 | 255.255.255.0 | 不適用 |
Lo0 | 192.168.40.1 | 255.255.255.0 | 不適用 | |
S0/0/1 | 10.2.2.1 | 255.255.255.252 | 不適用 | |
S1 | VLAN 1 | 192.168.10.11 | 255.255.255.0 | 192.168.10.1 |
S3 | VLAN 1 | 192.168.30.11 | 255.255.255.0 | 192.168.30.1 |
PC-A | NIC | 192.168.10.3 | 255.255.255.0 | 192.168.10.1 |
PC-C | NIC | 192.168.30.3 | 255.255.255.0 | 192.168.30.1 |
Server0 | NIC | 209.165.200.225 | 255.255.255.224 | 不適用 |
Server1 | NIC | 209.165.201.1 | 255.255.255.224 | 不適用 |
在實驗開始之前,需要先正確配置 PC、路由器和 WEB 伺服器,並配置路由使得裝置之間可以互通。
配置並驗證擴充套件編號 ACL
對於該網路配置的安全策略如下:
- 允許來自 192.168.10.0/24 網路的 Web 流量訪問任何網路。
- 允許 PC-A 通過 SSH 連線到 R3 序列介面。
- 允許 192.168.10.0/24 網路上的使用者訪問 192.168.20.0/24 網路。
- 允許來自 192.168.30.0/24 網路的 Web 流量通過 Web 介面訪問 R1 及 ISP 上的 209.165.200.224/27 網路。192.168.30.0/24 網路不能通過 Web 訪問其他任何網路。
擴充套件編號 ACL 的編號範圍是 100-199 和 2000-2699,在 R1 上配置 ACL,ACL 編號使用 100。
R1(config)# access-list 100 remark Allow Web & SSH Access
R1(config)# access-list 100 permit tcp any any eq 80
HTTP 協議是 80 埠,所以應該把目的埠設為 80。如果將其置於 G0/1 上可能會阻止網路
192.168.10.0/24 上的使用者訪問連線到 R1 的任何其他 LAN,如 192.168.20.0/24 網路。因此,您將把它放在 S0/0/0 的 out 方向上。
R1(config)# interface s0/0/0
R1(config-if)# ip access-group 100 out
接下來檢視 ACL 100 的配置情況,使用如下 2 個命令。
R1# show access-lists
R1# show ip interface s0/0/0
驗證 ACL 100,在 PC-A 上開啟 Web 瀏覽器訪問 http://209.165.200.225,此操作應該會成功。
在 PC-A 的命令提示符下對 10.2.2.1 執行 ping 操作,由於 192.168.10.0/24 網路只允許
web 流量退出,所以 ping 操作會失敗。
配置並驗證擴充套件命名 ACL
在 R3 上配置策略,將該 ACL 命名為“WEB-POLICY”。
R3(config)# ip access-list extended WEB-POLICY
R3(config-ext-nacl)# permit tcp 192.168.30.0 0.0.0.255 209.165.200.224 0.0.0.31 eq 80
將 ACL “WEB-POLICY” 應用到 S0/0/1 介面。
R3(config-ext-nacl)# interface S0/0/1
R3(config-if)# ip access-group WEB-POLICY out
接下來檢視 ACL “WEB-POLICY” 的配置情況,使用如下 2 個命令。
R3# show access-lists
R3# show ip interface s0/0/1
驗證 ACL “WEB-POLICY”,在 PC-C 上開啟 Web 瀏覽器訪問 http://209.165.200.225 (ISP 路由器),此操作應該會成功。
在 PC-C 上開啟到 http://209.165.201.1 的 Web 會話,此操作應該會失敗。
在 PC-C 命令提示符下對 PC-A 執行 ping 操作,因為 192.168.30.0/24網路只允許 web 流量退出,所以 Ping 操作失敗。
修改並驗證擴充套件 ACL
由於 R1 和 R3 都應用了 ACL,因此 R1 和 R3 上的 LAN 網路之間不允許 ping 或其他流量型別。為了允許 192.168.10.0/24 和 192.168.30.0/24 網路之間的所有流量,需要修改 R1 和 R3 上的 ACL。
在 R1 上進入全域性配置模式並修改 ACL。
R1(config)# ip access-list extended 100
R1(config-ext-nacl)# 20 permit ip 192.168.10.0 0.0.0.255 192.168.30.0 0.0.0.255
R1(config-ext-nacl)# end
使用 show access-lists 命令檢視 ACL 100。
R1# show access-lists
在 R3 上進入全域性配置模式並修改 ACL。
R3(config)# ip access-list extended WEB-POLICY
R3(config-ext-nacl)# 20 permit ip 192.168.30.0 0.0.0.255 192.168.10.0 0.0.0.255
R3(config-ext-nacl)# end
使用 show access-lists 命令檢視 ACL WEB-POLICY。
R3# show access-lists
在 PC-A 上對 PC-C 的 IP 地址執行 ping 操作,或者在 PC-C 上對 PC-A 的 IP 地址執行 ping 操作,現在都可以成功。
參考資料
《思科網路技術學院教程(第6版):擴充套件網路》,[加] Bob Vachon,[美] Allan Johnson 著,思科系統公司 譯,人民郵電出版社
《CCNA 學習指南(第 7 版)》,[美] Todd Lammle 著,袁國忠 徐巨集 譯,人民郵電出版社