转自http://raiven.spaces.live.com/blog/cns!18E4F5C859FA54B!361.entry自反访问列表(Reflexive-ACL)今天遇到了这样一个需求,某校园网要求校长室能够访问财务室,但反过来财务室不能访问校长室。听上去似乎很简单,但仔细一想,因为通信过程是双向的,如果只在三层设备上做策略,不用防火墙的话,用普通的ACL根本无法满足这样的需求。于是魏哥提出了使用自反ACL的方法,赶紧学习之: 自反访问表是CISCO提供给企业网络的一种较强的安全手段,利用自反访问表可以很好的保护企业内部网络,免受外部非法用户的攻击。
自反访问表的基本的工作原理是:
只能由内部网络始发的,外部网络的响应流量可以进入,
由外部网络始发的流量如果没有明确的允许,是禁止进入的。
1)Reflexive-ACL的工作流程: a.由内网始发的流量到达配置了自反访问表的路由器,路由器根据此流量的第三层和第四层信息自动生成一个临时性的访问表,
临时性访问表的创建依据下列原则: ●protocol不变,
●source-IP地址 , destination-IP地址严格对调,
●source-port,destination-port严格对调,
●对于ICMP这样的协议,会根据类型号进行匹配。 b.路由器将此流量传出,流量到达目标,然后响应流量从目标返回到配置了自反访问表的路由器。 c.路由器对入站的响应流量进行评估,只有当返回流量的第三、四层信息与先前基于出站流量创建的临时性访问表的第三、四层
信息严格匹配时,路由器才会允许此流量进入内部网络。
2)自反访问表的超时: a.对于TCP流量,当下列三种情况中任何一种出现时,才会删除临时性的访问表:
a)两个连续的FIN标志被检测到,之后5秒钟删除。 在正常情况下,TCP在断开连接时需要经历四次握手:
TCP是一个双向的协议,前两次握手,断开从source到destination的连接,
后两次握手,断开从destination到source的连接。 临时性访问表的删除之所以要延迟5秒,是为了给TCP连接的断开一个缓冲的时间,保证TCP能够平滑的断开连接。
b)RST标志被检测到,立即删除。
c)配置的空闲超时值到期(缺省是300秒)。
b.对于UDP,由于没有各种标志,所以只有当配置的空闲超时值(300秒)到期才会删除临时性的访问表。
3)解决自反访问表对FTP的缺陷: FTP的两种模式:
a)standard-mode(标准模式):
标准模式的特点:
1)ftp-server端使用两个wellknown端口,21和20 , 21号端口为控制信道,20号端口为数据信息。
2)数据由ftp-server端始发。
b)passive-mode(被动模式): 被动模式的特点:
1)ftp-server端使用一个wellknown端口和一个 >1024的随机端口,此例中为21和1800 , 21号端口为控制信道,1800号端口为数据信息。
2)数据由ftp-client端始发。
通过以上分析,我们发现对于被动模式的FTP,自反访问表可以正常工作(因为数据是由ftp-client端始发)
但是对于标准模式的FTP,自反访问表将不能正常工作
(因为数据由ftp-server端从20号端口始发,当ftp-server向client返回数据时,与临时性访问表不匹配)
利用ACL解决自反访问表对于FTP的缺陷: 例:
允许由内部192.168.10.0/24始发的HTTP,SMTP, TCP流量可以出去, 其余的流量全部拒绝。
RA:
!
ip access-list extended OUTBOUND
permit tcp 192.168.10.0 0.0.0.255 any eq www reflect CISCO
permit tcp 192.168.10.0 0.0.0.255 any eq smtp reflect CISCO
permit tcp 192.168.10.0 0.0.0.255 any eq reflect CISCO
!
!
ip access-list extended INBOUND
permit tcp any eq ftp-data 192.168.10.0 0.0.0.255
evaluate CISCO
!
int s0
ip access-group OUBOUND out
ip access-group INBOUND in
!
ip reflexive-list timeout 300 (设置临时性访问条目的生存期,缺省为300秒) |