A公司准备实行薪资的不透明化管理,由于目前的薪资收入数据还放在财务部门的Vlan中,所以公司不希望市场和研发部门能访问到财务部Vlan中的数据,另一方面,财务部门做为公司的核心管理部门,又希望能访问到市场和研发部门Vlan内的数据。我们的网管在接到这个需求后就在SWA上做了如下的配置: 

ip access-list extend fi-access-limit
deny ip any 10.1.4.0 0.0.0.255
permit ip any any
int vlan 5
ip access-group fi-access-limit in
int vlan 6
ip access-group fi-access-limit in


    配置做完后,测试了一下,市场和研发部门确实访问不到财务部了,刚准备休息一下,财务部打电话过来说为访问不到市场与研发部门的数据了。这是怎么回事呢? 

    让我们回忆一下,在两台主机A与B之间要实现通讯,需要些什么条件呢?答案是既需要A能向B发包,也需要B能向A发包,任何一个方向的包被阻断,通讯都不能成功,在我们的例子中就存在这样的问题,财务部访问市场或研发部门时,包到到市场或研发部门的主机,由这些主机返回的包在到达路由器SWA时,由于普通的ACL均不具备检测会话状态的能力,就被deny ip any 10.1.4.0 0.0.0.255这条ACL给阻断了,所以访问不能成功。 

    要想实现真正意义上的单向访问控制应该怎么办呢?我们希望在财务部门访问市场和研发部门时,能在市场和研发部门的ACL中临时生成一个反向的ACL条目,这样就能实现单向访问了。这里就需要使用到反向ACL技术。我们可以按照如下配置实例就可以满足刚才的那个单向访问需求: 

ip access-list extend fi-main
permit tcp any 10.1.0.0 0.0.255.255 reflect r-main timeout 120
permit udp any 10.1.0.0 0.0.255.255 reflect r-main timeout 200
permit icmp any 10.1.0.0 0.0.255.255 reflect r-main timeout 10
permit ip any any
int vlan 4
ip access-group fi-main in
ip access-list extend fi-access-limit
evaluate r-main
deny ip any 10.1.4.0 0.0.0.255
permit ip any any
int vlan 5
ip access-group fi-access-limit in
int vlan 6
ip access-group fi-access-limit in


    现在对反向ACL新增加的内容一一解释如下: 

    新增了一个ACL(fi-main)并应用在具备访问权限的接口下(财务部所在的vlan4)的in方向,使用该acl中具备reflect关键字的acl条目来捕捉建立反向ACL条目所需要的信息。我们将该ACL称为主ACL。 

    reflect r-main timeout xxx:其中的reflect关键字表明该条目可以用于捕捉建立反向的ACL条目所需要的信息。r-main是reflect组的名字,具备相同reflect组名字的所有的ACL条目为一个reflect组。timeout xxx表明由这条ACL条目所建立起来的反向ACL条目在没有流量的情况下,多长时间后会消失(缺省值为300秒),单位为秒。 

    evaluate r-main:我们注意到在fi-access-limit(我们把它称为反ACL)增加了这样一句,这一句的意思是有符合r-main这个reflect组中所定义的acl条目的流量发生时,在evaluate语句所在的当前位置动态生成一条反向的permit语句。 

  反向ACL的局限性: 


    必须使用命名的ACL,其实这不能叫局限性,应该算注意事项吧; 


    对多通道应用程序如h323之类无法提供支持。 

    好了,到现在我们从IP ACL的基础知识讲起,中间讲述了标准的IP ACL、扩展的IP ACL、基于名字的ACL、基于时间的ACL、反向ACL等诸多内容,这些ACL在ios的基本IP特性集中都能提供支持,在一般的企业网或校园网中也应该完全够用了。如果各位看官还需要了解更加深入的知识,如CBAC之类能够为多通道应用程序提供良好支持的配置技术的,请参考《Cisco IOS Security Configuration Guide,Part 3: Traffic Filtering and Firewalls》。 

“站住!”,70正想开溜,只听那网管一声大吼,“有什么办法能知道ACL都过滤了从哪儿来,到哪儿去的流量??”。呵呵,刚才忘记说了,你只需要在需要记录的acl条目的最后加一个log关键字,这样在有符合该ACL条目数据包时,就会产生一条日志信息发到你的设备所定义的日志服务器上去。谢谢大家的捧场,本文到此为止。使用IP ACL实现单向访问控制