网络层访问权限控制技术ACL详解(3)

发表于:2007-06-23来源:作者:点击数: 标签:
基于时间的ACL 在保证了 服务器 的数据 安全 性后,领导又准备对内部员工上网进行控制。要求在上班时间内(9:00-18:00)禁止内部员工浏览internet,禁止使用QQ、MSN。而且在2003年6月1号到2号的所有时间内都不允许进行上述操作。但在任何时间都可以允许以其它

   


  基于时间的ACL
  
  在保证了服务器的数据安全性后,领导又准备对内部员工上网进行控制。要求在上班时间内(9:00-18:00)禁止内部员工浏览internet,禁止使用QQ、MSN。而且在2003年6月1号到2号的所有时间内都不允许进行上述操作。但在任何时间都可以允许以其它方式访问Internet。天哪,这可叫人怎么活呀,但领导既然这样安排,也只好按指示做了。
  
  首先,让我们来分析一下这个需求,浏览internet现在基本上都是使用http或https进行访问,标准端口是TCP/80端口和TCP/443,MSN使用TCP/1863端口,QQ登录会使用到TCP/UDP8000这两个端口,还有可能使用到udp/4000进行通讯。而且这些软件都能支持代理服务器,目前的代理服务器主要布署在TCP 8080、TCP 3128(HTTP代理)和TCP1080(socks)这三个端口上。这个需求如下表所示:
  <STRONG><A href=网络层访问权限控制技术ACL详解(3)" />
  然后,让我们看看ACL应该在哪个位置配置比较好呢?由于是对访问Internet进行控制,涉及到的是公司内部所有的网段,这们这次把ACL就放到公司的Internet出口处。在RTA上进行如下的配置,就能够满足领导的要求了:
  
  
  
  
  
  time-range TR1
  
  absolute start 00:00 1 June 2003 end 00:00 3 June 2003
  
  periodic weekdays start 9:00 18:00
  
  exit
  
  ip aclearcase/" target="_blank" >ccess-list extend internet_limit
  
  deny tcp 10.1.0.0 0.0.255.255 any eq 80 time-range TR1
  
  deny tcp 10.1.0.0 0.0.255.255 any eq 443 time-range TR1
  
  deny tcp 10.1.0.0 0.0.255.255 any eq 1863 time-range TR1
  
  deny tcp 10.1.0.0 0.0.255.255 any eq 8000 time-range TR1
  
  deny udp 10.1.0.0 0.0.255.255 any eq 8000 time-range TR1
  
  deny udp 10.1.0.0 0.0.255.255 any eq 4000 time-range TR1
  
  deny tcp 10.1.0.0 0.0.255.255 any eq 3128 time-range TR1
  
  deny tcp 10.1.0.0 0.0.255.255 any eq 8080 time-range TR1
  
  deny tcp 10.1.0.0 0.0.255.255 any eq 1080 time-range TR1
  
  permit ip any any
  
  int s0/0
  
  ip access-group internet_limit out
  
  或int fa0/0
  
  ip access-group internet_limit in
  
  或者将ACL配置在SWA上,并
  
  int vlan 3
  
  ip access-group internet_limit out
  
  呵呵,现在让我们来看看在基于时间的访问列表中都有哪些新内容吧:
  
  time-range TR1:定义一个新的时间范围,其中的TR1是为该时间范围取的一个名字。
  
  absolute:为绝对时间。只使用一次。可以定义为1993-2035年内的任意一个时点。具体的用法请使用?命令查看。
  Periodic:为周期性重复使用的时间范围的定义。完整格式为periodic 日期关键字 开始时间 结束时间。其中日期关键字的定义如下所示:
  
  Monday 星期一
  
  Tuesday 星期二
  
  Wednesday 星期三
  
  Thursday 星期四
  
  Friday 星期五
  
  Saturday 星期六
  
  Sunday 星期天
  
  daily 每天
  
  weekdays 周一至五
  
  weekend 周末
  
  access-list 101 deny ip 10.1.0.0 0.0.255.255 any time-range TR1:注意这一句最后的time-range TR1,使这条ACL语句与time-range TR1相关联,表明这条语句在time-range TR1所定义的时间范围内才起作用。
  
  注意:给出三种配置位置是帮助大家深刻理解关于in/out的区别的。acl是对从一个接上流入(in)或流出(out)路由器的包进行过滤的。
  
  网管发问了,“你是怎么找到这些应用的所使用的端口的?”。呵呵,在如下文件中可以找到大多数应用的端口的定义:
  
  Win9x:%windir%\services
  
  WinNT/2000/XP:%windir%\system32\drivers\etc\services
  
  Linux:/etc/services
  
  对于在services文件中找不到端口的应用,可以在运行程序的前后,运行netstat –ap来找出应用所使用的端口号。
  单向访问控制
  
  使用IP ACL实现单向访问控制
  
  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条目数据包时,就会产生一条日志信息发到你的设备所定义的日志服务器上去。谢谢大家的捧场,本文到此为止。

原文转自:http://www.ltesting.net