一、项目背景 ACL原理与配置方式
(一)ACL定义
ACL(Access Control List)全称为“访问控制列表”,网络中常说的ACL是IOS/NOS等网络操作系统所提供的一种访问控制技术,初期仅在路由器上支持,现在已经扩展到三层交换机,部分最新的二层交换机也开始提供ACL支持。
1.基本原理
ACL使用包过滤技术,在路由器上读取第三层及第四层包头中的信息,如源地址、目的地址、源端口、目的端口等,根据预先定义好的规则对包进行过滤,从而达到访问控制的目的。如图5-2所示。
2.ACL的功能
网络中的节点分为资源节点和用户节点两大类,其中资源节点提供服务或数据,而用户节点访问资源节点所提供的服务与数据。ACL的主要功能就是一方面保护资源节点,阻止非法用户对资源节点的访问,另一方面限制特定的用户节点对资源节点的访问权限。
3.配置ACL的基本原则
在实施ACL的过程中,应当遵循如下两个基本原则:
(1)最小特权原则。
只给受控对象完成任务所必须的最小的权限。
(2)最靠近受控对象原则。
所有的网络层访问权限控制尽可能离受控对象最近。
4.局限性
由于ACL是使用包过滤技术来实现的,过滤的依据是第三层和第四层包头中的部分信息,这种技术具有一些固有的局限性,如无法识别到具体的人,无法识别到应用内部的权限级别等。因此,要达到端到端(end to end)的权限控制目的,需要和系统级及应用级的访问权限控制结合使用。
具体来说,ACL是应用在路由器(或三层交换机)接口的指令列表,这些指令应用在路由器(或三层交换机)的接口处,以决定哪种类型的通信流量被转发、哪种类型的通信流量被阻塞。图5-3显示了ACL的工作过程。
(二)ACL的分类
ACL分为标准ACL、扩展ACL和基于时间的ACL。
1.标准ACL
标准ACL(Standard ACL)的配置分两步。
1定义访问控制列表,其命令格式如下:
Router(config)# access-list access-list-number { permit | deny } source [source-wildcard] [log]
例如:
Router(config)#access-list 1 permit 10.0.0.0 0.255.255.255
功能说明:
(1)为每个ACL分配唯一的编号access-list-number,access-list-number与协议有关,见表5-1,标准ACL在1到99之间,这里为1。
协议(Protocol) |
ACL表号的取值范围 |
---|---|
IP(Internet协议) |
1-99 |
Extended IP(扩展Internet协议) |
100-199 |
AppleTalk |
600-699 |
IPX(互联网数据包交换) |
800-899 |
Extended IPX(扩展互联网数据包交换) |
900-999 |
IPX service Advertising Protocol(IPX服务通告协议) |
1000-1099 |
(2)检查源地址(Checks Source address),由source、source-wildcard组成,以决定源网络或地址。source-wildcard为通配符掩码。通配符掩码(反码)= 255.255.255.255–子网掩码,它是一个32比特位的数字字符串。0表示“检查相应的位”,1表示“不检查(忽略)相应的位”,这里,网络号为:10.0.0.0,通配符掩码(反码)为:0.255.255.255;特殊的通配符掩码表示有,Any表示0.0.0.0 255.255.255.255,Host 172.30.16.29表示172.30.16.29 0.0.0.0。
(3)不区分协议(允许或拒绝整个协议族),这里指IP协议。
(4)确定是允许(permit)或拒绝(deny),这里是permit。
(5)log表示将有关数据包匹配情况生成日志文件。
(6)只能删除整个访问控制列表,不能只删除其中一行。
Router(config)#no access-list access-list-number
2把标准ACL应用到一个具体接口:
Router(config)#int interface
Router(config-if)#{protocol} access-group access-list-number {in | out}
例如:
Router(config)#int s1/1
Router(config-if)#ip access-group 1 out
2.扩展ACL
同样的,扩展 ACL(Standard ACL)的配置分两步:
1定义访问控制列表,其命令格式如下:
Router(config)# access-list access-list-number{ permit | deny }
protocol source source-wildcard [operator operand]
destination destination-wildcard [operator operand] [ established ] [log]
例如:
Router(config)# access-list 101 Deny tcp 172.16.4.0 0.0.0.255 172.16.3.0 0.0.0.255 eq 20
表5-2说明了各参数的含义。
参数 |
参数描述 |
---|---|
access-list-number |
访问控制列表表号 |
permit|deny |
如果满足条件,允许或拒绝后面指定特定地址的通信流量 |
protocol |
用来指定协议类型,如IP、TCP、UDP、ICMP等 |
source and destination |
分别用来标识源地址和目的地址 |
source-wildcard |
通配符掩码,跟源地址相对应 |
destination-wildcard |
通配符掩码,跟目的地址相对应 |
operator |
lt,gt,eq,neq(小于,大于,等于,不等于) |
operand |
一个端口号或应用名称 |
established |
如果数据包使用一个已建立连接,便可允许TCP信息通过 |
功能说明:
(1)检查源和目的地址。
(2)允许或拒绝某个特定的协议(分协议),对TCP/IP协议簇来说,可以指定的协议有:ICMP、IGMP、TCP、UDP、IP等。
(3)分配唯一的编号,在100到199之间。
(4)指定操作符。
(5)给出端口号或应用名称,表5-3显示了一些常用的端口及应用程序名。
端口号 |
关键字 |
说明 |
---|---|---|
20 |
FTP-DATA |
文件传输协议(FTP)数据 |
21 |
FTP |
文件传输协议(FTP)控制 |
23 |
TELNET |
远程登录(Telnet) |
25 |
SMTP |
简单邮件传输协议(SMTP) |
53 |
DOMAIN |
域名服务系统(DNS) |
69 |
TFTP |
普通文件传送协议(TFTP) |
80 |
WWW |
超文本传输协议(HTTP) |
161 |
SNMP |
简单网络管理协议(SNMP) |
2把扩展ACL应用到一个具体接口:
Router(config)#int interface
Router(config-if)#{protocol}access-group access-list-number {in | out}
例如:
Router(config)#int s1/1
Router(config-if)#ip access-group 1 out
(1)访问列表的编号指明了使用何种协议的访问列表。
(2)每个端口、每个方向、每条协议只能对应于一条访问列表。
(3)访问列表的内容决定了数据的控制顺序。
(4)具有严格限制条件的语句应放在访问列表所有语句的最上面。
(5)在访问列表的最后有一条隐含声明:deny any-每一条正确的访问列表都至少应该有一条允许语句。
(6)先创建访问列表,然后应用到端口上。
(7)访问列表不能过滤由路由器自己产生的数据
(8)只能删除整个访问控制列表,不能只删除其中一行。
Router(config)#no access-list access-list-number
3.命名ACL
在标准ACL和扩展ACL中,使用名字代替数字来表示ACL编号,称为命名ACL。使用命名ACL的好外有:
(1)通过一个字母数字串组成的名字来直观地表示特定的ACL。
(2)不受99条标准ACL和100条扩展ACL的限制。
(3)网络管理员可以方便地对ACL进行修改,而无须删除ACL后再对其重新配置。
命名ACL的配置分三步:
1创建一个ACL命名,要求名字字符串要唯一。
Router(config)# ip access-list { standard | extended } name
2定义访问控制列表,其命令格式如下:
标准的ACL
Router(config-sta-nacl)#{permit|deny}source [source-wildcard] [log]
或扩展的ACL
Router(config-ext-nacl)#{permit|deny}protocol source source-wildcard[operator operand]
destination destination-wildcard [ operator operand] [ established ] [log]
3把ACL应用到一个具体接口上:
Router(config)# int interface
Router(config-if)# {protocol} access-group name {in | out}
4.基于时间的访问控制列表
基于时间的访问列表可以为一天中的不同时间段,或者一个星期中的不同日期,或者二者的结合制定不同的访问控制策略,从而满足用户对网络的灵活需求。
基于时间的访问列表能够应用于编号访问列表和命名访问列表,实现基于时间的访问表只需要三个步骤:
1定义一个时间范围;
格式为:
time-range time-range-name(时间范围的名称)
可以定义绝对时间范围和周期、重复使用的时间范围。
(1)定义绝对时间范围。
absolute [start start-time start-date] [end end-time end-date]
其中,start-time和end-time分别用于指定开始和结束时间,使用24小时表示,其格式为“小时:分钟”;
start-date和end-date分别用于指定开始的日期和结束的日期,使用“日/月/年”的日间格式,而不是通常采用的“月/日/年”格式。表5-4给出了绝对时间范围的实例。
定义 |
描述 |
---|---|
absolute start 17:00 |
从配置的当天17:00 开始直到永远 |
absolute start 17:00 1 decemdber 2000 |
从2000年12月1日17:00开始直到永远 |
absolute end 17:00 |
从配置时开始直到当天的17:00结束 |
absolute end 17:00 1 decemdber 2000 |
从配置时开始直到2000年12月1日17:00结束 |
absolute start 8:00 end 20:00 |
从每天早晨的8点开始到下午的8点结束 |
absolute start 17:00 1 decemdber 2000 to end 5:00 31 decemdber 2000 |
从2000年12月1日开始直到2000年12月31日结束 |
(2)定义周期、重复使用的时间范围。
periodic days-of-the-week hh:mm to days-of -the-week hh:mm
periodic是以星期为参数来定义时间范围的一个命令。它可以使用大量的参数,其范围可以是一个星期中的某一天、几天的结合,或者使用关键字daily、weekdays、weekend等。表5-5给出了一些周期性时间的实例。
定义 |
描述 |
---|---|
periodic weekend 7:00 to 19:00 |
星期六早上7:00到日期日晚上7:00 |
periodic weekday 8:00 to 17:00 |
星期一早上8:00到星期五晚上5:00 |
periodic daily 7:00 to 17:00 |
每天的早上7:00到下午5:00 |
periodic Saturday 17:00 to Monday 7:00 |
星期六晚上5:00到星期一早上7:00 |
periodic Monday Friday 7:00 to 20:00 |
星期一和星期五的早上7:00到下午8:00 |
2在访问列表中用time-range引用时间范围:
(3)基于时间的标准ACL。
Router(config)#access-list access-list-number{permit|deny}source[source-wildcard][log] [time-range time-range-name]
(4)基于时间的扩展ACL。
Router(config)# access-list access-list-number { permit | deny } protocol source source-wildcard [operator operand]
destination destination-wildcard [operator operand] [established] [log] [time-range time-range-name
3把ACL应用到一个具体接口:
Router(config)# int interface
Router(config-if)# {protocol} access-group access-list-number {in | out}
(5)配置实例:
router#configure terminal
router(config)#time-range allow-www
router(config-time-range)#asbolute start 7:00 1 June 2010 end 17:00 31 December 2010
router(config-time-range)#periodic weekend 7:00 to 17:00
router(config-time-range)#exit
router(config)#access-list 101 permit tcp 192.168.1.0 0.0.0.255 any eq www time-range allow-www
router(config)#interface serial 1/1
router(config-if)#ip access-group 101 out
二、任务实施 保护园区网络安全
具备路由器上标准IP访问列表规则及配置的能力。
你是一个公司的网络管理员,公司的经理部,财务部和销售部门分处不同的3个网段,三部门之间用路由器进行信息传递,为了安全起见,公司领导要求销售部不能对财务部门访问。
实现网段间互相访问的安全控制。
路由器(两台)、V.35线缆(1条)、直连线或交叉线(3条)。
1基本配置。
Router1基本配置:
Router1(config)#interface fastethernet 1/0
Router1(config-if)#ip add 172.16.1.1 255.255.255.0
Router1(config-if)#no shutdown
Router1(config-if)#interface fastethernet 1/1
Router1(config-if)#ip add 172.16.2.1 255.255.255.0
Router1(config-if)#no shutdown
Router1(config)#interface serial 1/2
Router1(config-if)#ip add 172.16.3.2 255.255.255.0
Router1(config-if)#clock rate 64000
Router1(config-if)#no shutdown
Router1(config-if)#end
验证测试:show ip int brief !观察接口状态。
Router2基本配置:
Router2(config)#interface fastethernet 1/0
Router2(config-if)#ip add 172.16.4.1 255.255.255.0
Router2(config-if)#no shutdown
Router2(config-if)#exit
Router2(config)#interface serial 1/2
Router2(config-if)#ip add 172.16.3.1 255.255.255.0
Router2(config-if)#no shutdown
测试命令:show ip int brief。
配置静态路由:
Router1(config)#ip route 172.16.4.0 255.255.255.0 serial 1/2
Router2(config)#ip route 172.16.1.0 255.255.255.0 serial 1/2
Router2(config)#ip route 172.16.2.0 255.255.255.0 serial 1/2
测试命令:show ip route !查看路由表信息。
2配置标准IP访问控制列表。
Router2(config)#access-list 1 deny 172.16.2.0 0.0.0.255 !拒绝来自172.16.2.0网段的流量通过。
Router2(config)#access-list 1 permit 172.16.1.0 0.0.0.255 !允许来自172.16.1.0网段的流量通过。
验证测试:show access-list 1。
第3步,把访问挖掘列表在接口下应用。
Router2(config)#interface fastethernet 1/0
Router2(config-if)#ip access-group 1 out !在接口下访问控制列表出栈流量调用
测试验证:show ip interface fastethernet 1/0。
(1)注意在访问控制列表的网络掩码的反掩码。
(2)标准控制列表要应用在尽量靠近目的地址的接口。
具备扩展IP访问列表规则及配置的能力。
你是学校的网络管理员,在3550-24交换机上连着学校的提供WWW和FTP的服务器,另外还连接着学生宿舍楼和教工宿舍楼,学校规定学生只能对服务器进行FTP访问,不能进行WWW访问,教工则没有此限制。
IP ACL(IP访问控制列表或IP访问列表)是实现对流经路由器或交换机的数据包根据一定的规则进行过滤。从而提高网络可管理性和安全性。
IP ACL分为两种:标准IP访问列表和扩展IP访问列表。标准IP访问列表可以根据数据包的源IP地址定义规则,进行数据包的过滤。扩展IP访问列表可以根据数据包的源IP、目的IP、源端口、目的端口、协议来定义规则,进行数据包的过滤。
IP ACL基于接口进行规则的应用,分为入栈应用和出栈应用。入栈应用是指由外部经该接口进行路由器的数据包进行过滤。出栈应用是指路由器从该接口向外转发数据时进行数据包的过滤。IP ACL的配置有两种方式:按照编号的访问列表,按照命名的访问列表。标准IP访问列表编号范围是1-99、1300-1999,扩展IP访问列表编号范围是100-199、2000-2699。
实现网段间互相访问的安全控制。
三层交换机(1台)、PC(3台)、直连线(3条)。
1基本配置。
3550-24(config)#vlan 10
3550-24(config-vlan)#name server
3550-24(config)#vlan 20
3550-24(config-vlan)#name teachers
3550-24(config)#vlan 30
3550-24(config-vlan)#name students
3550-24(config)#interface f0/5
3550-24(config-if)#switchport mode access
3550-24(config-if)#switchport access vlan 10
3550-24(config)#interface f0/10
3550-24(config-if)#switchport mode access
3550-24(config-if)#switchport access vlan 20
3550-24(config)#interface f0/15
3550-24(config-if)#switchport mode access
3550-24(config-if)#switchport access vlan 30
3550-24(config)#interface vlan10
3550-24(config-if)#ip add 192.168.10.1 255.255.255.0
3550-24(config-if)#no shutdown
3550-24(config)#interface vlan 20
3550-24(config-if)#ip add 192.168.20.1 255.255.255.0
3550-24(config-if)#no shutdown
3550-24(config)#interface vlan 30
3550-24(config-if)#ip add 192.168.30.1 255.255.255.0
3550-24(config-if)#no shutdown
2配置命名扩展IP访问控制列表。
3550-24(config)#ip access-list extended denystudentwww !定义命名扩展访问列表。
3550-24(config-ext-nacl)# deny tcp 192.168.30.0 0.0.0.255 192.168.10.0 0.0.0.255 eq www !禁止WWW服务。
3550-24(config-ext-nacl)# permit ip any any !允许其他服务。
验证命令:
3550-24#sh ip access-lists denystudentwww
3把访问控制列表在接口下应用。
3550-24(config)#int vlan 30
3550-24(config-if)#ip access-group denystudentwww in
4配置Web服务器和FTP服务器。
5验证测试。
分别在学生网段和教师宿舍网段使用1台主机,访问Web服务器。测试发现学生网段不能访问网页,教学宿舍网段可以访问网页。教师和学生都可以访问FTP服务器。
(1)访问控制列表要在接口下应用。
(2)要注意deny某个网段后要peimit其他网段。
具备基于时间段进行控制的IP访问列表配置的能力。
你是某公司的网管,为了保证公司上班时间的工作效率,公司要求上班时间只可以访问公司的内部网络。下班以后员工可以随意访问,访问网络不受限制。
PC机的IP地址和缺省网关分别为172.16.1.2/24和172.16.1.1/24,服务器(Server)的IP地址和缺省网关分别为160.16.1.1/25和160.16.1.254/24,路由器的接口F1/0和F1/1的IP地址分别为172.16.1.1/24和160.16.1.254/24。
基于时间的访问列表是指在标准或扩展的访问列表的基础上增加时间段的应用规则。
Time-range时间段分为两种:绝对性时间段和周期性时间段。
在周期性时间段里有一些常见参数:weekdays表示每周的工作日(周一至周五)、weekend表示周末(周六和周日)、daily表示每天。
基于时间对网络访问进行控制,提高网络的使用效率和安全性。
路由器(1台)、直连线或交叉线(2条)。
1基本配置。
Router#configure terminal
Router(config)#interface fastethernet 1/0
Router(config-if)#ip address 172.16.1.1 255.255.255.0
Router(config-if)#no shutdown
Router(config-if)#exit
Router(config)#interface fastethernet 1/1
Router(config-if)#ip address 160.16.1.254 255.255.255.0
Router(config-if)#no shutdown
验证配置:查看路由器接口的状态。
Router#show ip interface brief
2配置路由器的时钟。
Router#show clock !查看路由器当前时钟。
Router#clock set 08:45:00 6 6 2012 !重设路由器当前时钟和实际时钟同步
Router#show clock
3定义时间段。
Router(config)#time-range freetime
Router(config-time-range)#absolute start 8:00 1 jan 2012 end 18:00 30 dec 2018 !定义绝对时间段
Router(config-time-range)#periodic daily 0:00 to 9:00 !定义周期性时间段
Router(config-time-range)#periodic daily 17:00 to 23:59 !定义周期性时间段
验证配置:查看时间段配置。
Router#show time-range
4定义访问控制列表规则。
Router(config)#access-list 100 permit ip any host 160.16.1.1 !定义扩展访问控制列表,允许访问主机160.16.1.1
Router(config)#access-list 100 permit ip any any time-range freetime !关联time-range接口t1,允许在规定时间段访问任何网络。
验证配置:查看访问控制列表配置。
Router#show access-list
5将访问列表规则应用在接口上。
Router(config)#interface fastethernet 1/0
Router(config-if)#ip access-group 100 in !在F1/0接口上进行栈应用
验证配置:查看接口上应用的规则。
Router#show ip interface fastethernet 1/0
6验证测试。
在服务器主机上配置Web服务器,服务器IP地址为160.6.1.1。
(1)验证在工作时间的服务器的访问。
更改路由器的当前时间为上班时间,PC机可以访问160.16.1.1的Web服务。更改服务器的IP地址为160.16.1.5,PC机无法访问Web服务。
(2)验证在非工作时间的服务器的访问。
更改路由器的当前时间为下班时间,PC机可以访问160.16.1.1的Web服务。更改服务器的IP地址为160.16.1.5,PC机同样可以访问Web服务。
(1)在定义时间接口前先校正路由器系统时钟。
(2)Time-range接口上允许配置多条periodic规则(周期时间段),在ACL进行匹配时,只要能匹配任一条periodic规则即认为匹配成功,而不是要求必须同时匹配多条periodic规则。
(3)设置periodic规则时,可以按以下日期段进行设置:day-of-the-week(星期几)、Weekdays(工作日)、Weekend(周末,即周六和周日)、Daily(每天)。
(4)Time-range接口只允许配置一条absolutely规则(绝对时间段)。
(5)Time-range接口允许absolutely规则与periodic规则共存,此时,ACL必须首先匹配absolutely规则,然后再匹配periodic规则。
具备专家级访问列表的规则及配置的能力。
你是某公司的网管,最近你怀疑有人可能利用一些工具进行网络攻击和访问。为了提高网络访问的安全性,你需要利用专家级的访问列表,根据用户的IP地址和MAC地址进行网络访问的控制。
本实验以1台S2126G交换机和1台R1762路由器为例。PC1和PC2的IP地址分别为172.16.1.1/24和172.16.1.3/24,缺省网关为172.16.1.2/24,服务器(Server)的IP地址和缺省网关分别为160.16.1.1/24和160.16.1.2/24,路由器的接口F1/0和F1/1的IP地址分别为172.16.1.2/24和160.16.1.2/24。
专家级访问控制列表可以利用MAC地址、IP地址、VLAN号、传输端口号、协议类型、时间ACL等元素进行灵活组合,定义规则,从而更加灵活的控制网络的流量,保证网络的安全运行。
基于时间对网络访问进行控制,提高网络的使用效率和安全性。
S2126G交换机(1台)、R1762路由器(1台)、直连线或交叉线(2条)。
1基本配置。
Router#configure terminal
Routfer(config)#interface fastethernet 1/0
Router(config-if)#ip address 172.16.1.2 255.255.255.0
Router(config-if)#no shutdown
Router(config-if)#exit
Router(config)# interface fastethernet 1/1
Router(config-if)#ip address 160.16.1.2 255.255.255.0
Router(config-if)#no shutdown
Router(config-if)#exit
Router(config)#
验证配置:查看路由器接口的状态。
Router#show ip interface brief
2在S2126G上配置专家级访问控制列表。
Switch(config)#expert access-list extended test1 !定义专家级访问列表el
Switch(config-ext-nacl)#deny ip host 172.16.1.1 host 00e0.9823.9526 host 160.16.1.1 any !禁止IP地址及MAC地址为172.16.1.1和00e0.9823.9526的主机
Switch(config-ext-nacl)#permit any any any any
验证测试:验证访问列表配置
Switch#show access-lists test1 !显示专家级访问列表test1。
3在接口上应用专家级访问控制列表。
Switch (config) # interface fastethernet 0/1 !进入接口F0/1配置模式。
Switch (config-if)# expert access-group test1 in !在接口F0/1的入方向上应用专家级访问列表test1
验证测试:验证接口上应用的访问列表。
Switch#show access-group
4验证测试访问控制列表的结果。
PC1测试:
C:\>ping 160.16.1.1 !验证PC1不能访问服务器160.16.1.1。
C:\>ping 172.16.1.3 !验证PC1能访问PC2 (172.16.1.3)。
PC2测试:
C:\>ping 160.16.1.1 !验证PC2能访问服务器 160.16.1.1。
专家级访问列表用于过滤二层和三层、四层数据流。
专家级访问列表可以使用源MAC地址、目的MAC地址、以太网类型、源IP、目的IP及可选的协议类型信息作为匹配的条件。