Reflexive ACL
1.简介
防火墙一般使用的是状态侦听检测机制来保证内部网络的安全,内网主动发起的会话可以通过并记录会话信息以便于返回信息的通过;外网主动向内网发起的访问不能通过。实际生产环境中,为保证公司网络的安全,也是使用这种方式来实现的。
但是,在不用防火墙的时候能否实现这种要求呢?如果使用普通的ACL来限制外网访问内网,那么同时也将造成内网访问外网的信息不能返回,所以,普通的ACL不可行。需要一种更加可行的方法,首先拒绝外网对内网发起的所有连接,在内网主动访问外网的连接中,作好记录,打上标记,当外网回包时能够顺利进入内网。这样既保证了外网不能主动访问内网,也实现了内网主动访问外网的回包可以正常通过,不妨碍通信。Reflexive ACL就可以很好的实现这种功能。
Reflexive ACL需要两个ACL来配合,一个用于拒绝所有外网访问内网的请求;一个用于内网到外网的连接,记录外网访问内网的信息并打上标记,当外网回包时临时打开接口让其返回,其他不在记录中的连接请求全都拒绝。
限制
- 只支持命名ACL;
- 对于中途变换端口的连接会被拒绝,如:ftp;
- 需要记录的信息只能通过一条ACL来匹配,多者作废;
2.应用
2.1.实验拓扑
说明:
PC1用一台路由器来模拟,网关指向R1的fa0/0,R1为内网的网关路由器,直接与外部网络相连,R2模拟一个外部网络。内部网络使用网段192.168.1.0/24,外部网络使用网段12.12.12.0/24.本实验达到的目的是让PC1可以正常访问外网(即内网主动发起的连接可以返回),R2不能主动与内部网络的PC1通信(即外网不能主动访问内网)。
2.2.实验步骤
2.2.1.基本配置
PC1配置
PC1(config)#inter fa0/0 PC1(config-if)#ip add 192.168.1.1 255.255.255.0 PC1(config-if)#no shut PC1(config)#no ip routing PC1(config)#ip default-gateway 192.168.1.254 |
R1配置
R1(config)#inter fa0/0 R1(config-if)#ip add 192.168.1.254 255.255.255.0 R1(config-if)#no shut R1(config)#inter fa0/1 R1(config-if)#ip add 12.12.12.1 255.255.255.0 R1(config-if)#no shut R1(config-if)router ospf 1 R1(config-router)#router-id 1.1.1.1 R1(config-router)# network 12.12.12.0 0.0.0.255 area 0 R1(config-router)# network 192.168.1.0 0.0.0.255 area 0 |
注:
试验中使用ospf协议来作为连通内外的协议,当然也可以使用其他路由协议。
R2配置
R2(config)#inter fa0/0 R2(config-if)#ip add 12.12.12.2 255.255.255.0 R2(config-if)#no shut R2(config)#router ospf 1 R2(config-router)#router-id 2.2.2.2 R2(config-router)#network 12.12.12.0 0.0.0.255 a 0 |
验证连通性
----------------------------------内网PC1到外网R2的连通性测试--------------------- PC1#ping 12.12.12.2 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 12.12.12.2, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 56/68/96 ms ------------------------------------外网R2到内网的PC1的连通性测试------------------ R2#ping 192.168.1.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds: .!!!! Success rate is 80 percent (4/5), round-trip min/avg/max = 64/338/1116 ms R2#telnet 192.168.1.1 Trying 192.168.1.1 ... Open User Access Verification Password: PC1> //telnet访问也正常 PC1>exit [Connection to 192.168.1.1 closed by foreign host] |
经测试,内外网连通性正常。
2.2.2.配置inbound方向的ACL
拒绝所有外网访问内网的流量
R1(config)#ip access-list extended IN_FILTER R1(config-ext-nacl)# permit ospf any any R1(config-ext-nacl)#evaluate FILTER |
拒绝所有外网主动访问内网的流量,并为要进入的流量打上FILTER标记(需要在outboundACL上调用),只有此标记的流量才准许通过。Ospf路由协议的流量一定要放行,否则路由不通,就注定是失败的实验,使用其他路由协议时也要注意此问题。
接口调用
R1(config)#inter fa0/1 R1(config-if)#ip access-group IN_FILTER in |
测试
-------------------------------------外网主动访问内网----------------------------- R2#ping 192.168.1.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds: UUUUU Success rate is 0 percent (0/5) R2#telnet 192.168.1.1 Trying 192.168.1.1 ... % Destination unreachable; gateway or host down R2# //访问被拒绝。 ------------------------------------内网主动访问外网----------------------------------- PC1#ping *Jun 10 09:50:15.455: %SYS-5-CONFIG_I: Configured from console by console PC1#ping 12.12.12.2 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 12.12.12.2, timeout is 2 seconds: ..... Success rate is 0 percent (0/5) PC1#telnet 12.12.12.2 Trying 12.12.12.2 ... % Connection timed out; remote host not responding //访问同样被拒绝 |
如上,应用普通ACL策略拒绝外网访问后,虽然达到外网不能访问内网的目的,但是内网主动访问外网的流量回来时也被拒绝了。
2.2.3.配置outbound方向的ACL
R1(config)#ip access-list extended OUT_FILTER R1(config-ext-nacl)#permit tcp any any eq telnet reflect FILTER timeout 60 |
说明:
- 为内网主动访问外网的telnet流量打上FILTER标记;
- 设置timeout为60s,此为内网访问外网时为返回的包打开的缺口的时间。TCP中,会话结束后会自动关闭缺口。但是在UDP中,需要根据timeout来判断两端数据是否传送完毕,缺省timeout为300s,300s之后才关闭缺口,为安全起见,建议手动指定,缩短打开缺口的时间。
接口调用
R1(config)#inter fa0/1 R1(config-if)#ip access-group OUT_FILTER out |
测试
--------------------------------------------内网主动访问外网--------------------------------------- PC1#ping 2.2.2.2 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds: UUUUU Success rate is 0 percent (0/5) PC1#telnet 2.2.2.2 Trying 2.2.2.2 ... Open User Access Verification Password: R2> |
由于只给telnet打上了标记,所以内网主动访问外网的流量只有telnet能够返回,ping流量是不能通过的。