如果您喜歡這裡的內容,記得分享到您的Facebook和Twitter上面所有的朋友們吧!

2009年4月7日 星期二

使用存取控制清單 (Access Control List, ACL), 來限制 Internet 進來的連線 (CNA-04-004)

CCNA Exploration 4.0 第四學期上課檔案 (CNA-04-004), 使用存取控制清單 (Access Control List, ACL), 來限制 Internet 進來的連線.




這個例子我們必須使用 "延伸式ACL" (Extended ACL). 這是因為來自相同 IP 位址的封包, 有不同的權限: ICMP 可以過, 但是 TCP 的 port 23 TELNET 不能過.

至於ACL的內容, 我使用以下的方式給各位參考:


interface Serial0/0/0
 ip address 10.1.1.1 255.255.255.0
 ip access-group 100 in
 clock rate 64000
!
access-list 100 deny tcp any 192.168.0.0 0.0.255.255 eq telnet
access-list 100 permit ip any any

這個例子是套用在 "Serial0/0/0" 其實相同的 ACL 也可以只套用在 "FastEthernet0/0" 和 "FastEthernet0/1", 效果相同.
如果您喜歡這篇文章,不考慮試試Email訂閱嗎?


Related Posts with Thumbnails

25 則留言:

  1. 洪老師你好:
    跟你請教一個 ACL 的問題,我的配置如下:

    Router(config-std-nacl)#do sh access-list
    Standard IP access list ccna
    20 permit 3.3.3.3
    50 permit 1.1.1.1
    30 permit 1.1.1.0, wildcard bits 0.0.0.255
    40 permit 1.1.1.0, wildcard bits 0.0.0.127

    請問此條 ACL 執行的順序為 20==>50==>30==>40
    或是 20==>30==>40==>50

    這有點讓我confused..

    謝謝老師

    回覆刪除
  2. 好問題! 我自己試過結果是 "20==>50==>30==>40".

    IOS 對清單前面的 "序號" 似乎只做參考用, 還是以 "show access-list" 或是 "show run" 的排序結果為準. "序號" 只有在做 "插入" 或 "取代" 部分內容時有用.

    回覆刪除
  3. 洪老師,你好,久仰大名
    有一個問題想發問,可能很簡單,但我找相關的網路文章都沒有得到一個好的解答。
    請問關於ACL,如果上一位管理者己經設好了ACL,但因ISP有變,所以必須再新增一個網段到ACL 99 premet,但加了以後再出現在deny any any的下面,順序上是不是不會通,有辦法調整到deny any any的上面嗎,指令為何?還是只能no deny any any後再重設deny any any...請老師解惑。謝~~~

    回覆刪除
  4. 感謝您的鼓勵!

    有關 ACL 要插入新條件的方式, 因為原始設定是號碼式 ACL (ACL 99), 再不確定 IOS 版本的狀況下, 最保險的方式, 還是重新建立 ACL.

    新一點的 IOS 可以吧 "99" 當成一個名稱是 "99" 的 Named ACL 來用. 你可以用 "ip access-list standard 99" 進去編輯他. 你可以從 "show access-list" 看到 "deny any" 的行號是多少, 進去候用 "行號 條件" 的方式插入.

    例如:
    R0(config)#access-list 99 permit 1.1.1.1
    R0(config)#access-list 99 permit 2.2.2.2
    R0(config)#access-list 99 deny any
    R0(config)#do show access-list
    Standard IP access list 99
    10 permit 1.1.1.1
    20 permit 2.2.2.2
    30 deny any
    R0(config)#ip access-list standard 99
    R0(config-std-nacl)#25 permit 3.3.3.3
    R0(config-std-nacl)#do show access-list 99
    Standard IP access list 99
    10 permit 1.1.1.1
    20 permit 2.2.2.2
    25 permit 3.3.3.3
    30 deny any
    R0(config-std-nacl)#


    希望有幫助!

    回覆刪除
  5. 洪老師您好:
    我想請問一下,當我在ACL裡下了access-list 3 deny 10.17.32.0這個指令,後面沒有wildcard mask,那ACL會如何決定deny的範圍??謝謝。

    回覆刪除
  6. @匿名 == "access-list 3 deny host 10.17.32.0"
    == "access-list 3 deny 10.17.32.0 0.0.0.0"

    也就是說, 只有 "10.17.32.0/32" 這個 IP 位址會被 deny.

    回覆刪除
  7. 洪老師您好:
    不好意思再請問一下,我在ACL 3後面加上一條"access-list 3 permit any",然後在eigrp裡面加上了"distribute-list 3 out" 這個指令,我發現他deny的不只是10.17.32.0/32這個位址,而是整個路由都擋掉了。我想問的是他如何單單在"access-list 3 deny 10.17.32.0"這個指令取決要deny的範圍呢??謝謝。

    回覆刪除
  8. ACL 3 先 deny 再 permit any 的邏輯是正確的, 還是請將 show access-list 3 的結果貼出來呢? 我們可以從 hit count 看出distribute-list篩選時 deny 了幾次.

    如果很急, 建議改用 "ip prefix-list", 例如:

    ip prefix-list DENY-SOME deny 10.17.32.0/32
    ip prefix-list DENY-SOME deny (要濾掉的網段,/n記號)
    ...
    ip prefix-list DENY-SOME permit 0.0.0.0/0 le 32

    router eigrp #
    distribute-list prefix DENY-SOME out

    回覆刪除
  9. 洪老師您好:
    不會很急啦...只是在書上看到這種沒有wildcard mask的用法所以自己實驗了一下...

    三台router

    R1與R2間選用10.0.0.0/24
    R2與R3間選用10.17.32.0/24

    三台router都開啟eigrp 1
    network 10.0.0.0
    auto-summary

    R2有個ACL 3,裡面就只含deny 10.17.32.0與permit any
    然後在R2的eigrp裡下了"distribute-list 3 out"這指令
    R1就無法ping到R2與R3相接的兩個interface IP
    當然也ping不到10.17.32.0這個IP

    我發現到當下了"distribute-list 3 out"這指令之後
    R1原本透過eigrp學到有關10.17.32.0的路徑
    在路由表整條消失了

    而我在R2下了show access-list 3,輸出結果為
    Standard IP access list 3
    10 deny 10.17.32.0 (3 matches)
    20 permit any (2 matches)

    請問老師這邊3 matches 指的是??
    而我原本的問題則是access-list 3 deny 10.17.32.0
    這沒有wildcard mask的指令怎麼決定範圍....
    謝謝老師

    回覆刪除
  10. 依照您的場景來看, R1 本來也只有會有兩筆 EIGRP 的路由表: 10.0.0.0/8, 10.17.32.0/24, 經過 distribute-list 濾掉 10.17.32.0/24 後, 只剩下 10.0.0.0/8, 您的網路當然不會通!

    Distribute list 如果是 Standard ACL, 篩選條件是路由表的目的地網段位址, 不檢查 subnet mask. 所以以您的例子來看, 就是 "10.17.32.0" 這個 32 bits 數字. 如果是Extend ACL, Source 意義跟 Standard ACL一樣, 但是 Destination 變成是 Subnet Mask.

    這也是我建議改用 Prefix list 的原因之一, 因為 ACL 在這裡的用法跟一般封包過濾的習慣不一樣, 很容易誤解!

    回到您原來的問題, 如果要驗證 distribute list 功能, 您必須多產生幾個EIGRP路由資訊讓 distribute list 過濾, 才看得出效果. 最簡單的方法就是R3上面新增幾個 Loopback interface, 例如loop0: 10.1.1.1/24, loop1: 10.2.1.1/24 ... 過濾的效果馬上看得到!

    "Show access-list" 裡面看到的 "3 matches" 代表這一行比對符合過 "3" 次, 包括路由資訊筆數, 或是封包的個數, 的總和.

    希望有幫助!

    回覆刪除
  11. 不好意思,我想問個關於在6509上acl的問題
    就是我們acl新增的數量會很多很多~~~
    所以有段時間後會希望能調整~~
    所以得看counts的部份來確認那一筆acl是不是有在用再進行刪除
    但目前我發現acl在剛設定完時~~~能正常看得到counts的部份
    但一離開設定模式時只要是permit的部份就都不會再增加了
    但確定是生效的~~
    但我們不希望在acl後面加上log~~畢竟加上log後 preformance會明顯提高~~~
    故想請問老師有啥好建議?

    回覆刪除
  12. @匿名 您好!

    我找到這幾篇文章, 發現 "show ip access-list" 看不到 "permit" 數字是系統限制, 只要 ACL 項目是用硬體來處理, 就看不到.

    解法: 改用 "show tcam interface"

    希望有幫助!

    http://www.cisco.com/en/US/docs/switches/lan/catalyst6500/ios/12.2SXF/native/configuration/guide/acl.html#wp1033602

    "When you enter the show ip access-list command, the match count displayed does not include packets processed in hardware."


    http://www.cisco.com/en/US/docs/switches/lan/catalyst6500/ios/12.2SX/configuration/guide/acl.html

    "Hardware-supported counters for hardware-supported ACLs, displayed by the show tcam interface command (not supported in PFC3A mode). See this publication: http://www.cisco.com/en/US/docs/ios/interface/command/reference/ir_s6.html#show_tcam_interface"


    http://jonesncolotd.blogspot.com/2009/09/show-tcam-command-for-access-lists.html

    "The show tcam interface acl ip shows basically the old-school 'show access-list ' output with the matches I was looking for."

    回覆刪除
  13. 洪老師您好,目前公司的設備為3560G,而我想要做的ACL是by白名單的方式,也就是只允許特定IP通過,非允許IP清單則全部阻擋,請問該如何下手呢?再麻煩請老師解惑,感謝您:)

    回覆刪除
  14. @匿名 其實就跟一般的路由器設定方式差不多,如果您所允許的IP地址數目不到20個,最簡單的方法直接定義一個Standard ACL將所有允許的IP地址包含進來,再將它套用在所有routing網卡的inbound方向。

    另外因為是L3交換機處理ACL,注意硬體資源的使用狀況,和不要啟用ACL "log"功能,以免變成CPU直接處理封包,大幅拖慢速度。

    希望有幫助!

    回覆刪除
  15. 洪老師您好,有關CISCO的練習有不懂之處
    關於(CCNA4 練習5-6-1)
    "拒絕主機 10.1.10.5 存取主機 10.1.50.7。允許所有其它主機存取 10.1.50.7。在 B1 上使用 ACL 編號 115 設定 ACL。"
    是應該如何設定?
    是access-list 115 deny ip host 10.1.10.5 host 10.1.50.7 ?
    及access-list 115 permit ip any host 10.1.50.7 ?
    還是有其他寫法?對這不是很懂?
    還請老師協助 謝謝~

    回覆刪除
    回覆
    1. @匿名 正確!


      另外「CCNA4 練習5-6-1」這應該是您的學校所編的練習教材吧?

      刪除
    2. 多謝回覆,這是學校提供的練習沒錯

      因為設定下去後還是沒有完成比例,不知道哪裡出問題
      完整要求:
      拒絕主機 10.1.10.5 存取主機 10.1.50.7。允許所有其它主機存取 10.1.50.7。在 B1 上使用 ACL 編號 115 設定 ACL。

      使用標準 ACL 還是延伸 ACL?
      將 ACL 套用到哪個介面?
      將 ACL 套用於哪個方向?

      故在此詢問,謝謝

      刪除
    3. @匿名 您好!

      我從您練習題目的文字來檢查,您的ACL設計是正確的。也許,設計這個練習題的老師,可能還有其他的用意。例如,其他沒有提到的IP,有沒有要求要允許,還是不允許通過。

      另外,有跟同學討論過嗎? 或者是直接詢問原始出題目的那位老師,也許會比較快找到答案。

      希望這個回答對您有幫助!

      刪除
  16. 洪老師您好,

    小弟有問題還煩請您指導!

    access-list 10.37.32.38~80 to any 想要簡化是否可用以下指令

    access-list 1900 deny ip host 10.37.32.38 any
    access-list 1900 permit ip 10.37.32.38 0.0.0.7 any
    access-list 1900 permit ip 10.37.32.46 0.0.0.15 any
    access-list 1900 permit ip 10.37.32.61 0.0.0.20 any
    access-list 1900 permit ip host 10.37.32.80 any

    謝謝

    回覆刪除
    回覆
    1. +David Lu 我不確定您所指的原始需求,是不是要允許 10.37.32.38 ~ 80,連號的43個IP地址通過,其他的地址全部都封鎖呢?

      如果我猜對的話,您原本打算將這43個IP地址分成幾個8、16、32等的倍數,然後用包圍的方式,來涵蓋這43個地址。如果是這樣,那是一個好主意。

      但是您所舉的指令範例,有點小問題:例如第二行,Wildcard Mask 是 0.0.0.7,如果參照的IP地址是 10.37.32.38 會輸入不成功,必須要改成 10.37.32.32 0.0.0.7。Wildcard Mask 標示為"1"的位置,參照IP地址的相同位置必須是"0"。

      所以我這裡列出一個可能的方法:

      access-list 1900 permit ip host 10.37.32.38 any
      access-list 1900 permit ip host 10.37.32.39 any
      access-list 1900 permit ip 10.37.32.40 0.0.0.7 any
      access-list 1900 permit ip 10.37.32.48 0.0.0.15 any
      access-list 1900 permit ip 10.37.32.64 0.0.0.15 any
      access-list 1900 permit ip host 10.37.32.80 any

      希望有幫助!

      刪除
    2. 作者已經移除這則留言。

      刪除
    3. +David Lu 您的第二行的指令的確是正確的Wildcard Mask。

      可是,如果改成您這個版本,10.37.32.38, 10.37.32.40~45 這7個IP地址將會被封鎖。我不確定這是您要的結果嗎?

      刪除
  17. 網誌管理員已經移除這則留言。

    回覆刪除
  18. 洪老師我明白了~~非常謝謝您的指導 ^_^ 3Q3Q

    回覆刪除
  19. 只有 192.168.101.64 - 127/24 IP 位址可以存取 192.168.102.2 的網頁主機 (80),其他IP 位址不可存取192.168.102.2 的網頁主機(80)

    "其他IP位址不可存取"
    可否能把192.168.0.0
    用兩個255把後面全篩選掉??

    有嘗試過,但仍失敗。
    如果有空閒,麻煩老師提供相關建議。
    不好意思,打擾了。

    ====設定檔如下==========
    access-list 101 permit tcp 192.168.0.64 0.0.0.63 host 192.168.102.2 eq www
    access-list 101 deny tcp 192.168.0.0 0.0.255.255 host 192.168.102.2 eq www
    access-list 101 deny udp host 192.168.101.3 host 192.168.102.2 eq domain
    access-list 101 permit ip any any
    =======================
    需求:
    access-list 101 permit tcp 192.168.0.64 0.0.0.63 host 192.168.102.2 eq www
    access-list 101 deny tcp 192.168.0.0 0.0.255.255 host 192.168.102.2 eq www
    access-list 101 deny udp host 192.168.101.3 host 192.168.102.2 eq domain
    access-list 101 permit ip any any

    回覆刪除

小技巧:也可以 匿名 留言!

經典熱門文章