一、ACL概述
1、利用ACL可以對經過路由器的數據包按照設定的規則進行過濾,使數據包有選擇的通過路由器,起到防火牆的作用。
訪問控制列表(ACL)由一組規則組成,在規則中定義允許或拒絕通過路由器的條件。
ACL過濾的依據主要包括源地址、目的地址、上層協議等。
ACL有兩種:標準訪問控制列表、擴展訪問控制列表
2、ACL的基本用途是限制訪問網絡的用戶,保護網絡的安全。
ACL一般只在以下路由器上配置:
(1)內部網和外部網的邊界路由器。
(2)兩個功能網絡交界的路由器。
3、限制的內容通常包括:
(1)允許那些用戶訪問網絡。(根據用戶的IP地址進行限制)
(2)允許用戶訪問的類型,如允許http和ftp的訪問,但拒絕Telnet的訪問。(根據用戶使用的上層協議進行限制)
二、ACL語句
訪問控制列表形式爲:
Router(config)# access-list 表號 處理方式 條件
表號:用於區分訪問控制列表(一臺路由器中可定義多個ACL,每個ACL都有一個表號)
標準訪問控制列表表號:1-99
擴展訪問控制列表表號:100-199
同一個ACL中各語句表號相同
處理方式:取值permit和deny,當數據包與該語句條件匹配時,用給定的處理方式處理
條件:每條ACL只定義一個條件
例:Access-list 1 permit10.0.0.0 0.255.255.255.255
Access-lis 1 1deny20.0.0.0 0.255.255.255.255
調用到接口;
Router(config)# interface 接口號
Router(config-if)# ip access-group 表號 [in | out]
三、通配符掩碼
1、在ACL語句中,當使用地址作爲條件時,它的一般格式爲:地址 通配符掩碼。
通配符掩碼決定了地址中的哪些位需要精確匹配,哪些爲不需要匹配。
通配符掩碼是一個32位數,採用點分十進制方式書寫。匹配時,“0”表示檢查的位,“1”表示不檢查的位。
如:192.168.1.1 0.0.255.255
表示檢查前16位,忽略後16位,所以這個條件表示的地址是 192.168.*.*。
2、any條件:
當條件爲所有地址時,如果使用通配符掩碼應寫爲:
0.0.0.0 255.255.255.255
這時可以用“any”表示這個條件。
如:
Router(config)# access-list 1 permit 0.0.0.0 255.255.255.255
Router(config)# access-list 1 permit any
上面兩個語句是等價的
3、host關鍵字
當條件爲單一ip地址時,如果使用通配符掩碼應寫爲:IP地址 0.0.0.0。這是可以用host關鍵字來定義這個條件。
Access-list 10 permit 200.1.1.5 0.0.0.0
Access-list 10 permit host 200.1.1.5
上面兩個語句等價
四、標準訪問控制列表
標準ACL只能使用地址作爲條件。
標準ACL使用數據包的源地址匹配ACL語句中的條件。
定義標準ACL時,可使用的表號爲1~99。(針對IP數據報)
標準ACL配置舉例1
一個局域網連接在路由器R1的E0口,這個局域網要求只有來自10.0.0.0/8、192.168.0.0/24、192.168.1.0/24的用戶能夠訪問。
access-list 1 permit 10.0.0.0 0.255.255.255
Access-list 1 permit 192.168.0.0 0.0.255.255
Access-list 1 permit 192.168.1.0 0.0.255.255
說明:定義ACL時,每條語句都按輸入的次序加入到ACL的末尾,如果想要更改某條語句,或者更改語句的順序,只能先刪除整個ACL,再重新輸入。
比如刪除表號爲1的ACL:
Router(config)# no access-list 1
五、擴展訪問控制列表
擴展ACL可以使用地址作爲條件,也可以用上層協議作爲條件。
擴展ACL既可以測試數據包的源地址,也可以測試數據包的目的地址。
定義擴展ACL時,可使用的表號爲100~199。(針對IP數據報)
擴展ACL的語句:access-list 表號 處理方式 條件
表號:取值100~199。
處理方式:permit(允許)或deny(拒絕)。
條件:協議 源地址 目的地址 [運算符 端口號] [established]
協議:用於匹配數據包使用的網絡層或傳輸層協議,如IP、TCP、UDP、ICMP等。
源地址、目的地址:使用“地址 通配符掩碼”的形式,也可以使用any、host關鍵字。
運算符 端口號:用於匹配TCP、UDP數據包中的端口號。
(1)運算符包括lt(小於)、gt(大於)、eq(等於)、neq(不等於)。
(2)端口號用於對應一種應用,如21—FTP、23—Telnet、25—SMTP、53—DNS、80—HTTP等。
“運算符 端口號”可匹配數據包的用途。如:“eq 80”可匹配那些訪問Web網站的數據包。
在擴展ACL語句中, “運算符 端口號”可以沒有。
例:access-list 100 permit tcp 192.168.0.0 0.0.255.255 10.0.0.0 0.255.255.255 eq 80
端口調用:
Router(config)# interface e0
Router(config-if)# ip access-group 100 out
在每個擴展ACL末尾也有一條默認語句:
access-list list-num deny ip any any
它會拒絕所有與前面語句不匹配的數據包。
1、擴展ACL配置舉例
一個局域網連接在路由器R1的E0口,這個局域網只允許Web通信流量和Ftp通信流量,其它都拒絕。
Access-list 100 permit tcp any any eq 80
Access-list 100 permit tcp any any eq 20
Access-list 100 permit tcp any any eq 21
Interface E0
IP access-group 100 out
2、R1是局域網和外網的邊界路由器,禁止外網用戶用Telnet遠程登錄本路由器。
Access-list 100 deny tcp any host 200.1.1.1 0 eq 23
Access-list 100 deny tcp any host 192.168.0.1 eq 23
Access-list 100 permit ip any any
Interface s0
Ip access-group 100 in
3.R1是局域網和外網的邊界路由器,60.54.145.21是一個有害的Web網站,禁止內網用戶訪問該網站。(上圖)
Access-list 100 deny tcp 192.168.0.0 0.0.255.255 host 60.54.145.21 eq 80
Access-list 100 permit ip any any
Interface e0
Ip access-group 100 in
4.R1是局域網和外網的邊界路由器,禁止對S0口的ping操作。(同上圖)
Access-list 100 deny icmp any 200.1.1.1 0.255.255.255
Access-list permit IP any any
Interface s0
IP access-group 100 in
六、命名訪問控制列表
命名ACL也有標準ACL和擴展ACL兩種,一個命名ACL只能是其中的一種。(不在使用表號)
Ip access-list {standard|extended} name
standard:定義標準命名ACL。
extended:定義擴展命名ACL。
name:ACL的名字,可自定義。
該命令執行後,提示符變爲Router(config-std-nacl)#或Router(config-ext-nacl)#。在此提示符下可輸入ACL語句。
命名ACL語句格式:處理方式 條件。
它只比以前的ACL少了前面的“access-list 表號”部分,其它都相同。
例1 配置標準命名ACL
要求拒絕來自200.1.1.0/24的數據包通過S0口進入路由器,其它都允許
Ip access-list standard Name
Deny 200.1.1.0 0.0.0.255
Permit any
Exit
Int s0
Ip access-group Name in
2、禁止內網用戶訪問地址爲60.54.145.21的Web網站
Ip access-list extended Name1
Deny tcp 192.168.0.0 0.255.255.255 host 60.54.145.21 eq 80
Permit any
Interface e0
Ip access-group Name1 in