博威---云架构决胜云计算

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3059|回复: 3

VLAN之间ACL和VACL的区别

[复制链接]
发表于 2007-6-8 08:20:40 | 显示全部楼层 |阅读模式
VLAN之间ACL和VACL的区别


  最近经常碰到有人问起Cisco交换机上如何实现VLAN之间的访问控制,一般我都会告诉对方,在三层交换机上直接把ACL应用到相应VLAN的虚端口就OK了,其实我自己也没有机会去真正实践过。眼下正巧有个项目涉及到这方面的需求,于是对如何实现VLAN之间的访问控制仔细研究了一番,这才发现VLAN访问控制列表(VACL)和VLAN之间的访问控制列表其实在实现方式上是有很大不同的,虽然从字面上看两者差不多。

  我们常说的VLAN之间的访问控制,它的实现方式是将ACL直接应用到VLAN的虚端口上,与应用到物理端口的ACL实现方式是一样的。而VLAN访问控制(VACL),也称为VLAN访问映射表,它的实现方式与前者完全不同。它应用于VLAN中的所有通信流,支持基于ETHERTYPE和MAC地址的过滤,可以防止未经授权的数据流进入VLAN.目前支持的VACL操作有三种:转发(forward),丢弃(drop),重定向(redirect)。

  VACL很少用到,在配置时要注意以下几点:

  1)       最后一条隐藏规则是deny ip any any,与ACL相同。

  2)       VACL没有inbound和outbound之分,区别于ACL.

  3)       若ACL列表中是permit,而VACL中为drop,则数据流执行drop.

  4)       VACL规则应用在NAT之前。

  5)       一个VACL可以用于多个VLAN中;但一个VLAN只能与一个VACL关联。

  6)       VACL只有在VLAN的端口被激活后才会启用,否则状态为inactive.

  下面,我以Cisco3550交换机作为实例来详细描述一下两者之间不同的实现方式。

  网络基本情况是划分了三个vlan:vlan10、vlan20和vlan30,vlan虚端口的IP地址分别为192.168.10.1/24、192.168.20.1/24和192.168.30.1/24.

  访问控制要求:vlan10和vlan20之间不能访问,但都能访问vlan30.

  (一)     通过VLAN之间ACL方式实现

******** 配置VLAN ********
Switch(config)# vlan 10 // 创建vlan 10
Switch(config-vlan)# vlan 20
Switch(config-vlan)# vlan 30
Switch(config-vlan)# int vlan 10
Switch(config-if)# ip address 192.168.10.1 255.255.255.0 // 配置vlan10虚端口IP
Switch(config-if)# int vlan 20
Switch(config-if)# ip address 192.168.20.1 255.255.255.0
Switch(config-if)# int vlan 30
Switch(config-if)# ip address 192.168.30.1 255.255.255.0

******** 配置ACL ********
Switch(config)# access-list 101 permit ip 192.168.10.0 0.0.0.255 192.168.30.0 0.0.0.255
Switch(config)# access-list 102 permit ip 192.168.20.0 0.0.0.255 192.168.30.0 0.0.0.255

******** 应用ACL至VLAN端口 ********
Switch(config)# int vlan 10
Switch(config-if)# ip access-group 101 in
Switch(config)# int vlan 20
Switch(config-if)# ip access-group 102 in

******** 完毕 ********



  (二)     通过VACL方式实现

******** 配置VLAN ********

(同上)

******** 配置ACL ********
Switch(config)# access-list 101 permit ip 192.168.10.0 0.0.0.255 192.168.30.0 0.0.0.255
Switch(config)# access-list 101 permit ip 192.168.30.0 0.0.0.255 192.168.10.0 0.0.0.255
(不同之处:因为VACL对数据流没有inbound和outbound之分,所以要把允许通过某vlan的IP数据流都permit才行。VLAN10允许与VLAN30通讯,而数据流又是双向的,所以要在ACL中增加VLAN30的网段)
Switch(config)# access-list 102 permit ip 192.168.20.0 0.0.0.255 192.168.30.0 0.0.0.255
Switch(config)# access-list 102 permit ip 192.168.30.0 0.0.0.255 192.168.20.0 0.0.0.255

******** 配置VACL ********

第一步:配置vlan access map
Switch(config)# vlan access-map test1 //定义一个vlan access map,取名为test1
Switch(config-vlan-access)# match ip address 101 // 设置匹配规则为acl 101
Switch(config-vlan-access)# action forward // 匹配后,设置数据流转发(forward)
Switch(config)# vlan access-map test2 //定义一个vlan access map,取名为test2
Switch(config-vlan-access)# match ip address 102 // 设置匹配规则为acl 102
Switch(config-vlan-access)# action forward // 匹配后,设置数据流转发(forward)

第二步:应用VACL
Switch(config)# vlan filter test1 vlan-list 10 //将上面配置的test1应用到vlan10中
Switch(config)# vlan filter test2 vlan-list 20 //将上面配置的test1应用到vlan20中

******** 完毕 ********



  以上就是关于VLAN之间ACL和VACL的简单配置实例。我个人认为一般情况下,通过VLAN之间ACL实现访问控制比较方便,但是当VLAN的端口比较分散时,采用VACL相对而言就要简单很多。不过使用VACL的前提是交换机支持此功能,目前可能只有Cisco 3550、4500和6500系列的交换机支持。
 楼主| 发表于 2007-6-8 08:27:04 | 显示全部楼层
网络防火墙安全策略是指要明确定义哪些数据包允许或禁止通过并使用网络服务,以及这些服务的使用规则。而且,网络防火墙安全策略中的每一条规定都应该在实际应用时得到实现。下面我们就路由器下通过访问控制列表实现安全策略,以达到防火墙的功能,并对其实现及应用进行详细的叙述。
  
  访问控制列表的作用
  
  访问控制列表是应用在路由器接口的指令列表,这些指令列表用来告诉路由器哪些数据包可以接收、哪些数据包需要拒绝。至于数据包是被接收还是被拒绝,可以由类似于源地址、目的地址、端口号、协议等特定指示条件来决定。通过灵活地增加访问控制列表,ACL可以当作一种网络控制的有力工具,用来过滤流入和流出路由器接口的数据包。
  
  建立访问控制列表后,可以限制网络流量,提高网络性能,对通信流量起到控制的手段,这也是对网络访问的基本安全手段。在路由器的接口上配置访问控制列表后,可以对入站接口、出站接口及通过路由器中继的数据包进行安全检测。
  
  IP访问控制列表的分类
  
  标准IP访问控制列表
  
  当我们要想阻止来自某一网络的所有通信流量,或者充许来自某一特定网络的所有通信流量,或者想要拒绝某一协议簇的所有通信流量时,可以使用标准访问控制列表来实现这一目标。标准访问控制列表检查路由的数据包的源地址,从而允许或拒绝基于网络、子网或主机的IP地址的所有通信流量通过路由器的出口。
  
  扩展IP访问控制列表
  
  扩展访问控制列表既检查数据包的源地址,也检查数据包的目的地址,还检查数据包的特定协议类型、端口号等。扩展访问控制列表更具有灵活性和可扩充性,即可以对同一地址允许使用某些协议通信流量通过,而拒绝使用其他协议的流量通过。
  
  命名访问控制列表
  
  在标准与扩展访问控制列表中均要使用表号,而在命名访问控制列表中使用一个字母或数字组合的字符串来代替前面所使用的数字。使用命名访问控制列表可以用来删除某一条特定的控制条目,这样可以让我们在使用过程中方便地进行修改。
  
  在使用命名访问控制列表时,要求路由器的IOS在11.2以上的版本,并且不能以同一名字命名多个ACL,不同类型的ACL也不能使用相同的名字。
  
  通配符掩码
  
  通配符掩码是一个32比特位的数字字符串,它被用点号分成4个8位组,每组包含8比特位。在通配符掩码位中,0表示“检查相应的位”,1表示“不检查相应的位”。通配符掩码与IP地址是成对出现的,通配符掩码与子网掩码工作原理是不同的。在IP子网掩码中,数字1和0用来决定是网络、子网,还是相应的主机的IP地址。如表示172.16.0.0这个网段,使用通配符掩码应为0.0.255.255。
  
  在通配符掩码中,可以用255.255.255.255表示所有IP地址,因为全为1说明所有32位都不检查相应的位,这是可以用any来取代。而0.0.0.0的通配符掩码则表示所有32位都要进行匹配,这样只表示一个IP地址,可以用host表示。所以在访问控制列表中,可以选择其中一种表示方法来说明网络、子网或主机。
  
  实现方法
  
  首先在全局配置模式下定义访问列表,然后将其应用到接口中,使通过该接口的数据包需要进行相应的匹配,然后决定被通过还是拒绝。并且访问列表语句按顺序、逻辑地处理,它们在列表中自上向下开始匹配数据包。如果一个数据包头与访问权限表的某一语句不匹配,则继续检测列表中的下一个语句。在执行到访问列表的最后,还没有与其相匹配的语句,数据包将被隐含的“拒绝”语句所拒绝。
  
  标准IP访问控制列表
  
  在实现过程中应给每一条访问控制列表加上相应的编号。标准IP访问控制列表的编号为1至99,作用是阻止某一网络的所有通信流量,或允许某一网络的所有通信流量。语法为:
  
  Router(config)#access-list access-list-number(1~99)
  {deny|permit} source [source-wildcard]
  
  如果没有写通配符掩码,则默认值会根据源地址自动进行匹配。下面举例来说明:要阻止源主机为
  
  192.168.0.45的一台主机通过E0,而允许其他的通讯流量通过E0端口。
  Router(config)#access-list 1 deny 192.168.0.45 0.0.0.0
  或Router(config)#access-list 1 deny host 192.168.0.45
  或Router(config)#access-list 1 deny 192.168.0.45
  Router(config)#access-list 1 permit any
  Router(config)#interface ethernet 0
  Router(config-if)#ip access-group 1 in
  
  首先我们在全局配置模式下定义一条拒绝192.168.0.45主机通过的语句,通配符掩码可以使用0.0.0.0或host,或使用缺省值来表示一台主机,然后将其访问列表应用到接口中。如果现在又修改了计算机的IP地址,那么这条访问控制列表将对您不起作用。
  
  扩展IP访问控制列表
  
  扩展IP访问控制列表的编号为100至199,并且功能更加灵活。例如,要阻止192.168.0.45主机Telnet流量,而允许Ping流量。
  
  Router(config)#access-list 101 permit icmp 192.168.0.45 0.0.0.0 any
  Router(config)#access-list 101 deny tcp 192.168.0.45 0.0.0.0 any eq 23
  Router(config)#access-list 101 permit ip any any
  Router(config)#interface ethernet 0
  Router(config-if)#ip access-group 101 in
  
  因为Ping命令使用网络层的ICMP协议,所以让ICMP协议通过。而Telnet使用端口23,所以将端口号为23的数据包拒绝了,最终应用到某一接口,这样就可以达到目的。
  
  命名访问控制列表
  
  对于某一给定的协议,在同一路由器上有超过99条的标准ACL,或有超过100条的扩展ACL。想要通过一个字母数字串组成的名字来直观地表示特定的ACL时,并且路由器的IOS版本在11.2及以上时,可以使用命名访问控制列表,也就是用某些字符串来取代标准与扩展ACL的访问列表号。命名访问控制列表的语法格式为:
  
  Router(config)#ip access-list {standard|extended} name
  
  在ACL配置模式下,通过指定一个或多个允许或拒绝条件,来决定一个数据包是允许通过还是被丢弃。语法格式如下:
  
  Router(config{std-|ext-}nacl)#{permit|deny} {source [source-wildcad]|any}
  
  下面是一个配置实例:
  
  ip access-list extended nyist
  permit tcp 172.16.0.0 0.0.255.255 any eq 23
  deny tcp any any
  deny udp 172.16.0.0 0.0.255.255 any lt 1024
  interface Ethernet 0
  ip access-group nyist in
  
  基于时间访问列表的应用
  
  随着网络的发展和用户要求的变化,从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处表示的时间开始生效,并且一直进行下去。
  
  periodic 主要是以星期为参数来定义时间范围的一个命令。它的参数主要有Monday、Tuesday、Wednesday、Thursday、Friday、Saturday、Sunday中的一个或者几个的组合,也可以是daily(每天)、weekday(周一至周五),或者weekend(周末)。
  
  下面我们来看一个实例:在一个网络中,路由器的以太网接口E0连接着202.102.240.0网络,还有一个串口S0连入Internet。为了让202.102.240.0网络内的公司员工在工作时间内不能进行WEB浏览,从2003年5月1日1时到2003年5月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
  may 2003 end 24:00 31 may 2003 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之间。我们定义了这个时间范围的名称是http,这样,我们就在列表中的最后一句方便地引用了。
  
  合理有效地利用基于时间的访问控制列表,可以更有效、更安全、更方便地保护我们的内部网络,这样您的网络才会更安全,网络管理人员也会更加轻松。
  
  检验
  
  在路由器中用show running-config命令检查当前正在运行的配置文件,用show ip access-list命令来查看访问控制列表,并在计算机的命令提示符下用Ping/Telnet命令进行测试。
  
  总结
  
  在网络安全体系中,最重要的安全要素—访问控制的控制点在网络通信通道的出入口上。内部网络通过路由器的广域网接口与Internet相连,再通过此路由器的局域网接口接入内部网络,而正确地放置ACL访问控制列表将起到防火墙的作用。为了满足与Internet间的访问控制,以及满足内部网络不同安全属性网络间的访问控制要求,在路由器上配置防火墙,让网络通信均通过它,以此控制网络通信及网络应用的访问权限。
 楼主| 发表于 2007-6-8 08:27:17 | 显示全部楼层
反向访问列表
  
  有5个VLAN,分别为 管理(63)、办公(48)、业务(49)、财务(50)、家庭(51)。
  
  要求: 管理可以访问其它,而其它不能访问管理,并且其它VLAN之间不能互相访问!
  
  其它的应用不受影响,例如通过上连进行INTERNET的访问
  
  方法一: 只在管理VLAN的接口上配置,其它VLAN接口不用配置。
  
  在入方向放置reflect
  ip access-list extended infilter
  permit ip any any reflect cciepass
  !
  在出方向放置evaluate
  ip access-list extended outfilter
  evaluate cciepass
  deny ip 10.54.48.0 0.0.0.255 any
  deny ip 10.54.49.0.0.0.0.255 any
  deny ip 10.54.50.0 0.0.0.255 any
  deny ip 10.54.51.0 0.0.0.255 any
  permit ip any any
  !应用到管理接口
  int vlan 63
  ip access-group infilter in
  ip access-group outfilter out
  
  方法二:在管理VLAN接口上不放置任何访问列表,而是在其它VLAN接口都放。
  
  以办公VLAN为例:
  
  在出方向放置reflect
  ip access-list extended outfilter
  permit ip any any reflect cciepass
  !
  在入方向放置evaluate
  ip access-list extended infilter
  deny ip 10.54.48.0 0.0.0.255 10.54.49.0 0.0.0.255
  deny ip 10.54.48.0 0.0.0.255 10.54.50.0 0.0.0.255
  deny ip 10.54.48.0 0.0.0.255 10.54.51.0 0.0.0.255
  deny ip 10.54.48.0 0.0.0.255 10.54.63.0 0.0.0.255
  evaluate cciepass
  permit ip any any
  !
  应用到办公VLAN接口:
  int vlan 48
  ip access-group infilter in
  ip access-group outfilter out
  
  总结:
  
  1) Reflect放置在允许的方向上(可进可出)
  
  2) 放在管理VLAN上配置简单,但是不如放在所有其它VLAN上直接。
  
  3) 如果在内网口上放置: 在入上设置Reflect
  
  如果在外网口上放置: 在出口上放置Reflect
  
  LAN WAN
  -
  inbound outbound
  
  4)reflect不对本地路由器上的数据包跟踪,所以对待进入的数据包时注意,要允许一些数据流进入
发表于 2007-6-19 11:54:26 | 显示全部楼层
:)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|boway Inc. ( 冀ICP备10011147号 )

GMT+8, 2024-11-24 03:59 , Processed in 0.089230 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表