1.概述 随着Internet/Intranet的日益发展,几乎每个公司都在建设自己的局域网,并且越来越多的公司连接到互联网,从而网络安全越来越被人们所重视。许多网络厂商推出防火墙产品,用来保证网络安全,包括抵抗恶意的攻击;过滤互联网上不安全的信息流;限制某些用户或某些网络应用的使用等等。访问控制列表(ACL,Access Control List)同样可以实现以上功能。它是基于包过滤的软件防火墙,是一系列语句的有序集合,根据网络中每个数据包所包含的信息的内容,来决定允许还是拒绝报文通过某个接口。访问控制列表不仅可以限制网络流量、提高网络性能,而且还可以限制特定协议的流量,在该文中重点讲述的是访问控制列表作为网路安全访问的基本手段如何实施。笔者将根据自己的从业经验,基于Cisco路由器给出访问控制列表的具体实现过程。
2.访问控制列表的工作过程及其配置 访问控制列表的主要作用是基于已经建立的标准来允许或拒绝报文流,从而它可以实现对数据报文的访问控制。它是一组有permit(允许)和deny(拒绝)语句组成的条件列表, 可以让管理员以基于数据报文的源IP地址、目的IP地址和协议类型的方式来控制网络的数据流向,下面先看访问控制列表的工作过程。
由图1,我们看看一个数据包如何通过路由器。数据包由接口进入路由器,进入后,首先察看路由表,看数据包的目的地址是否在路由表条目中,如果存在,则根据路由表送至相应的接口,否则数据包丢弃。到达相应的接口后,看是否有访问控制列表配置在接口上,如果有,就根据访问列表的规则,判断是不是允许该数据包通过;如果数据包不符合列表所有规则,那么就被拒绝丢弃,不能通过路由器。如果没有访问列表,数据包顺利通过。
 图1 数据包出口操作
访问控制列表分为标准访问列表和扩展访问列表,它们的基本语法如下: Router(config)#access-list ACL_number {permit|deny} protocol source [source-wildcard] [source-port] [destination] [destination-wildcard] [destination-port] [log]
例如,允许源ip地址在192.168.1.0网段内的数据包通过路有器,标准访问列表配置如下: Router(config)#access-list 1 permit ip 192.168.1.0 0.0.0.255
再如,拒绝源ip地址在192.168.1.0网段内机器telnet服务器192.168.2.100,扩展访问列表配置如下: Router(config)#access-list 101 deny tcp 192.168.1.0 0.0.0.255 192.168.2.100 0.0.0.0 eq 23
一个访问控制列表可以有多条语句。列表配置完毕,还要把它挂到接口上去。如果挂到E0口,而且是对出E0口的数据包做限制,则操作如下: Router(config)#interface e0 Router(config-if)#ip access-group 1 out 笔者曾经给某证券公司做过一个小型网络系统,网络拓扑图如图2,要求如下:
不允许网络202.15.12.0内的机器登录172.16.8.20的Ftp(端口号21)服务,但可以获取172.16.8.20的其他网络服务;网络202.15.12.0内的机器能够获取172.16.8.10的Web服务(端口号80);其它访问流量都被拒绝。配置如下:
Router(config)#access-list 111 deny tcp 202.15.12.0 0.0.0.255 172.16.8.20 0.0.0.0 eq 21 Router(config)#access-list 111 permit ip 202.15.12.0 0.0.0.255 172.16.8.20 0.0.0.0 Router(config)#access-list 111 permit tcp 202.15.12.0 0.0.0.255 172.16.8.10 0.0.0.0 eq 80 Router(config)#interface e0 Router(config-if)#ip access-group 111 out

图2 网络拓扑图(路由器一侧为证券公司网络)
3.访问控制列表的在过滤病毒中的应用 相信不少用户的电脑都或多或少遭到病毒的侵犯,而病毒中最为流行又最让人头疼的当属蠕虫(Worm)病毒了。蠕虫是通过分布式网络来扩散传播特定的信息或错误,进而造成网络服务遭到拒绝并发生死锁。它们生存在网络的节点之中,依靠系统的漏洞在网上大量繁殖,造成网络阻塞之类的破坏。可以依靠杀毒软件来对付它们,也可以通过访问控制列表,封锁蠕虫病毒传播、扫描、攻击用到的端口,事前就把蠕虫病毒拒之门外。我们针对前一段时间闹的沸沸扬扬冲击波(Worm.Blaster)病毒,在路由器上作下面的配置。
首先控制Blaster蠕虫的传播,封锁tcp的4444端口和udp的69端口。
Router(config)#access-list 110 deny tcp any any eq 4444 Router(config)#access-list 110 deny udp any any eq 69
然后控制Blaster蠕虫的扫描和攻击,封锁tcp和udp的135、139、445、593等端口。
Router(config)#access-list 110 deny tcp any any eq 135 Router(config)#access-list 110 deny udp any any eq 135 Router(config)#access-list 110 deny tcp any any eq 139 Router(config)#access-list 110 deny udp any any eq 139 Router(config)#access-list 110 deny tcp any any eq 445 Router(config)#access-list 110 deny udp any any eq 445 Router(config)#access-list 110 deny tcp any any eq 593 Router(config)#access-list 110 deny udp any any eq 593 Router(config)#access-list 110 permit ip any any
该访问控制列表的最后一条一定要加上,因为每个访问控制列表都暗含着拒绝所有数据包,而且列表110前面都是deny语句,如果没有最后这一条允许其它所有数据包,那么无论什么样的数据包都不能通过路由器进入公司局域网,同样公司局域网也不能访问外网。
列表创建完毕,可以挂到接口上了。
Router(config)#interface s0 Router(config-if)#ip access-group 110 in
这样访问控制列表就可以阻止外来蠕虫病毒的恶意扫描和攻击了,一定程度上提高了网络抵抗病毒的能力,保证了网络的安全。
4.基于时间的访问控制列表的应用 从IOS12.0开始,Cisco路由器新增加了一种基于时间的访问列表。它首先要定义一个时间范围,然后在原来的访问列表的基础上应用它。通过它,可以根据一天中的不同时间或者根据一星期中的不同日期控制网络数据包的转发。
先看一下它的基本语法:
Router(config)# time-range time-range-name
该命令表示进入time-range模式,并给该时间范围起个名字。 Router(config-time-range)# absolute [start time date] [end time date] Router(config-time-range)# periodic days-of-the-week hh:mm to [days-of-the-week] hh:mm
上面这两条命令限制访问控制列表的生效时间。另外,periodic语句可以有多条,但是absolute语句只能有一条。
再回到文中提到的证券公司,该公司要求员工在2004年4月1日到2004年6月1日的周一到周五上班时间(9:00-17:00)不能浏览Web站点,禁止使用QQ和MSN。我们分析如下:Web浏览通常使用HTTP或者HTTPS进行访问,端口号是80(TCP)和443(TCP),MSN使用1863端口(TCP),QQ登录使用8000端口(TCP/UDP),还有可能用到4000(UDP)进行通讯。另外这些软件都支持代理服务器,目前代理服务器主要部署在TCP8080,TCP3128和TCP1080这三个端口上。所以有如下配置:
Router(config)# time-range securities-closing -time Router(config-time-range)# absolute start 00:00 1 April 2004 end 23:59 1 June 2004 Router(config-time-range)# periodic Monday 09:00 to Friday 17:00 Router(config)#access-list 112 deny tcp 172.16.8. 0 0.0.0.255 any eq 80 time-range securities-closing -time Router(config)#access-list 112 deny tcp 172.16.8. 0 0.0.0.255 any eq 443 time-range securities-closing -time Router(config)#access-list 112 deny tcp 172.16.8. 0 0.0.0.255 any eq 1863 time-range securities-closing -time Router(config)#access-list 112 deny tcp 172.16.8. 0 0.0.0.255 any eq 8000 time-range securities-closing -time Router(config)#access-list 112 deny udp 172.16.8. 0 0.0.0.255 any eq 8000 time-range securities-closing -time Router(config)#access-list 112 deny udp 172.16.8. 0 0.0.0.255 any eq 4000 time-range securities-closing -time Router(config)#access-list 112 deny tcp 172.16.8. 0 0.0.0.255 any eq 3128 time-range securities-closing -time Router(config)#access-list 112 deny tcp 172.16.8. 0 0.0.0.255 any eq 8080 time-range securities-closing -time Router(config)#access-list 112 deny tcp 172.16.8. 0 0.0.0.255 any eq 1080 time-range securities-closing -time Router(config)#access-list 112 permit ip any any Router(config)#interface e1 Router(config-if)#ip access-group 112 out
上面的例子可以看出,合理有效的利用基于时间的访问控制列表,可以更合理、更有效地控制网络,更安全、更方便的保护我们的内部网络。这样网络安全性提高了,也方便了网络管理员的管理。
5.结束语 尽管我们有许多其它的保证网络安全的措施,尽管访问控制列表不能够完全保证网络的安全,但是由于访问控制列表的配置简单易行,能够起到一定的防范作用,减轻网络防火墙的负担,而且不需要增加额外的硬件投资,所以它越来越引起网络管理人员和网络工程师的重视。
|