當前位置:
首頁 > 最新 > CCNA-訪問控制列表

CCNA-訪問控制列表

Access Control List

訪問控制列表(ACL)是一種包過濾技術,是應用在路由器介面的指令列表。 ACL告訴路由器哪些數據報可以允許、哪些需要拒絕。至於是允許還是拒絕,可以由類似源地址、目的地址、埠號等條件來作過濾決定。

ACL可以用來:限制網路流量、提高網路性能,同時ACL也是網路訪問控制的基本安全手段。

需要把ACL應用到介面上,而且還要定義過濾的方向:

1、 inbound ACL:先路由,再處理

2、 outbound ACL:先處理,再路由

訪問控制列表分為標準訪問控制列表(編號為1到99)和擴展訪問控制列表(編號為100到199)兩類。

1、標準訪問列表(standard access lists):只使用源IP地址來做過濾決定。標準訪問控制列表檢查數據包的源地址,從而允許或拒絕基於網路、子網或主機的IP地址的所有通信流量通過路由器的出口。

2、擴展訪問列表(extended access lists):使用源IP地址和目標IP地址,第三層的協議欄位,第四層的埠號來做過濾決定。擴展訪問控制列表更具有靈活性和可擴充性,即可以對同一地址允許使用某些協議通信流量通過,而拒絕使用其他協議的流量通過。

3、命名訪問控制列表(named access lists):命名訪問控制列表使用字母或數字組合的字元串來代替數字編號。使用命名訪問控制列表可以用來刪除某一條特定的條目,便於修改。在使用命名訪問控制列表時,要求路由器的IOS版本在11.2以上。使用ip access-list命令來創建命名訪問控制列表。

設置ACL的規則

1、對於每個介面、每個方向、每種協議,只能設置1個ACL。

2、按ACL語句的順序,先比較第一行,再比較第二行……直到最後一行。找到一條符合條件的語句以後,剩餘的語句就不再繼續執行。

例如,要求禁止192.168.0.0/24網路中的192.168.0.32/27子網通過。

如果ACL這樣配置

Router(config)#access-list 1 permit 192.168.0.0 0.0.0.255

Router(config)#access-list 1 deny 192.168.0.32 0.0.0.31

當路由器收到源地址為192.168.0.32網段的數據包時,會發現該數據包屬於192.168.0.0網段,按訪問控制列表的順序執行,結果該數據包將會被允許通過。

為解決這個問題,組織好ACL的順序,條件嚴格的放在ACL的頂部。

將兩條語句的順序調換。

3、不能從ACL中去除一行,這將刪除整個ACL,命名訪問控制列表(named access lists)例外。

如上例,發現語句順序有誤,需要調整,若刪除其中某一條,將會刪除整個ACL。

4、新的語句只能加在現有語句的最後。如果必須要修改,只有先刪除現有的訪問控制列表,再創建一個新的訪問控制列表。

5、默認ACL結尾語句是deny any,所以在ACL里至少要有一條permit語句。

如果訪問控制列表的語句都是deny,那麼加上最後隱含的deny any,該介面將會拒絕所有流經該介面的數據。

6、創建ACL後要應用在需要過濾的介面上,並指明方向。

7、 ACL是用於過濾經過路由器的數據包,它並不會過濾路由器本身所產生的數據包。

如圖所示的網路中,若要求過濾來自10.0.0.0/8網路中所有的數據包。

就不能把ACL放在RA的S1介面的in方向或者RA的S0介面的out方向,而只能放在RB的S0介面的in方向。

因為RA的S1介面IP地址也是屬於10.0.0.0/8網路, RA不能過濾自己介面所產生的數據包。

8、把標準ACL放置在儘可能靠近目標的介面,把擴展ACL放置在儘可能靠近源的介面。

通配符掩碼

通配符掩碼(Wildcast Mask)

通配符掩碼是一個32比特位的數字字元串。通配符掩碼與子網掩碼工作原理是不同的。在IP子網掩碼中,數字1和0用來決定是網路、子網,還是相應的主機的IP地址。在通配符掩碼位中, 0表示「檢查相應的位,並且需要匹配」, 1表示「不檢查相應的位,不需要匹配」。如表示172.16.0.0這個網段,使用通配符掩碼應為0.0.255.255。通配符掩碼中,用255.255.255.255表示所有IP地址,可以用any代替,因為全為1說明所有32位都不檢查; 0.0.0.0則表示所有32位都要進行匹配,這樣只能表示一個IP地址,可以用host表示。

有些教材中介紹說通配符掩碼就是反掩碼=255.255.255.255 – 子網掩碼。儘管通配符掩碼有時候看起來很象反掩碼,但它們的作用是不一樣的。

如要允許172.16.16.0/20網段:

若收到數據包地址為172.16.15.1

ACL將從前向後逐位檢查,到第20位時發現與設置的規則不匹配:預設的ACL將允許第20位為1的數據包,但該數據包為1,不屬於該ACL語句所允許的範圍。

配置標準訪問列表

配置標準訪問列表

Router(config)#access-list access-list-number deny|permit source-address source-wildcard

access-list-number:取值範圍1~99

deny|permit:拒絕或允許匹配ACL的數據包

source-address:某一個或某一段源地址

source-wildcard:通配符掩碼

應用訪問列表到介面

Router(config-if)#ip access-group access-list-number in|out

In:通過介面進入路由器的報文

Out:通過介面離開路由器的報文

配置標準的訪問控制列表

實驗要求:禁止hostA訪問RA的E0

RA(config)#access-list 1 deny 10.0.0.2 0.0.0.0

RA(config)#access-list 1 permit any

RA(config)#interface ethernet 0

RA(config-if)#ip access-group 1 in

在HostA上ping 測試。

在HostA上修改IP地址,如10.0.0.3,再測試

show access-list:顯示路由器上配置的所有的ACL信息

show access-list [number]:顯示具體第幾條編號ACL信息

RA#show ip access-lists 1

Standard IP access list 1

deny 10.0.0.2, wildcard bits 0.0.0.0 check=64

permit any (64 matches) //表示有64個匹配條件的數據包

RA#clear access-list counters //清空計數器

show ip interface:顯示介面的信息和配置的ACL信息。

show ip interface [埠號]:顯示某介面的信息和配置的ACL信息。

RA#show ip interface ethernet 0

Outgoing access list is not set

Inbound access list is 1

配置擴展訪問列表

配置擴展訪問列表

Router(config)#access-list access-list-number permit|deny protocol

source-address source-wildcard source-port destinaiton address

destination-wildcard destination-port

access-list-number:編號範圍為100~199。

Protocol:需要被過濾的協議的類型,如IP、 TCP、 UDP、 ICMP、EIGRP等。

port:埠號,可以是eq(等於)、 gt(大於)、 lt(小於)、 neq(不等於)、 range(範圍)等。

配置擴展的訪問控制列表

實驗要求:允許HostA遠程登錄RA,但是不可PING

RA(config)#access-list 100 deny icmp host 10.0.0.2 host 10.0.0.1 echo

RA(config)#access-list 100 permit tcp host 10.0.0.2 host 10.0.0.1 eq 23

RA(config)#access-list 100 permit ip any any

RA(config)#interface ethernet 0

RA(config-if)#ip access-group 100 in

在HostA上分別用ping和telnet目標10.0.0.1測試。

在HostA上修改IP地址,如10.0.0.3,再測試。

命名IP訪問列表

命名IP訪問列表通過一個名稱而不是一個編號來引用的。

命名的訪問列表可用於標準的和擴展的訪問表中。

名稱的使用區分大小,並且必須以字母開頭,可以包含字母、數字和字元。

名稱的最大長度為100個字元。

名字能更直觀地反映出訪問列表完成的功能。

命名訪問列表突破了標準和擴展訪問列表的數目限制,能夠定義更多的訪問列表。

命名IP訪問列表允許刪除單獨某條語句,而編號訪問列表將刪除整個訪問列表。

單個路由器上命名訪問列表的名稱必須是唯一的,不同路由器上的命名訪問列表名稱可以相同。

命名的訪問控制列表

實驗要求:僅允許HostA遠程登錄

RA(config)#ip access-list standard telnet

RA(config-std-nacl)#permit host 10.0.0.2

RA(config-std-nacl)#deny any

RA(config)#line vty 0 4

RA(config-line)#access-class telnet in

分別用ping和telnet測試。

在HostA上修改IP地址,如10.0.0.3,再測試。

基於時間的訪問控制

從IOS 12.0開始, Cisco路由器新增加了一種基於時間的訪問控制,可以根據一天中不同時間或/和根據一周中的不同日期控制網路數據包的轉發。

這種基於時間的訪問列表在原來標準訪問列表和擴展訪問列表中加入時間範圍來更合理有效地控制網路。它先定義一個時間範圍,然後在原來的各種訪問列表的基礎上應用它,對於編號訪問表和名稱訪問表均適用。

實現基於時間的訪問表需要兩個步驟:

第一步是定義一個時間範圍;

第二步是在訪問列表中用time-range引用時間範圍。

可以用「time-range」 來指定時間範圍的名稱,然後用「absolute」或者一個或多個 「periodic」 來具體定義時間範圍,命令格式為:

time-range time-range-name absolute [start time date] [end time date]

periodic days-of-the week hh:mm to [days-of-the week] hh:mm

time-range:用來定義時間範圍

time-range-name:時間範圍的名稱,用來標識時間範圍,以便在後面的訪問列表中引用一個時間範圍只能有一個absolute語句,但可以有幾條periodic語句。

absolute:用來指定絕對時間範圍,後面緊跟start和end兩個關鍵字,以24小時制和「hh: mm」表示,其格式為「小時:分鐘」,日期按照「日/月/年」形式表示。這兩個關鍵字也可以都省略。如果省略start及其後面的時間,表示與之相關聯的permit或deny語句立即生效,並一直作用到end時間為止; 若省略end及其後面的時間,表示與之相聯繫的permit或deny語句在start時間開始生效,並且永遠發生作用。

定義絕對時間:

absolute [start start-time start-date] [end end-time end-date]

periodic:主要以星期幾為參數來定義時間範圍,如Monday、Tuesday、 Wednesday、 Thursday、 Friday、 Saturday、 Sunday中的一個或者幾個的組合,也可以是daily(每天)、 weekday(周一到周五)或者weekend(周末,周六和周日)。

定義周期、重複使用的時間範圍

periodic days-of-the-week hh:mm to days-of -the-week hh:mm

如果要表示每天早8點到晚6點開始起作用,可以用這樣的語句:

absolute start 8:00 end 18:00

比如表示每周一到周五的早9點到晚10點半:

periodic weekday 9:00 to 22:00

基於時間的訪問控制列表

實驗要求:允許內網主機在2007年1月1日到2007年12月31日的每個工作日中午12:00到14:00上網瀏覽

RA(config)#access-list 100 permit tcp 10.0.0.0 0.255.255.255 any eq 80

time-range http

RA(config)#time-range http

RA(config-time-range)#asbolute start 1 Jan 2007 end 31 December 2007

RA(config-time-range)#periodic weekdays 12:00 to 14:00

RA(config)#interface ethernet 0

RA(config-if)#ip access-group 100 in

修改路由器的時間,查看訪問控制列表的狀態: Active/Inactive。

防火牆

防火牆

防火牆是存在於用戶和外部世界之間,用於保護內部網路免受外部入侵攻擊的一種計算機或者網路設備。

TCP三次握手

TCP三次握手(Three-way Handshake)

1、客戶端發送一個包含SYN標誌的TCP報文給伺服器端;

2、伺服器在收到客戶端的SYN報文後,返回一個SYN+ACK的報文,表示客戶端的請求被接受;

3、客戶端返回一個ACK確認給伺服器,一個TCP連接完成。

半連接:收到SYN包而還未收到ACK包時的連接狀態稱為半連接,即尚未完全完成三次握手的TCP連接。

半連接隊列:在三次握手協議中,伺服器維護一個半連接隊列,該隊列為每個客戶端的SYN包(SYN=i )開設一個條目,該條目表明伺服器已收到SYN包, 並向客戶發出確認,正在等待客戶的確認包。這些條目所標識的連接在伺服器處於SYN_ RECV狀態,當伺服器收到客戶的確認包時,刪除該條目,伺服器進入ESTABLISHED狀態。

Backlog參數:表示半連接隊列的最大容納數目。

SYN-ACK重傳次數:伺服器發送完SYN-ACK包,如果未收到客戶確認,伺服器進行重傳,如果等待一段時間仍未收到客戶確認包,將再次重傳,如果重傳次數超過系統規定的最大重傳次數,系統將該連接信息從半連接隊列中刪除。每次重傳等待的時間不一定相同。

半連接存活時間:是指半連接隊列的條目存活的最長時間,也即服務從收到SYN包到確認這個報文無效的最長時間,該時間值是所有重傳請求包的最長等待時間總和。有時也稱半連接存活時間為Timeout時間、SYN_RECV存活時間。

上面三個參數對系統的TCP連接狀況有很大影響。

SYN泛洪

在攻擊事件中, SYN泛洪攻擊是最常見又最容易被利用的一種DoS攻擊手法。

SYN泛洪攻擊屬於DoS攻擊的一種,它利用TCP協議缺陷,通過發送大量的半連接請求,耗費CPU和內存資源。 SYN攻擊除了能影響主機外,還可以危害路由器、防火牆等網路系統,事實上SYN攻擊並不管目標是什麼系統,只要這些系統打開TCP服務就可以實施。配合IP欺騙, SYN攻擊能達到很好的效果。通常,客戶端在短時間內偽造大量不存在的IP地址,向伺服器不斷地發送SYN包,伺服器回復確認包,並等待客戶的確認,由於源地址是不存在的,伺服器需要不斷的重發直至超時,這些偽造的SYN包將長時間佔用未連接隊列,正常的SYN 請求被丟棄,目標系統運行緩慢,嚴重者引起網路堵塞甚至系統癱瘓。

TCP攔截

在TCP連接請求到達目標主機之前, TCP攔截通過攔截和驗證來阻止這種攻擊。 TCP攔截可以在攔截和監視兩種模式下工作。

在攔截模式下,路由器攔截到達的TCP SYN請求,同時代表伺服器建立與客戶機的連接,如果連接成功,則代表客戶機建立與伺服器的連接,並將兩個連接進行透明合併。在整個連接期間,路由器會一直攔截和發送數據包。對於非法的連接請求,路由器提供更為嚴格的半連接(half-open)超時限制,以防止自身的資源被SYN攻擊耗盡。

在監視模式下,路由器被動地觀察流經路由器的連接請求,如果連接超過了所配置的建立時間,路由器就會關閉此連接。

TCP攔截的配置

開啟TCP攔截

ip tcp intercept list access-list-number

設置TCP攔截模式

ip tcp intercept mode intercept(攔截模式) | watch (監視模式)

配置路由器等待時間

ip tcp intercept watch-timeout seconds(等待時間,單位為秒)

配置刪除TCP半連接的閥值

ip tcp intercept max-incomplete high number

Number:路由器開始刪除連接之前,能夠存在的最大半連接數

ip tcp inercept max-incomplete low number

Number:路由器停止刪除連接之前,能夠存在的最大半連接數

ip tcp intercept one-minute high number

Number:路由器開始刪除連接之前,每分鐘內能存在的最大半連接數目

ip tcp intercept one-minute low number

Number:路由器停止刪除連接之前,每分鐘內能存在的最大半連接數目

設置路由器刪除半連接的方式

ip tcp intercept drop-mode oldest|random

oldest:刪除建立時間最早的連接

random:隨機刪除已經建立的連接

查看TCP攔截信息

show tcp intercept connections

show tcp intercept statistics

Web伺服器地址為10.0.0.1,配置路由器進行TCP攔截,以保護Web伺服器不受SYN洪水攻擊。

要求採用攔截和監視兩種模式分別配置。

在攔截模式下,設置最大半連接數的高、低值分別為500和300;每分鐘保持連接數的高、低值分別為: 500和300,刪除連接的方式採用預設值。

在監視模式下,設置路由器等待時間為20秒。

攔截模式

router(config)#access-list 101 permit tcp any host 10.0.0.1

router(config)# ip tcp intercept mode intercept

router(config)# ip tcp intercept max-incomplete high 500

router(config)# ip tcp intercept max-incomplete low 300

router(config)# ip tcp intercept one-minute high 500

router(config)# ip tcp intercept one-minute low 300

router(config)# ip tcp intercept list 101

監視模式

router(config)#access-list 101 permit tcp any host 10.0.0.1

router(config)# ip tcp intercept mode watch

router(config)# ip tcp intercept watch-timeout 20

router(config)# ip tcp intercept list 101

炎熱夏天,清涼一夏


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 IT哥 的精彩文章:

CCNA-動態路由RIP

TAG:IT哥 |