访问控制列表(Access Control List,ACL) 是路由器或交换机接口的指令列表,这些指令列表用来告诉路由器或交换机哪些数据包可以接收、哪些数据包需要拒绝。至于数据包是被接收还是拒绝,可以由类似于源地址、目的地址、端口号、协议等特定指示条件来决定。
访问控制列表不但可以起到控制网络流量、流向的作用,而且在很大程度上起到保护网络设备、服务器的关键作用。ACL适用于所有的被路由协议,如IP、IPX。
ACL功能
1)限制网络流量、提高网络性能。例如,ACL可以根据数据包的协议,指定这种类型的数据包具有更高的优先级,同等情况下可预先被网络设备处理。
2)提供对通信流量的控制手段。
3)提供网络访问的基本安全手段。
4)在网络设备接口处,决定哪种类型的通信流量被转发、哪种类型的通信流量被阻塞。
ACL分类
ACL分为标准式ACL和扩展式ACL,二者区别在于前者是基于源地址的数据包过滤,而后者可以是基于协议类型、源地址、目的地址、源端口、目的端口的数据包过滤。
·标准IP访问列表
一个标准IP访问控制列表匹配IP包中的源地址或源地址中的一部分,可对匹配的包采取拒绝或允许两个操作。编号范围是从1到99的访问控制列表是标准IP访问控制列表。
·扩展IP访问
扩展IP访问控制列表比标准IP访问控制列表具有更多的匹配项,包括协议类型、源地址、目的地址、源端口、目的端口、建立连接的和IP优先级等。编号范围是从100到199的访问控制列表是扩展IP访问控制列表。
·命名的IP访问
所谓命名的IP访问控制列表是以列表名代替列表编号来定义IP访问控制列表,同样包括标准和扩展两种列表,定义过滤的语句与编号方式中相似。
设置ACL的一些规则顺序
1、按顺序比较,先比较第一行,再比较第二行,直到最后一行。在安排ACL语句顺序时,要把最特殊的语句(严格的限制条件)排在列表的最前面,最一般的语句排在列表的最后面,这是ACL语句排列的基本原则。
2、从第一行起,直到找到第一个符合条件的行;符合条件后后续行不再比较。
3、默认在每个 ACL 的末尾都会自动插入一条隐含的 deny 语句,即:如果整个列表没有匹配的语句,则分组被丢弃。
注意:
1、在创建访问控制列表之后,必须将其应用到某个接口才可开始生效。ACL 控制的对象是进出接口的流量。
2、ACL中的网络掩码是反掩码。如deny 192.168.30.0 0.0.0.255,0代表精确匹配,255代表随意。
3、每个 ACL 的末尾都会自动插入一条隐含的 deny 语句,虽然ACL中看不到这条语句,它仍起作用。隐含的 deny 语句会阻止所有流量,以防不受欢迎的流量意外进入网络,也就是说,每一个ACL至少要有一条“允许”语句。
语法格式:
(1)标准访问列表
access-list access-list-number { permit | deny } {source [source-wildcard] | any}
(2)扩展访问列表
access-list access-list-number { permit | deny } { protocol protocol-keyword } { source [ source-wildcard ] | any } { destination destination-wildcard } | any }[protocol-specific options][log]
范例1:
Router-switch(config)#access-list 101 permit ip host 192.168.100.10 any
//允许网管服务器192.168.100.10 访问内网的所有主机
Router-switch(config)#access-list 101 permit tcp any host 192.168.10.10 eq ftp
//允许所有主机访问192.168.10.10的ftp端口
Router-switch(config)#access-list 101 permit tcp 192.168.3.0 0.0.0.255 host 192.168.10.20
//允许财务部网络段192.168.3.0 访问192.168.10.20数据库服务器
Router-switch(config)#access-list 101 deny any any
//除此之外,禁用所有流量
Router-switch(config)# int vlan 10
//进入内网服务器 vlan10
Router-switch(config-if)# ip access-group 101 in
//把 101 ACL规则应用到vlan10
范例2:
ACL帮助用户定义一组权限规则,对于一组特定的数据说明谁可以访问并且何时可以访问。
配置time-range
r1(config)#time-range TELNET
r1(config-time-range)#periodic weekdays 9:00 to 15:00
说明:定义的时间范围为每周一到周五的9:00 to 15:00
配置ACL
说明:配置R1,在上面的时间范围内拒绝源地址10.1.1.2登录telnet,其它流量全部通过。
r1(config)#access-list 150 deny tcp host 10.1.1.2 any eq 23 time-range TELNET
r1(config)#access-list 150 permit ip any any
应用ACL
r1(config)#int f0/1
r1(config-if)#ip access-group 150 out
来源:
甘刚,《网络设备配置与管理》,人民邮电出版社,p133-141