计算机学习网-【computerpx】

招生咨询电话与微信:15225191462(周老师)
计算机学习网,我命由我不由天,学IT技术,做更好的自己

首页 > 电脑教程/ 正文

如何访问控制列表

2014-07-11 17:50:31 www.computerpx.com

 ACL的基本概念

    访问控制列表(ACL)根据源地址、目标地址、源端口或目标端口等协议信息对数据包进行过滤,从而达到访问控制的目的。这种技术最初只在路由器上使用,后来扩展到三层交换机,甚至有些新的二层交换机也开始支持ACL了。

    ACL对入站(Inbound,从端口进入路由器)或出站(Outbound,通过端口流出路由器)的通信流进行过滤。ACL说明了哪些通信是允许的,哪些通信被拒绝。ACL在全局模式下配置,生成的ACL命令需要被激活。如果在两个端口之间进行过滤,则在端口配置子模式下激活,并且要说明通信流的方向。ACL的局限性是不能对路由器本身发出的通信进行过滤,例如,在路由器上执行pingtraceroute命令,或者通过路由器远程连接(Telnet )另外一个网络设备,应用于路由器端口的ACL命令不能过滤这些通信。然而,如果一个外部设备企图pingtraceroute一个路由器,则该路由器可以过滤这些通信。

    ACL是由编号或名字组合起来的一组语句。编号和名字是路由器引用ACL语句的索引。编号的ACL语句被赋予唯一的数字,而命名的ACL语句则有一个唯一的名字。有了编号或名字,路由器就可以找到需要的ACL语句了。

ACL分为标准的和扩展的两种类型。标准ACL只能根据分组中的IP源地址进行过滤,例如可以允许或拒绝来自某个源设备的所有通信。扩展ACL不但可以根据源地址或目标地址进行过滤,还可以根据不同的上层协议和协议信息进行过滤。例如,可以对PC与远程服务器的Telnet会话进行过滤。表8-14比较了两种ACL过滤功能的区别。

    当一个分组经过时,路由器按照一定的步骤找出与分组信息匹配的ACL语句对其进行处理。路由器自顶向下逐个处理ACL语句,首先把第一个语句与分组信息进行比较,如果匹配,则路由器将允许(Permit)或拒绝(Deny)分组通过;如果第一个语句不匹配,则照样处理第二个语句,直到找出一个匹配的。如果在整个列表中没有发现匹配的语句,则路由器丢弃该分组。于是,可以对ACL语句的处理规则总结出以下要点。

    (1)一旦发现匹配的语句,就不再处理列表中的其他语句。

    (2)语句的排列顺序很重要。

    (3)如果整个列表中没有匹配的语句,则分组被丢弃。

需要特别强调ACL语句的排列顺序。如果有两条语句,一个拒绝来自某个主机的通信,另一个允许来自该主机的通信,则排在前面的语句将被执行,而排在后面的语句将被忽略。所以在安排ACL语句的顺序时要把最特殊的语句排在列表的最前面,而最一般的语句排在列表的最后面,这是ACL语句排列的基本原则。例如,下面的两条语句组成一个标准ACL

access-list 10 permit host 172.16.1.0 0.0.0.255

access-list 10 deny host 172.16.1.1

    第一条语句表示允许来自子网172.16.1.0/24的所有分组通过,而第二条语句表示拒绝来自主机172.16.1.1的通信。如果路由器收到一个源地址为172.16.1.1的分组,则首先与第一条语句进行匹配,该分组被允许通过,第二条语句就被忽略了。要达到预想的结果—允许来自除主机172.16.1.1之外的、属于子网172.16.1.0/24的所有通信,则两条语句的顺序必须互换。

access-list 10 deny host 172.16.1.1

access-list 10 permit host 172.16.1.0 0.0.0.255

    可见,列表顶上是特殊性语句,列表底部是一般性语句。

    出于安全性考虑,ACL的默认动作是拒绝(Implicit Deny),即在ACL中没有找到匹配的语句时分组将被拒绝通过,这相当于在列表最后有一个隐含语句拒绝了所有的通信。由此引申出的一条规则是,每一个ACL至少要有一条“允许”语句,否则只有“拒绝”语句的ACL将丢弃所有的分组。

8.8.2 ACL配置命令

1.配置标准ACL的命令

Routeconfig)# access-list ACL_ # pennitIdeny conditions

LOS 11.2之前,只能用编号作为ACL语句的标识符,后来又增加了用名字作为标识符。编号或名字的作用是把ACL语句组合成一个列表。ACL编号((ACL #)的选择有一定的取值范围,如表8-15所示。用名字作为ACL语句标识符的优点是克服了编号取值范围的限制。ACL语句中的条件(conditions)表示分组中用于匹配的内容,即IP地址或协议信息。

    激活ACL命令之前要进入端口配置模式,下面是激活ACL的命令序列:

    Router(config)# interface type [module #Jport #

    Routeconfig-iip access-group ACLee # inlout

    ip access-group命令中说明要激活的ACL编号(ACLes #)以及过滤的方向(inlout), in表示进入端口的分组(入站)out表示从端口输出的分组(出站)。在IOS 12.0之后必须说明两个方向之一,在IOS 11.3之前,默认的是。ut方向。

可以在路由器的多个端口上多次激活同一个ACL,而且还可以在同一个端口上从入站和出站两个方向对同一个ACL分别激活两次。甚至可以在一个端口上激活一个不存在的ACL,即一个没有语句的空ACL。在这种情况下,一个拒绝语句已经被自动地放置在空ACL列表的底部,这会使得所有的通信都不能通过。所以不是特殊需要的话不要这样做。

    1) ACL语句的编辑

    编辑ACL语句有许多限制。首先,对于编号的ACL,不能删除ACL中的任何表项,只能删除整个ACL列表。删除ACL的命令是:

no access-list ACL#

    其次,不能在ACL的顶部和中间插入一个表项,当前输入的ACL语句行总是附加在列表的底部。最后,已有的ACL语句也不能修改。鉴于以上限制条件,建议采用下面的过程修改一个已有的ACL列表。

    (1)执行show running-config命令,找到ACL命令列表。

    (2)复制ACL语句列表。

    (3)粘贴在文本编辑器(例如记事本).

    (4)ACL语句进行编辑,可以插入、删除或修改ACL表项。

    (5)复制编辑好的ACL文本。

    (6)在路由器上执行命令no ip access-group ACL # inlout,停止ACL列表的应用。

    (7)在路由器上执行命令no access-list ACL#,删除原来的ACL列表。

    (8)在配置模式下粘贴编辑好的ACL文本。

    (9)在端口配置子模式下激活新的ACLO

    2)通配符掩码

    ACL规定使用通配符掩码来说明子网地址,通配符掩码就是子网掩码按位取反的结果。如下两个特殊的通配符掩码需要说明。

0.0.0.0

255.255.255.255

通配符掩码0.0.0.0表示ACL语句中的32位地址要求全部匹配,因而叫做主机掩码。例如

192.168.1.10.0.0.0

表示主机192.168.1.1F-I地址,实际上路由器把这个地址转换为host 192.168.1.1,注意

这里的关键字host。通配符掩码255.255.255.255表示任意地址都是匹配的,通常与地址0.0.0.0

一起使用,例如:

0.0.0.0  255.255.255.255

路由器将把这个地址转换为关键字any。表8-16给出了几个使用通配符掩码的例子。

    下面给出配置标准ACL命令的完整格式:

    Router(config)# access-list 1-9911300-1999 permitIdeny

                  source IP address [wildcard mask] [log]

    标准ACL的编号为1-991300-1999,编号之后是路由器实施的动作。匹配条件仅考

虑分组的源地址,后随一个任选的通配符掩码。如果忽略了通配符掩码,则默认为0.0.0.0,即要求整个地址全部匹配。最后的任选log参数是IOS 12.0之后新增加的,使得匹配的分组在路由器控制台端口打印输出,但是不会在远程连接的路由器上输出,除非执行了下面的命令:

Router# terminal monitor

2.配置标准ACL实例

1下面是配置ACL的一个例子。

Routeconfig)# access-list 1 permit 192.168.1.1

Routeconfig)# access-list 1 permit 192.168.1.1

Routeconfig#access-list 1 deny 192.168.1.2

Router(config#access-list 1 permit 192.168.1.0 0.0.0.255

Routeconfig#access-list 1 deny any

Routeconfig#interface serial 0

Routeconfig-if)#Ip access-group I in

    在这个例子中,第一个ACL语句说明允许源地址为192.168.1.1的分组通过,如果分组不匹配,则检查下一条语句。值得注意的是,第一条语句后面没有通配符掩码,这意味着完全匹配。第二条语句说明拒绝主机192.168.1.2发出的分组通过,如果分组不匹配,则检查下一条语句。第三条语句说明允许子网192.168.1.0/24发出的分组通过,如果分组不匹配,则检查下一条语句。第四条语句实际上是不必要的,因为有一条隐含的拒绝任何分组的语句附加在列表的最后。最后两个语句是激活ACL的命令。实际上,以上ACL可以重写如下:

Routeconfi#access-list 1 deny 192.168.1.2

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

Routeconfig)# interface serial 0

Routconfig-iip access-group 1 in

这样,整个ACL被简化为两条语句,从而提高了路由器的工作效率。

2下面是配置ACL的另外一个例子。

Router(config)# access-list 2 deny 192.168.1.0

Router(config)# access-list 2 deny 172.16.0.0

Router(config)# access-list 2 permit 192.168.1.1

Router(config)# access-list 2 permit 0.0.0.0 255.255.255.255

Router(config)# interface ethernet 0

Router(config-if)#Ip access-group 2 out

    这个ACL存在几个问题。第一个语句似乎是拒绝了整个192.168.1.0/24子网发出的分组,

然而实际上它什么也不做。原因是没有后随通配符掩码,这意味着要求整个地址全部匹配,然

而没有一个分组的源地址会是192.168.1.0,所以没有一个分组能够匹配这个过滤条件。第二个

语句有同样的问题。第三个语句和第四个语句是对的。可见,配置ACL需要谨慎处理。实际

上,上面的ACL可以修改如下:

Route(config )#access-list 2 deny 192.168.1.0 0.0.0.255

Router(config )#access-list 2 deny 172.16.0.0 0.0.255.255

Route(config )#access-list 2 permit 192.168.1.1

Router(config )#access-list 2 permit 0.0.0.0 255.255.255.255

Route(config )# interface ethernet 0

Router(config-if )#ip access-group 2 out

    经过这样修改后还存在一个问题。第三个语句实际上不会执行,因为第一个语句已经拒绝

了子网192.168.1.0发出的所有分组,所以主机192.168.1.1发出的分组也不会通过。要想达到

预想的过滤效果,只有把特殊的语句向前提。

Router(config)# access-list 2 permit 192.168.1.1

Route(config )#access-list 2 deny 192.168.1.0 0.0.0.255

Router(config)# access-list 2 deny 172.16.0.0 0.0.255.255

Route(config )#access-list 2 permit any

Router(config)# interface ethernet 0

Router(config -if)#p access-group 2 out

可以看出,第四个语句使用了关键字“any",这样表示更简明。

  3.配置扩展ACL的命令语法

    Router(config)# access-list 100-19912000-2699 permitIdenyprotocol

    source address source wildcard mask [protocol information]

    destination address destination wildcard mask [protocol information] [log]

    这个命令包含了(上层)协议、源和目标IP地址及通配符掩码、协议信息等,最常用的是有关TCP. UDPICMP的过滤信息。对于TCPUDP协议,配置命令的格式为:

    Router(config}# access-list 100-19912000-2699 permitldeny tcpludp

    source address source wildcard mask [operator source-port .

    destinationes address destination wildcard mask [operator destinationaort #]

    [established] [log]

    其中操作符(operator)如表8-17所示,用于限定特定的端口号。表8-18列出了常用的TCPUDP端口号,在配置命令中使用时可以直接写端口号,也可以写与协议对应的关键字。

    对于TCP连接,还要用到关键字established,说明过滤信息仅用于已建立的TCP连接,即允许或拒绝包含RSTACK置位的TCP段。

    对于ICMP协议,配置命令的格式为:

    Router(config)# access-list 100-19912000-2699 permitjdeny icmp

    source address source wildcard mask destination address destination wildcard mask

    [icmp message] [log)

    其中的参数icmp message用于说明ICMP的报文类型,表8-19列出了几种常见的ICMP报文类型。

4.配置扩展ACL实例

I下面是配置扩展ACL的一个例子。

Router(config)# access-list 100 permit tcp any 172.16.0.0 0.0.255.255 established log

Router(config)# access-list 100 permit udp any host 172.16.1.1 eq dns log

Router(config)# access-list 100 permit tcp 172.17.0.0 0.0.255.255 host 172.16.1.2 eq telnet log

Router(config)# access-list 100 permit icmp any 172.16.0.0 0.0.255.255 echo-reply log

Router(config)# access-list 100 deny ip any any log

Router(config)# interface ethernet 0

Router(config-it)# ip access-group 100 In

    上例中的第一个语句说明允许这样的TCP段通过:源地址任意,目标地址为子网172.16.0.0/16,参数established表示RST/ACK置位,即对连接请求的响应.log参数表示允许通过的分组会显示在控制台端口上。由于没有说明端口号,所以任何TCP连接都被允许。这个语句使得子网172.16.0.0/16中的主机可以向任何主机发出TCP连接请求,并接收被请求方的响应。

    第二个语句表示允许来自任何源地址的DNS请求通过,被查询的DNS服务器地址为172.16.1.1,由于没有说明通配符掩码,所以在目标地址前面使用了关键字host.

    第三个语句表示允许从子网172.17.0.0/16到目标主机172.16.1.2Telnet远程连接,于

Telnet的下层协议是TCP,所以在协议部分使用了参数tcp0

    第四个语句表示允许任何来自子网172.16.0.0/16ICMP回声应答报文(echo-reply)通过,但回声请求报文不会通过。

    第五个语句表示拒绝所有与上面的语句不匹配的企分组通过,这个语句实际上是不必要

的,因为列表最后有一个这样的隐含语句。但是,如果要看到哪些分组被拒绝,则这个附加!og

参数的语句还是需要的。

最后的两个语句把ACL列表应用于EthemetO的入站通信流。

2下面是配置扩展ACL的另外一个例子。

Router(config)# access-list 101ermit tcp host 199.199.199.1 host 200.200.200.1 eq dns

Router(config)#access-list 101 permit udp any host 200.200.200.1 eq dns

Router(config)# access-list 101 permit tcp any host 200.200.200.2 eq www

Router(config)# access-list 101 permit icmp any 200.200.200.0 0.0.0.255

Router(config)# access-list 101 permit tcp any host 200.200.200.3 eq smtp

Router(config)# access-list 101 permit udp host 201.201.201.2 host 201.201.201.1 eq rip

Router(config)# interface ethernet 0

Router(config-if)#ip address 201.201.201.1255.255.255.0

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

    上面第一个语句表示允许从主机199.199.199.1DNS服务器200.200.200.1的通信。第二个语句表示允许任何主机查询网络内部的DNS服务器200.200.200.1,这种查询报文通过UDP传输。第三个语句表示允许任何主机访问网络内部的Web服务器200.200.200.2。第四个语句表示允许任何设备向网络200.200.200.0/24发送ICMP报文。第五个语句表示允许任何主机向网络内部的SMTP服务器201.201.201.3发送电子邮件。第六个语句表示允许接收来自路由器201.201.201.2RIP更新报文,因为它是本机201.201.201.1 ethernetO的邻居路由器。最后把ACL 101应用于本机的ethemet0端口。

8.8.3命名的访问控制列表

    LOS 11.2开始,Cisco路由器支持命名的访问控制列表,这样就突破了编号ACL的数量限制。命名的ACL还有一个特点,就是可以删除一个表项,但仍然不能修改,也不能插入一个表项,所以修改一个已有的ACL还是不方便。

    配置命名ACL的命令

    配置命名ACL的命令语法如下:

Router(config)# ip access-list standardlextended ACL name

    在这个命令中首先要说明ACL是标准的还是扩展的(standardlextended ),其次要说明ACL的名字(ACL name )。这个命令执行之后就进入ACL子配置模式。对于标准ACL,用下面的命令进行配置:

    Router(config)# Ip access-list standard ACL name

    Router(config-std-acl)# permitideny source IP address [wildcard mask]

    对于扩展ACL,用下面的命令进行配置:

    Router(config)# ip access-list extended A CLname

    Router(config-ext-acl)# permiqdeny IP_protocol

    source IP address wildcard mask [protoco勺晒rmation]

    destination IP address wildcard mask [protocol information] [log]

    可见,与编号的ACL的配置是相同的.激活命名的ACL与激活编号的ACL的方法相同,命令格式如下:

Router(config)# Interface type [module #]port #

Router(config-if)# ip access-group ACL name injout

    2.命名ACL的配置实例

1下面是配置命名ACL的一个例子。

Router(config)# ip access-list standard acl std

Router(onfig-std-acl)# deny 192.168.1.0 0.0.0.255

Router(config-std-acl)#permit any

Router(config)# interface ethernet 0

Router(config-if)# ip access-group acl std in

    本例中的第一个语句表示进入命名ACL配置子模式。第二个语句表示阻塞了来自子网192.

168.1.0/16的任何通信。第三个语句允许其他流量通过。最后两个语句把acl std应用于端口

ethernetO0

    2下面是配置命名ACL的另外一个例子。

    Router(config)# ip access-list extended do-not-enter

    Router(config-ext-acl)# permit tcp any 172.16.0.0 0.0.255.255 established log

    Router(config-ext-acl)# permit udp any host 172.16.1.1 eq dns log

    Router(config-ext-acll)#permit tcp 172.17.0.0 0.0.255.255 host 176.16.1.2 eq telnet log

    Router(configiext-aclpermit icmp any 176.16.0.0 0.0.255.255 echo-reply log

    Router(config-ext-acl)# deny ip any any log

    Router(config)# interface ethernet 0

Router(config-if)# ip access-group do-not-enter in

这实际上是上一小节例1的另外一个版本,目的是把命名ACL的配置与编号ACL的配置进行比较。

8.8.4 ACL综合应用

    3台路由器和一台PC连成图8-37所示的网络,使用访问控制列表禁止网络10.0.0.0/24上的主机访问网络192.168.3.0/24,禁止192.168.3.0/24上的主机访问10.0.0.0/24上的Web服务器。

    PC (192.168.3.2)上用Web浏览器查看10.0.0.110.0.0.2上的Web浏览器,Web录需要输入路由器的enable secret口令。

    R1上配置并测试访问控制列表:

    PC (192.168.3.2)上用Web浏览器查看10.0.0.110.0.0.2上的Web浏览器,这时无·法登录。

 


Tags:许昌市禹州市北大青鸟初中,许昌市长葛市北大青鸟中专,许昌市鄢陵县北大青鸟技校,许昌市襄城县北大青鸟IT培训,漯河市郾城区北大青鸟分校,漯河市源汇区北大青鸟就业

郑州北大青鸟计算机专业学校
郑州北大青鸟计算机专业学校介绍
郑州北大青鸟计算机专业学校专业设置
郑州北大青鸟计算机专业学校招生要求
郑州北大青鸟计算机专业学校校园活动
郑州北大青鸟计算机专业学校就业保障
搜索
计算机培训学校,就来计算机学习网咨询
计算机培训学校,就来计算机学习网咨询
热门标签
计算机培训学校,就来计算机学习网咨询
计算机培训学校,就来计算机学习网咨询
计算机培训学校,就来计算机学习网咨询
  • QQ交谈