ACL原理与应用知识总结
一、定义:访问控制列表(ACL)是一种基于包过滤的访问控制技术,它可以根据设定的条件对接口上的数据包进行过滤,允许其通过或丢弃。
访问控制列表(Access Control Lists,ACL)是应用在路由器接口的指令列表。这些指令列表用来告诉路由器哪些数据包可以收、哪些数据包需要拒绝。至于数据包是被接收还是拒绝,可以由类似于源地址、目的地址、端口号等的特定指示条件来决定。
访问控制列表具有许多作用,如限制网络流量、提高网络性能;通信流量的控制,例如ACL可以限定或简化路由更新信息的长度,从而限制通过路由器某一网段的通信流量;提供网络安全访问的基本手段;在路由器端口处决定哪种类型的通信流量被转发或被阻塞,例如,用户可以允许E-mail通信流量被路由,拒绝所有的 Telnet通信流量等。
如何通过ACL对数据进行过滤?各种协议框架下,传输的数据,都包含:数据头部,数据负载两部分。所做的动作有:数据封装,数据传输,数据解封装。通常情况下,对数据包的头部所包含的信息进行分析,决定其取舍和走向。
ACL的作用是过滤数据包,是有方向的,即入方向(inbound)和出方向 (outbound),入方向和出方向的判断,根据数据流动方向作为参照,并以实际控制需要设置相应的acl。
华为ACL的类型
1、基本ACL 2000-2999 针对的是:源IP地址
2、高级ACL 3000-3999 针对的是:源IP地址、目标IP地址、源端口、目标端口、协议号。
例如:(基本ACL): ACL 2001
0.0.0.255 //防止10网段通过,其中0.0.0.255是通配符,带0的表示精确匹配,1则是通配
rule 20 permit source 192.168.20.0 0.0.0.255 //允许20网段通过 ,默认都是通的
二、基础acl案例:
1. eNSP模型
2. 相关模型基本配置
2.1.PC端配置:IP地址192.168.1.1,192.168.2.1, 192.168.3.1
2.2.服务器:IP地址 192.168.22.1
2.3.交换机:
vlan batch 10 20 30
interface Ethernet0/0/1
port link-type access
port default vlan 10
#
interface Ethernet0/0/2
port link-type access
port default vlan 20
#
interface Ethernet0/0/3
port link-type access
port default vlan 30
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan all //( 2 to 4094 )
2.4.路由器:
interface GigabitEthernet0/0/1.10
dot1q termination vid 10
ip address 192.168.1.254 255.255.255.0
arp broadcast enable
interface GigabitEthernet0/0/1.20
dot1q termination vid 20
ip address 192.168.2.254 255.255.255.0
arp broadcast enable
interface GigabitEthernet0/0/1.30
dot1q termination vid 30
ip address 192.168.3.254 255.255.255.0
arp broadcast enable
interface GigabitEthernet0/0/0
ip address 192.168.22.254 255.255.255.0
3. ACL配置 (在路由器上配置)
acl 2000
rule 10 permit source 192.168.1.0 0.0.0.255
rule 20 deny source 192.168.2.0 0.0.0.255 //阻止192.168.2.0网段的数据通过
rule 30 permit source 192.168.3.0 0.0.0.255
rule 11 deny source 192.168.1.1 0.0.0.0 //阻止192.168.1.1这个站点的数据通过
rule 21 deny source 192.168.2.1 0.0.0.0 //阻止192.168.2.1这个站点的数据通过
acl 2001
rule 22 permit source 192.168.22.0 0.0.0.255
interface GigabitEthernet0/0/0
traffic-filter outbound acl 2000 //把acl 2000基本规则加到链路接口g0/0/0,控制他的出接口,即来自交换机那一侧的访问
traffic-filter inbound acl 2001 //把acl 2001基本规则加到链路接口g0/0/0,控制他的入接口,即来自服务器上的访问
4. 连通性测试
根据acl控制,第二台PC被deny了
PC>ping 192.168.22.1
Ping 192.168.22.1: 32 data bytes, Press Ctrl_C to break
Request timeout!
Request timeout!
Request timeout!
Request timeout!
Request timeout!
--- 192.168.22.1 ping statistics ---
5 packet(s) transmitted
0 packet(s) received
100.00% packet loss
[Router] display acl all //查询acl过滤的统计结果
Total quantity of nonempty ACL number is 2
Basic ACL 2000, 3 rules
Acl's step is 5
rule 10 permit source 192.168.1.0 0.0.0.255 (21 matches)
rule 20 deny source 192.168.2.0 0.0.0.255 (15 matches)
rule 30 permit source 192.168.3.0 0.0.0.255 (24 matches)
Basic ACL 2001, 1 rule
Acl's step is 5
rule 22 permit source 192.168.22.0 0.0.0.255 (180 matches)
三、高级acl案例:acl 3000-3999 针对的是五元素:源IP地址、目标IP地址、源端口、目标端口、协议号。
在此需要强调的是:高级与基本从功能的区别上看:高级acl控制的更细,包括:源IP地址、目标IP地址、源端口、目标端口、协议号。而基本acl只控制源IP地址。
从编号上看:2000-2999为低级,3000-3999。这是厂家定义的,规定的。
当acl 2000和acl3000时,分别提示如下:
[R1]acl 2000
[R1-acl-basic-2000] //basic即为基本,是有路由器自动提示的。
[R1]acl 3000
[R1-acl-adv-3000] //advance即为高级,是路由器自动的提示的。
高级ACL的控制的更精细
[R1]acl 3000 //本acl 3000只为体现高级acl 规则,实际控制根据实际情况,其基本套路与基本acl2000类似。
[R1-acl-adv-3000] rule 10 permit tcp source 192.168.1.1 0 destination 192.168.3.1 0 destination-port eq 8090
[R1-acl-adv-3000]rule 20 permit ip source 192.168.1.1 0 destination 192.168.2.0 0.0.0.255
[R1-acl-adv-3000]rule 30 deny ip source 192.168.1.1 0 destination any //在执行上述rule1 和rule 10两条规则后,拒绝放行192.168.1.1 发过来的IP协议包
interface GigabitEthernet0/0/1
traffic-filter inbound acl 3000 //在g0/0/1接口,入接口方向,执行acl 3000 。
注:acl控制列表在何处执行,是入接口还是出接口,要根据实际业务需要定。建议用Excel构建acl控制矩阵表加以分析,防止遗漏。一般而言,就近原则,即在被控制的设备最近的路由器上的接口,加以布置。
acl只对其他设备来或者去的数据流进行控制,自己的数据控制不了。同时需要注意的是,acl是部署在接口上的,包括物理接口和虚接口。根据实际情况定控制点。
其他:ICMP,Telnet(通过协议号控制),VRRP(通过协议号控制),FTP等等控制类似。
rule 40 deny icmp source 192.168.1.1 0.0.0.0 destination 192.168.2.1 0.0.0.0
telnet可在远程虚接口vty上执行:rule 50 deny source 192.168.1.253 0.0.0.0
//即拒绝来自网关的数据,或者同TCP 的23号端口来控制
rule 60 permit tcp source 192.168.1.253 destination 192.168.3.253 0.0.0.0 destination-port eq 23
从以上这些情况来看,基本ACL和高级ACL的命令相对是简单的,难在确认控制接口所在位置,通过TCP/IP协议原理以及数据包结构,编制合适的ACL控制命令。