资源预览内容
第1页 / 共9页
第2页 / 共9页
第3页 / 共9页
第4页 / 共9页
第5页 / 共9页
第6页 / 共9页
第7页 / 共9页
第8页 / 共9页
第9页 / 共9页
亲,该文档总共9页全部预览完了,如果喜欢就下载吧!
资源描述
【访问控制】自反访问控制列表Reflexive Access Lists一个面临的控制问题我们首先看下图有这样一个要求,就是我们要允许内部的机器可以访问外部,可是不允许外部的主机访问内部,有人说,这个简单,用一个访问控制列表,在Seial1 上做如下配置router(config)#access-list 100 deny ip any any router(config-if)#ip access-group 100 in 这样做的结果是外面肯定不能访问内部了,可是我们从内部出去的数据包也甭想回来了,所以这种做法不行我们可以继续开动脑筋,我们知道TCP 在建立连接之前,有一个三次握手过程,在TCP 的包头里面有一个标志位,我们的扩展访问控制列表可以对这个标志位进行控制。我们分析下, 内部主机向外发起连接的时候,SYN 位为 1,而外部的主机回应包里面为SYN=1 ACK=1 而一个外部主机要想内部发起连接,他的第一个包只是SYN=1 ,而 ACK=0 ,所以,我们可以通过这种方式来做/ 主动发起的TCP 、 ACK=0 回应的 TCP ack=1Router(config)#access-list 100 permit tcp any any ack 或者Router(config)#access-list 100 permit tcp any any established 然后应用到接口上router(config-if)#ip access-group 100 in 这个方法是可以,但是如果不是TCP 的应用,是UDP 的程序该如何办?很显然,通过这个方式是解决不了的。我们用自反访问列表就可以很好的解决这个问题2自反访问控制列表自反访问列表的英文名字是Reflexive Access Lists,Reflexive 这个词我们翻译成自反,如何自反呢?就是他会根据一个方向的访问控制列表,自动创建出一个反方向的控制列表,那么, 创建一个什么样的控制列表呢?就是和原来的控制列表IP 的源地址和目的地址颠倒,并且源端口号和目的端口号完全相反的一个列表。并且还有一定的时间限制,过了时间,就会超时, 这个新创建的列表就会消失,这样大大增加了安全性。具体案例:拓扑图如下需求如下:R1 模仿内网, R3 模仿外网,现在要求R1 可以远程登录到R3,但是不允许R3 发起任何到R1的连接。三台路由器初始配置如下:R1#sh run interface Serial0 ip address 10.1.1.1 255.255.255.0 router ospf 1 log-adjacency-changes network 0.0.0.0 255.255.255.255 area 0 line vty 0 4 password cisco login R2#sh run interface Serial0 ip address 10.1.1.2 255.255.255.0 clockrate 64000 interface Serial1 ip address 192.168.1.1 255.255.255.0 clockrate 64000 router ospf 1 log-adjacency-changes network 0.0.0.0 255.255.255.255 area 0 R3#sh run interface Loopback0 ip address 3.3.3.3 255.255.255.0 interface Ethernet0 no ip address shutdown interface Serial0 no ip address interface Serial1 ip address 192.168.1.2 255.255.255.0 router ospf 1 log-adjacency-changes network 0.0.0.0 255.255.255.255 area 0 line vty 0 4 password cisco login R1 上的路由表R1#sh ip route Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2 i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area * - candidate default, U - per-user static route, o - ODR P - periodic downloaded static routeGateway of last resort is not set 3.0.0.0/32 is subnetted, 1 subnetsO 3.3.3.3 110/129 via 10.1.1.2, 00:03:42, Serial0 10.0.0.0/24 is subnetted, 1 subnets C 10.1.1.0 is directly connected, Serial0 O 192.168.1.0/24 110/128 via 10.1.1.2, 00:03:42, Serial0测试一下R1#ping 3.3.3.3 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 3.3.3.3, timeout is 2 seconds: ! Success rate is 100 percent (5/5), round-trip min/avg/max = 60/62/68 msR1# R1#telnet 3.3.3.3 Trying 3.3.3.3 . Open User Access Verification Password: R3 在 R3 上测试一下:R3#ping 10.1.1.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds:! Success rate is 100 percent (5/5), round-trip min/avg/max = 60/60/60 msR3#telnet 10.1.1.1 Trying 10.1.1.1 . Open User Access Verification Password: R1 路由是通畅的,R1 可以正常的远程登录到R3,因为没有作任何控制,所以 R3 照样可以访问R1 解决方案1:使用扩展访问控制列表, 控制 TCP 标志位在 R2 上做如下配置interface Serial1 ip address 192.168.1.1 255.255.255.0 ip access-group 100 in clockrate 64000 access-list 100 permit tcp any any established /用 ACK 也行access-list 100 permit ospf any any /保持 ospf 路由协议正常工作R1 上做测试:R1#ping 3.3.3.3 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 3.3.3.3, timeout is 2 seconds: . Success rate is 0 percent (0/5) R1#telnet 3.3.3.3 Trying 3.3.3.3 . Open User Access Verification Password: R3 这个时候,我们发现不能ping 通了,原因是什么呢?access-list 100 permit tcp any any established access-list 100 permit ospf any any 我们在访问控制列表中没有允许ICMP 协议,所以返回的数据包在R2 上面被拒绝掉了,但是telnet 成功了,因为我们在进来的访问控制列表里允许了TCP。在 R3 上做测试:R3#ping 10.1.1.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds:U.U.U Success rate is 0 percent (0/5) R3#telnet 10.1.1.1 Trying 10.1.1.1 . % Destination unreachable; gateway or host down 我们看 R3 是不能访问R1 的任何东西了,为什么呢?ping 不通的原因是我们在R2 上阻止了ICMP,而 telnet 为什么不行呢, 虽然我们允许了TCP 包,但是因为是R3 向 R1 发起初始化连接,TCP 里面的标志位SYN=1 ,ACK=0 ,而我们的访问控制列表的关键词established定义了只有ACK=1 的包才能被允许,所以,这个初始连接包就被拒绝了,那么我们这种做法就满足了试验要求。解决方案2:使用自反访问控制列表在 R2 做如下配置interface Serial0 ip address 10.1.1.2 255.255.255.0 ip access-group tcp-out in clockrate 64000 ! interface Serial1 ip address 192.168.1.1 255.255.255.0 ip access-group tcp-in in clockrate 64000 ip access-list extended tcp-in permit ospf any any evaluate telnet ip access-list extended tcp-out permit ospf any any permit tcp any any reflect telnet 需要注意以下几点1)自反访问控制列表只能和基于名字的扩展访问控制列表一起工作2)他自己不能工作,必须寄生于扩展访问控制列表,并且有两个访问列表才行,也就是一个列表创建自反列表例如ip access-list extended tcp-out permit tcp any any reflect telnet 注意关键词refect ,当由符合tcp any any 的数据流通过的时候,就会产生一个名字叫做telnet的自反列表,但是它是产生而已,还不能被使用,因为没与应用到接口上令外一个列表进行调用ip access-list extended tcp-in evaluate telnet 在进来的访问列表里面,用关键字evaluate 来调用已经产生的telnet 自反列表。在 R1 上做测试R1en R1#telnet 3.3.3.3 Trying 3.3.3.3 . Open User Access Verification Password: R3 我们看看R2 上:R2#show access-lis
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号