访问控制列表:ACL 企业网络中的设备进行通信时,需要保障数据传输的安全可靠和网络的性能稳定,ACL是用来实现数据包识别功能的,通过定义一系列不同的规则,设备根据这些规则对数据包进行分类,并针对不同类型的报文进行不同的处理,从而可以实现对网络访问行为的控制、限制网络流量、提高网络性能、防止网络攻击等(流量过滤:ipsec-VPN-兴趣流量ACL、流量分类:路由重分发-路由引入-路由策略和过滤、基于NAT/PAT的路由条目匹配、包过滤防火墙、QoS的流量分类、按需拨号、VTY接口远程登录人员限制等)。
注:1、对进出的数据包逐个过滤,丢弃或允许通过;
2、ACL应用于接口上,每个接口的出入双向分别过滤;
3、仅当数据包经过一个接口时,才能被此接口的此方向的ACL过滤;
入/出站流量过滤工作流
基于序列号,自顶向下的匹配
ACL分类
一、扩展ACL(四层工具)
可以使用报文的源/目的IP地址、源/目的端口号以及协议类型等信息来匹配报文;取值范围是100-199/2000-2699;扩展ACL应部署在更靠近源的一端;扩展ACL可以比标准ACL更准确、更丰富、更灵活
二、标准ACL(三层工具)
可以使用报文的源IP地址、分片标记和时间段信息来匹配报文;取值范围是1-99/1300-1999;标准ACL部署在靠近目的的一端
三、二层ACL可以使用源/目的MAC地址以及二层协议类型等二层信息来匹配报文;
四、DPI深度报文匹配(七层工具)、静态ACL(基本/扩展ACL)、动态ACL(通过设定条件触发)、基于时间的ACL、自反ACL(模拟防火墙功能);
ACL规则:策略语句ACE(访问控制实体)
每创建一条策略代表了一个ACE;可以利用数字序号标识访问控制列表,也可以给访问控制列表指定名称,便于维护。一个ACL可以由多条“deny(不匹配/不抓取/拒绝)|permit(匹配/抓取/放行)”语句组成,每一条语句描述了一条规则。设备收到数据流量后,会逐条匹配ACL规则,看其是否匹配。如果不匹配,则匹配下一条。一旦找到一条匹配的规则,则执行规则中定义的动作,并不再继续与后续规则进行匹配。如果找不到匹配的规则,则设备不对报文进行任何处理。ACL支持配置顺序和自动排序:
---配置顺序按ACL规则编号(rule-id)从小到大的顺序进行匹配。设备会在创建ACL的过程中自动为每一条规则分配一个编号,规则编号决定了规则被匹配的顺序。如果将步长设定为5,则规则编号将按照5、10、15…这样的规律自动分配。如果步长设定为2,则规则编号将按照2、4、6、8…这样的规律自动分配。通过设置步长,使规则之间留有一定的空间,用户可以在已存在的两个规则之间插入新的规则。
---自动排序使用“深度优先”的原则进行匹配,即根据规则的精确度排序。
ACL小总结:
1、ACL功能比较强大,可以基于IPv4、IPv6、MAC、ARP等来使用;
2、ACL既可以和数据接口也可以和VTY虚拟接口(入方向)进行关联使用;
3.1、入接口部署ACL:过滤全部的流量,优先级高于CPU、路由表的查询;
3.2、出接口部署ACL:过滤的是穿越流量,不会过滤路由器始发的流量;
4、在使用ACL时,每个接口、每个接口、每个方向只能调用一个ACL;
5、RACL实现跨越网络的通信流量过滤;VACL实现网络内的通信流量过滤;
6、ACL是根据数据包头中的二、三、四层信息来进行报文过滤的,对应用层的信息无法识别;
--无法根据用户名来决定数据是否通过
--无法给不同的用户授予不同的权限级别
--ACL是静态防火墙,无法对应用层协议进行动态检测
注:思科默认不放行所有流量通行,使用access-list 5 permit any any放行所有流量;也可以使用access-list 5 permit ip any any放行所有流量;使用access-list 5 permit host 1.1.1.1放行一个流量。
7、ACL可以应用于接口、NAT、VTY、SNMP/Community、Redistribute等情景;标准ACL只能抓路由前缀而不能抓路由掩码;扩展ACL可以抓取路由前缀和掩码,也可以控制端口号、协议号等;分发列表只支持标准ACL;route-map支持标准和扩展ACL;
标准ACL实例:
标准ACL抓取10.1.1.0/24的路由:access-list 5 permit 10.1.1.0 0.0.0.0;
标准ACL抓所有主A类路由:access-list 10 permit 0.0.0.0 127.0.0.0
标准ACL抓所有主B类路由:access-list 20 peimit 128.0.0.0 63.255.0.0
标准ACL抓所有主C类路由:access-list 30 permit 192.0.0.0.0 31.255.255.0
标准ACL抓主B路由中掩码为24的,且第一段为偶数,第二段为奇数,第三段为偶数的路由:access-list 40 permit 128.1.0.0 62.254.254.0
扩展ACL实例:
扩展ACL抓所有主A类路由:
access-list 100 permit ip 0.0.0.0 127.0.0.0 255.0.0.0(host)255.0.0.0
扩展ACL抓所有主B类路由:
access-list 110 peimit ip 128.0.0.0 63.255.255.0 255.255.0.0 0.0.0.0
扩展ACL抓所有主C类路由:
access-list 120 permit ip 192.0.0.0.0 31.255.255.0 255.255.255.0
命名式ACL实例:
命名控制列表就是给控制列表取个名字,而不是想上面所述的使用访问控制列表号。我们通过命令访问控制列表可以很方便的管理ACL规则,可以随便添加和删除规则,而无需删除整个访问控制列表了。
创建命名访问控制列表的语法如下:
Router(config)#ip access-list {standard|extended} access-list-name
下面是命令参数的详细说明
standard:创建标准的命名访问控制列表。
extended:创建扩展的命名访问控制列表。
access-list-name:命名控制列表的名字,可以是任意字母和数字的组合。
无论是配置标准命名ACL语句还是配置扩展命名ACL语句,都有一个可选参数Sequence-Number。Sequence-Number参数表明了配置的ACL语句在命令ACL中所处的位置,默认情况下,第一条为10,第二条为20,以此类推。Sequence-Number可以很方便地将新添加的ACL语句插于到原有的ACL列表的指定位置,如果不选择Sequence-Number,默认添加到ACL列表末尾并且序列号加10。
对于命名ACL来说,可以删除单条ACL语句,而不比删除整个ACL。并且ACL语句可以有选择的插入到列表中的某个位置,使得ACL配置更加方便灵活。
如果要删除某一ACL语句,可以使用“no Sequence-Number”或“no ACL”语句两种方式。
例如:将一条新添加的ACL加入到原有标准命名ACL的序列15的位置。内容为允许主机192.168.1.1/24访问Internet。
Router(config)#ip access-list standard test1
Router(config-std-nacl)#15 permit host 192.168.1.1
例如:创建扩展命名ACL,内容为拒绝192.168.1.0/24访问FTP服务器192.168.2.200/24,允许其他主机。
Router(config)#ip access-list extended test2
Router(config-ext-nacl)#deny tcp 192.168.1.0 0.0.0.255 host 192.168.2.200 eq 21
Router(config-ext-nacl)#permit ip any any
将命名ACL应用于接口语法如下:
Router(config-if)#ip access-group aaccess-list-name {in|out}
取消命名ACL的应用语法如下:
Router(config-if)#no ip access-group aaccess-list-name {in|out}
本文仅为个人整理分享。