首页 > 电脑教程/ 正文
ACL的基本概念
访问控制列表(ACL)根据源地址、目标地址、源端口或目标端口等协议信息对数据包进行过滤,从而达到访问控制的目的。这种技术最初只在路由器上使用,后来扩展到三层交换机,甚至有些新的二层交换机也开始支持ACL了。
ACL对入站(Inbound,从端口进入路由器)或出站(Outbound,通过端口流出路由器)的通信流进行过滤。ACL说明了哪些通信是允许的,哪些通信被拒绝。ACL在全局模式下配置,生成的ACL命令需要被激活。如果在两个端口之间进行过滤,则在端口配置子模式下激活,并且要说明通信流的方向。ACL的局限性是不能对路由器本身发出的通信进行过滤,例如,在路由器上执行ping或traceroute命令,或者通过路由器远程连接(Telnet )另外一个网络设备,应用于路由器端口的ACL命令不能过滤这些通信。然而,如果一个外部设备企图ping或traceroute一个路由器,则该路由器可以过滤这些通信。
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
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
可见,列表顶上是特殊性语句,列表底部是一般性语句。
出于安全性考虑,ACL的默认动作是拒绝(Implicit Deny),即在ACL中没有找到匹配的语句时分组将被拒绝通过,这相当于在列表最后有一个隐含语句拒绝了所有的通信。由此引申出的一条规则是,每一个ACL至少要有一条“允许”语句,否则只有“拒绝”语句的ACL将丢弃所有的分组。
1.配置标准ACL的命令
Route代config)# 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 #
Route代config-i训ip 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规定使用通配符掩码来说明子网地址,通配符掩码就是子网掩码按位取反的结果。如下两个特殊的通配符掩码需要说明。
255.255.255.255
通配符掩码
192.168.1.
表示主机192.168.1.1的F-I地址,实际上路由器把这个地址转换为host 192.168.1.1,注意
这里的关键字host。通配符掩码255.255.255.255表示任意地址都是匹配的,通常与地址
一起使用,例如:
路由器将把这个地址转换为关键字any。表8-16给出了几个使用通配符掩码的例子。
下面给出配置标准ACL命令的完整格式:
Router(config)# access-list 1-9911300-1999 permitIdeny
source IP address [wildcard mask] [log]
标准ACL的编号为1-99和1300-1999,编号之后是路由器实施的动作。匹配条件仅考
虑分组的源地址,后随一个任选的通配符掩码。如果忽略了通配符掩码,则默认为
Router# terminal monitor
2.配置标准ACL实例
例1下面是配置ACL的一个例子。
Route(config)# access-list 1 permit 192.168.1.1
Route(config)# access-list 1 permit 192.168.1.1
Route(config)#access-list 1 deny 192.168.1.2
Router(config)#access-list 1 permit 192.168.1.0
Route(config)#access-list 1 deny any
Route(config)#interface serial 0
Route(config-if)#Ip access-group I in
在这个例子中,第一个ACL语句说明允许源地址为192.168.1.1的分组通过,如果分组不匹配,则检查下一条语句。值得注意的是,第一条语句后面没有通配符掩码,这意味着完全匹配。第二条语句说明拒绝主机192.168.1.2发出的分组通过,如果分组不匹配,则检查下一条语句。第三条语句说明允许子网192.168.1.0/24发出的分组通过,如果分组不匹配,则检查下一条语句。第四条语句实际上是不必要的,因为有一条隐含的拒绝任何分组的语句附加在列表的最后。最后两个语句是激活ACL的命令。实际上,以上ACL可以重写如下:
Route代confi助#access-list 1 deny 192.168.1.2
Router(config)# access-list 1 permit 192.168.1.0
Route叹config)# interface serial 0
Rout州config-i解ip 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
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
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
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
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. UDP和ICMP的过滤信息。对于TCP和UDP协议,配置命令的格式为:
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列出了常用的TCP和UDP端口号,在配置命令中使用时可以直接写端口号,也可以写与协议对应的关键字。
对于TCP连接,还要用到关键字established,说明过滤信息仅用于已建立的TCP连接,即允许或拒绝包含RST或ACK置位的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.2的Telnet远程连接,于
Telnet的下层协议是TCP,所以在协议部分使用了参数tcp0
第四个语句表示允许任何来自子网172.16.0.0/16的ICMP回声应答报文(echo-reply)通过,但回声请求报文不会通过。
第五个语句表示拒绝所有与上面的语句不匹配的企分组通过,这个语句实际上是不必要
的,因为列表最后有一个这样的隐含语句。但是,如果要看到哪些分组被拒绝,则这个附加!og
参数的语句还是需要的。
最后的两个语句把ACL列表应用于EthemetO的入站通信流。
例2下面是配置扩展ACL的另外一个例子。
Router(config)# access-list 101扣ermit 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
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.1到DNS服务器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.2的RIP更新报文,因为它是本机201.201.201.1 ethernetO的邻居路由器。最后把ACL 101应用于本机的ethemet0端口。
从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
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-acl讲permit 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的配置进行比较。
用3台路由器和一台PC连成图8-37所示的网络,使用访问控制列表禁止网络
在PC (192.168.3.2)上用Web浏览器查看
在R1上配置并测试访问控制列表:
在PC (192.168.3.2)上用Web浏览器查看
- 上一篇:IPv6配置与部署
- 下一篇:网络管理系统体系结构
更多如何访问控制列表相关文章
- 提高计算机性能的4种方法
- 网页内容优化:一个优化Sharepoint的新方法
- Win7/XP/PE多操作系统独立启动设置方法教程
- 计算机的启动原理是什么?
- 计算机语言怎么学
- 如何选择博客主机空间
- 蓝牙耳机如何连接手机
- 大学生就业指导课程
- 新手学编程用什么语言好
- 如何自学编程?
- 虚拟化产品安全防护建议
- 对电脑一无所知怎样学
- 10个java程序员不得不知的调试小技巧
- 计算机网络的形成和发展
- X.25公共数据网之CCITT X.21接口详细介绍
- 局域网技术概论
- 网关协议课程详解
- 网络安全的基本概念
- 密钥怎么管理才安全
- 应用层安全协议
- 可信任系统是什么
- 病毒怎么进行防护
- 如何配置广域网接入
- 简单网络管理协议
- 网络结构设计
- 网络故障诊断
- 什么是笔记本电脑的外部接口
- 四步做好服务器安全保护措施
- 搜索
-
- 热门标签
-
- 郑州电脑技术学校选择哪家比较不错呢
- 河南省计算机类职业技术中专学校有哪些呢
- 郑州北大青鸟毕业之后能不能找到好工作
- 主板维修3条实用经验
- 郑州java专业技术培训学校哪家好
- 商丘市柘城县北大青鸟招生
- 初中毕业可以学什么职业
- 主板出现故障应该如何检查
- 郑州北大青鸟学校学什么专业比较好
- 学电脑教程
- 郑州电脑培训学校
- 河南省计算机技术学校排名
- 郑州北大青鸟计算机专业学校学门靠谱的技术
- 2021年初中生学什么技术好
- 主板供电部分发热太大
- 郑州对口升学计算机类的专科学校有哪些
- 郑州北大青鸟上学靠谱吗
- 绿野电脑学校学生公寓 - 安阳市, 安阳
- 郑州北大青鸟职业技术学院简介怎么样呢
- 高考没考好300多分上什么学校好