Cisco路由器中有两种常用访问控制列表(Access-List),一种是标准访问列表,另一种是扩展访问列表。前者主要用于基于源和目标地址的数据包过滤,而后者用于基于目标地址、源地址和网络协议及其端口号等的数据包过滤。随着网络技术的发展和用户要求的变化,从IOS 12.0开始,Cisco路由器新增加了一种基于时间的访问控制。通过它,可以根据一天中不同时间或者根据一周中的不同日期(当然也可以二者结合起来)控制网络数据包的转发,给网管人员的日常维护带来很大便利。
这种基于时间的访问列表是在原来标准访问列表和扩展访问列表中加入有效的时间范围来更合理有效地控制网络的。它先定义一个时间范围,然后在原来的各种访问列表的基础上应用它,对于编号访问表和名称访问表均适用。
命令及参数
可以用“time-range”命令来指定时间范围的名称,然后用“absolute”命令或者一个或多个 “periodic”命令来具体定义时间范围,IOS命令格式为:
time-range time-range-name absolute [start time date] [end time date] periodic days-of-the week hh:mm to [days-of-the week] hh:mm
time-range:用来定义时间范围;
time-range-name:时间范围名称,用来标识时间范围,以便在后面的访问列表中引用;
absolute:该命令用来指定绝对时间范围。它后面紧跟start和 end两个关键字。在两个关键字后面的时间要以24小时制和“hh: mm(小时:分钟)”表示,日期要按照“日/月/年”形式表示。这两个关键字也可以都省略。如果省略start及其后面的时间,表示与之相联系的permit 或deny语句立即生效,并一直作用到end处的时间为止; 若省略end及其后面的时间,表示与之相联系的permit 或deny语句在start处表示的时间开始生效,并且永远发生作用(当然如把访问列表删除了的话就不会起作用了)。
为了便于理解,下面看两个例子。 如果要表示每天早8点到晚6点开始起作用,可以用这样的语句:
absolute start 8∶00 end 18∶00
再如,我们要使一个访问列表从2003年1月1日早8点开始起作用,直到2003年1月10日晚23点停止作用,命令如下:
absolute start 8∶00 1 January 2003 end 23∶00 10 January 2003
这样我们就可以用这种基于时间的访问列表来实现,而不用半夜跑到办公室去删除那个访问列表了。接下来,介绍一下periodic命令及其参数。
一个时间范围只能有一个absolute语句,但是可以有几个periodic语句。
periodic:主要以星期为参数来定义时间范围。它的参数主要有Monday、Tuesday、Wednesday、Thursday、Friday、Saturday、Sunday中的一个或者几个的组合,也可以是daily(每天)、weekday(周一到周五)或者weekend(周末)。
我们还是来看几个具体的例子。比如表示每周一到周五的早9点到晚10点半,命令如下:
periodic weekday 9∶00 to 22∶30
每周一早7点到周二的晚8点可以这样表示:
periodic Monday to Tuesday 20∶00
在把时间范围定义清楚后,我们来看看如何在实际情况下应用这种基于时间的访问列表。
实例分析
在上图所示的网络中,路由器有两个以太网接口E0和E1,分别连接着202.111.170.0和202.222.100.0两个子网络,其中202.111.170.50和202.222.100.100分别是Web服务器1和Web服务器2。还有一个串口S1,连入Internet。为了让202.111.170.0子网的公司员工在工作时间不能进行Web浏览,从2000年12月1日1点到2000年12月31日晚24点这一个月中,只有在周六早7点到周日晚10点才可以通过公司的网络访问Internet。我们做如下的基于时间的访问控制列表来实现这样的功能:
Router# config t
Router(config)# interface ethernet 0
Router(config-if)#ip access-group 101 in
Router(config-if)#time-range http
Router(config-if)#absolute start 1∶00 1 December 2000 end 24∶00 31
December 2000 periodic Saturday 7∶00 to Sunday 22∶00
Router(config-if)#ip access-list 101 permit tcp any any eq 80 http
我们在一个扩展访问列表的基础上再加上时间控制就达到了目的。因为要控制Web访问的协议,所以必须用扩展列表,也就是说,编号要在100~199之间。详细方法可参考其他关于Cisco或者CCNA的基础文档。我们定义这个时间范围的名称是http,在列表中的最后一句方引用了它。我们再看下面一个例子。
网络结构同上例,现在假设我们的访问要求变了,Web服务器2(IP:202.222.100.100)上放着新年贺岁版的公司主页,希望在2001年12月31日24点前,Internet的用户访问的是服务器Web1(IP:202.111.170.50)上的主页内容,而不能访问Web2上的内容。在此之后的新年里,访问的是新年版主页而不能访问旧版本的主页。下面,我们利用带有时间控制的访问列表来自动实现这个功能,而不必让网管员在新年半夜时手动删除。列表内容如下:
Router# config t
Router(config)#interface serial 0
Router(config-if)#ip access-group web in
Router(config-if)#
time-range changewebabsolute end 24∶00 31 December 2000
Router(config-if)#ip access-list extended web
permit tcp any host 202.111.170.50 eq 80 changeweb
deny tcp any host 202.222.100.100 eq 80 changeweb
permit tcp any host 202.222.100.100 eq 80
第一句是进入端口控制模式。第二句是应用名称访问列表Web,并且是用在Serial 0的入口方向,即数据流入路由器的时候做协议控制分析。第三句定义一个时间范围名称changeweb。第四句定义扩展名称访问列表Web。第五、六句表示在新年前,只能允许访问Web1。第七句是允许所有到Web2的Web访问。表面看来第七句是在没有时间限制的情况下全部允许Web2的访问请求。实际上,路由器中访问控制列表的每个表项的顺序是很重要的,它是从上到下执行的,在新年之前,也就是第五、六句起左右的时候,访问Web2的请求已经被禁止了,所以,第七句就没有用了,而在新年之后第五、六句失效了,第七句才发挥它的作用,允许所有对Web2的访问请求。
看到这儿,读者是否感觉到这种方法的作用了?合理有效地利用基于时间的访问控制列表,可以更有效、更安全、更方便地保护我们的内部网络,这样您所在的网络才会更安全,网络管理员也会更轻松!
配置实例:
要想使基于时间的ACL生效需要我们配置两方面的命令:
1、定义时间段及时间范围。
2、ACL自身的配置,即将详细的规则添加到ACL中。
3、宣告ACL,将设置好的ACL添加到相应的端口中。
网络环境介绍:
我们采用如图所示的网络结构。路由器连接了二个网段,分别为172.16.4.0/24,172.16.3.0/24。在172.16.4.0/24网段中有一台服务器提供FTP服务,IP地址为172.16.4.13。
配置任务:只容许172.16.3.0网段的用户在周末访问172.16.4.13上的FTP资源,工作时间不能下载该FTP资源。
路由器配置命令:
time-range softer 定义时间段名称为softer
periodic weekend 00:00 to 23:59 定义具体时间范围,为每周周末(6,日)的0点到23点59分。当然可以使用periodic weekdays定义工作日或跟星期几定义具体的周几。
access-list 101 deny tcp any 172.16.4.13 0.0.0.0 eq ftp time-range softer 设置ACL,禁止在时间段softer范围内访问172.16.4.13的FTP服务。
access-list 101 permit ip any any 设置ACL,容许其他时间段和其他条件下的正常访问。
int e 1 进入E1端口。
ip access-group 101 out 宣告ACL101。
基于时间的ACL比较适合于时间段的管理,通过上面的设置172.16.3.0的用户就只能在周末访问服务器提供的FTP资源了,平时无法访问。