第 9 章 安全基礎:ACL、埠安全與存取控制

ACL:存取控制清單

CCNA 最重要的實作題。規則只有幾條,但每一條都有陷阱。

18 分鐘


ACL(Access Control List)是一串由上而下比對的規則,用來允許或拒絕流量。它也被用在 NAT、路由過濾、QoS 分類等地方 —— 不只是防火牆功能。

三條鐵則

  1. 由上而下逐條比對,一符合就停止。後面的規則再也不會被檢查。
  2. 清單最後有一條看不見的 `deny any`。所以 ACL 裡至少要有一條 permit,否則全擋。
  3. 一個介面、一個方向、一個協定,只能套一個 ACL

標準 vs 延伸

類型編號範圍能比對什麼該放在哪
標準 Standard1–99, 1300–1999只有來源 IP靠近目的地
延伸 Extended100–199, 2000–2699來源、目的、協定、埠號靠近來源
標準 ACL
! 編號式
R1(config)# access-list 10 deny 192.168.1.100
R1(config)# access-list 10 permit 192.168.1.0 0.0.0.255

! 命名式(推薦:可讀性好,而且能單獨刪某一行)
R1(config)# ip access-list standard BLOCK_HOST
R1(config-std-nacl)# 10 deny host 192.168.1.100
R1(config-std-nacl)# 20 permit 192.168.1.0 0.0.0.255

! 套用到介面
R1(config)# interface gi0/1
R1(config-if)# ip access-group BLOCK_HOST out
延伸 ACL —— 注意參數順序
R1(config)# ip access-list extended WEB_ONLY

! 語法:permit 協定 來源 來源萬用 目的 目的萬用 [運算子 埠]
R1(config-ext-nacl)# permit tcp 192.168.1.0 0.0.0.255 any eq 80
R1(config-ext-nacl)# permit tcp 192.168.1.0 0.0.0.255 any eq 443
R1(config-ext-nacl)# permit udp 192.168.1.0 0.0.0.255 any eq 53
R1(config-ext-nacl)# deny ip 192.168.1.0 0.0.0.255 10.0.0.0 0.255.255.255
R1(config-ext-nacl)# permit ip any any

R1(config)# interface gi0/0
R1(config-if)# ip access-group WEB_ONLY in

簡寫關鍵字

寫法等同於意思
host 192.168.1.1192.168.1.1 0.0.0.0單一台主機
any0.0.0.0 255.255.255.255所有位址
eq 80等於
gt 1023大於
range 20 21範圍
established只允許已建立連線的回覆封包(ACK/RST 已設)

順序陷阱示範

✗ 錯誤的順序
  10 permit ip 192.168.1.0 0.0.0.255 any
  20 deny   ip host 192.168.1.100 any
  → .100 的流量在第 10 行就被 permit 了
     第 20 行永遠不會被執行 —— 沒有任何效果

✓ 正確的順序
  10 deny   ip host 192.168.1.100 any
  20 permit ip 192.168.1.0 0.0.0.255 any
  → 先擋掉特例,再放行其他人

原則:具體的規則放前面,籠統的規則放後面
同樣兩條規則,順序不同結果完全相反
驗證與除錯
! 看 ACL 內容與命中次數(matches 是排錯神器)
R1# show access-lists
Extended IP access list WEB_ONLY
    10 permit tcp 192.168.1.0 0.0.0.255 any eq www (243 matches)
    20 permit tcp 192.168.1.0 0.0.0.255 any eq 443 (1502 matches)
    30 deny ip 192.168.1.0 0.0.0.255 10.0.0.0 0.255.255.255 (0 matches)

! 看哪個介面套了哪個 ACL
R1# show ip interface gi0/0 | include access list
  Outgoing access list is not set
  Inbound  access list is WEB_ONLY

立即測驗這一節(5 題)