什么是ACL?
    访问控制列表简称为ACL,访问控制列表使用包过滤技术,在路由器上读取第三层及第四层包头中的信息如源地址,目的地址,源端口,目的端口等,根据预先定义好的规则对包进行过滤,从而达到访问控制的目的。该技术初期仅在路由器上支持,近些年来已经扩展到三层交换机,部分最新的二层交换机也开始提供ACL的支持了。
    访问控制列表使用原则
    由于ACL涉及的配置命令很灵活,功能也很强大,所以我们不能只通过一个小小的例子就完全掌握全部ACL的配置。在介绍例子前为大家将ACL设置原则罗列出来,方便各位读者更好的消化ACL知识。
    1、最小特权原则
只给受控对象完成任务所必须的最小的权限。也就是说被控制的总规则是各个规则的交集,只满足部分条件的是不容许通过规则的。
    2、最靠近受控对象原则
    所有的网络层访问权限控制。也就是说在检查规则时是采用自上而下在ACL中一条条检测的,只要发现符合条件了就立刻转发,而不继续检测下面的ACL语句。
    3、默认丢弃原则
    在CISCO路由交换设备中默认最后一句为ACL中加入了DENY ANY ANY,也就是丢弃所有不符合条件的数据包。这一点要特别注意,虽然我们可以修改这个默认,但未改前一定要引起重视。
    由于ACL是使用包过滤技术来实现的,过滤的依据又仅仅只是第三层和第四层包头中的部分信息,这种技术具有一些固有的局限性,如无法识别到具体的人,无法识别到应用内部的权限级别等。因此,要达到端到端的权限控制目的,需要和系统级及应用级的访问权限控制结合使用。
一、基于IP访问控制列表用途:
    标准访问列表:
    访问控制列表ACL分很多种,不同场合应用不同种类的ACL。其中最简单的就是标准访问控制列表,标准访问控制列表是通过使用IP包中的源IP地址进行过滤,使用的访问控制列表号1到99来创建相应的ACL
    标准访问控制列表的格式
    访问控制列表ACL分很多种,不同场合应用不同种类的ACL。其中最简单的就是标准访问控制列表,他是通过使用IP包中的源IP地址进行过滤,使用的访问控制列表号1到99来创建相应的ACL。
    标准访问控制列表是最简单的ACL。
    它的具体格式如下:access-list ACL号 permit|deny host ip地址
    例如:access-list 10 deny host 192.168.1.1这句命令是将所有来自192.168.1.1地址的数据包丢弃。
    当然我们也可以用网段来表示,对某个网段进行过滤。命令如下:access-list 10 deny 192.168.1.0 0.0.0.255
    通过上面的配置将来自192.168.1.0/24的所有计算机数据包进行过滤丢弃。为什么后头的子网掩码表示的是0.0.0.255呢?这是因为CISCO规定在ACL中用反向掩玛表示子网掩码,反向掩码为0.0.0.255的代表他的子网掩码为255.255.255.0。
    小提示:对于标准访问控制列表来说,默认的命令是HOST,也就是说access-list 10 deny 192.168.1.1表示的是拒绝192.168.1.1这台主机数据包通讯,可以省去我们输入host命令。
    标准访问控制列表实例一
 

    我们采用如图所示的网络结构。路由器连接了二个网段,分别为172.16.4.0/24,172.16.3.0/24。在172.16.4.0/24网段中有一台服务器提供WWW服务,IP地址为172.16.4.13。
    实例1:禁止172.16.4.0/24网段中除172.16.4.13这台计算机访问172.16.3.0/24的计算机。172.16.4.13可以正常访问172.16.3.0/24。
    路由器配置命令
Access-list 1 per 172.16.4.13
Access-list 1 deng any
Int e1
Ip access-group 1 in
    access-list 1 permit host 172.16.4.13    设置ACL,容许172.16.4.13的数据包通过。
    access-list 1 deny any    设置ACL,阻止其他一切IP地址进行通讯传输。
    int e 1    进入E1端口。
    ip access-group 1 in    将ACL 1宣告。
    经过设置后E1端口就只容许来自172.16.4.13这个IP地址的数据包传输出去了。来自其他IP地址的数据包都无法通过E1传输。
    小提示:由于CISCO默认添加了DENY ANY的语句在每个ACL中,所以上面的access-list 1 deny any这句命令可以省略。另外在路由器连接网络不多的情况下也可以在E0端口使用ip access-group 1 out命令来宣告,宣告结果和上面最后两句命令效果一样。
    标准访问控制列表实例二
    配置任务:禁止172.16.4.13这个计算机对172.16.3.0/24网段的访问,而172.16.4.0/24中的其他计算机可以正常访问。
 

    路由器配置命令:
Access-list 1 deny 172.16.4.13
Access-list 1 per any
Int e1
Ip access-group 1 in
    access-list 1 deny host 172.16.4.13    设置ACL,禁止172.16.4.13的数据包通过
    access-list 1 permit any    设置ACL,容许其他地址的计算机进行通讯
    int e 1   进入E1端口
    ip access-group 1 in    将ACL1宣告,同理可以进入E0端口后使用ip access-group 1 out来完成宣告。
    配置完毕后除了172.16.4.13其他IP地址都可以通过路由器正常通讯,传输数据包。
    总结:标准ACL占用路由器资源很少,是一种最基本最简单的访问控制列表格式。应用比较广泛,经常在要求控制级别较低的情况下使用。如果要更加复杂的控制数据包的传输就需要使用扩展访问控制列表了,他可以满足我们到端口级的要求。
    扩展访问控制列表:
    上面我们提到的标准访问控制列表是基于IP地址进行过滤的,是最简单的ACL。那么如果我们希望将过滤细到端口怎么办呢?或者希望对数据包的目的地址进行过滤。这时候就需要使用扩展访问控制列表了。使用扩展IP访问列表可以有效的容许用户访问物理LAN而并不容许他使用某个特定服务(例如WWW,FTP等)。扩展访问控制列表使用的ACL号为100到199。
    扩展访问控制列表的格式
    刚刚我们提到了标准访问控制列表,他是基于IP地址进行过滤的,是最简单的ACL。那么如果我们希望将过滤细到端口怎么办呢?或者希望对数据包的目的地址进行过滤。这时候就需要使用扩展访问控制列表了。使用扩展IP访问列表可以有效的容许用户访问物理LAN而并不容许他使用某个特定服务(例如WWW,FTP等)。扩展访问控制列表使用的ACL号为100到199。
    扩展访问控制列表的格式:
    扩展访问控制列表是一种高级的ACL,配置命令的具体格式如下:
    access-list ACL号 [permit|deny] [协议] [定义过滤源主机范围]  [定义过滤源端口] [定义过滤目的主机访问] [定义过滤目的端口]
    例如:access-list 101 deny tcp any host 192.168.1.1 eq www这句命令是将所有主机访问192.168.1.1这个地址网页服务(WWW)TCP连接的数据包丢弃。
    小提示:同样在扩展访问控制列表中也可以定义过滤某个网段,当然和标准访问控制列表一样需要我们使用反向掩码定义IP地址后的子网掩码。
    扩展访问控制列表实例
 

    我们采用如图所示的网络结构。路由器连接了二个网段,分别为172.16.4.0/24,172.16.3.0/24。在172.16.4.0/24网段中有一台服务器提供WWW服务,IP地址为172.16.4.13。
    配置任务:禁止172.16.3.0的计算机访问172.16.4.0的计算机,包括那台服务器,不过惟独可以访问172.16.4.13上的WWW服务,而其他服务不能访问。
    路由器配置命令:
Access-list 101 permit tcp any 172.16.4.13 0.0.0.0 eq www
Int e1
ip access-group 101 out

    access-list 101 permit tcp any 172.16.4.13 0.0.0.0 eq www    设置ACL101,容许源地址为任意IP,目的地址为172.16.4.13主机的80端口即WWW服务。由于CISCO默认添加DENY ANY的命令,所以ACL只写此一句即可。
    int e 1    进入E1端口
    ip access-group 101 out     将ACL101宣告出去
    设置完毕后172.16.3.0的计算机就无法访问172.16.4.0的计算机了,就算是服务器172.16.4.13开启了FTP服务也无法访问,惟独可以访问的就是172.16.4.13的WWW服务了。而172.16.4.0的计算机访问172.16.3.0的计算机没有任何问题。
    扩展ACL有一个最大的好处就是可以保护服务器,例如很多服务器为了更好的提供服务都是暴露在公网上的,这时为了保证服务正常提供所有端口都对外界开放,很容易招来***和病毒的***,通过扩展ACL可以将除了服务端口以外的其他端口都封锁掉,降低了被***的机率。如本例就是仅仅将80端口对外界开放。
    总结:扩展ACL功能很强大,他可以控制源IP,目的IP,源端口,目的端口等,能实现相当精细的控制,扩展ACL不仅读取IP包头的源地址/目的地址,还要读取第四层包头中的源端口和目的端口的IP。不过他存在一个缺点,那就是在没有硬件ACL加速的情况下,扩展ACL会消耗大量的路由器CPU资源。所以当使用中低档路由器时应尽量减少扩展ACL的条目数,将其简化为标准ACL或将多条扩展ACL合一是最有效的方法。
    基于名称的访问控制列表
    不管是标准访问控制列表还是扩展访问控制列表都有一个弊端,那就是当设置好ACL的规则后发现其中的某条有问题,希望进行修改或删除的话只能将全部ACL信息都删除。也就是说修改一条或删除一条都会影响到整个ACL列表。这一个缺点影响了我们的工作,为我们带来了繁重的负担。不过我们可以用基于名称的访问控制列表来解决这个问题。
    一、基于名称的访问控制列表的格式:
    ip access-list [standard|extended] [ACL名称]
    例如:ip access-list standard softer就建立了一个名为softer的标准访问控制列表。
    二、基于名称的访问控制列表的使用方法:
    当我们建立了一个基于名称的访问列表后就可以进入到这个ACL中进行配置了。
    例如我们添加三条ACL规则
    permit 1.1.1.1 0.0.0.0
    permit 2.2.2.2 0.0.0.0
    permit 3.3.3.3 0.0.0.0
 

    如果我们发现第二条命令应该是2.2.2.1而不是2.2.2.2,如果使用不是基于名称的访问控制列表的话,使用no permit 2.2.2.2 0.0.0.0后整个ACL信息都会被删除掉。正是因为使用了基于名称的访问控制列表,我们使用no permit 2.2.2.2 0.0.0.0后第一条和第三条指令依然存在。
     总结:如果设置ACL的规则比较多的话,应该使用基于名称的访问控制列表进行管理,这样可以减轻很多后期维护的工作,方便我们随时进行调整ACL规则。
    反向访问控制列表:
    我们使用访问控制列表除了合理管理网络访问以外还有一个更重要的方面,那就是防范病毒,我们可以将平时常见病毒传播使用的端口进行过滤,将使用这些端口的数据包丢弃。这样就可以有效的防范病毒的***。
    不过即使再科学的访问控制列表规则也可能会因为未知病毒的传播而无效,毕竟未知病毒使用的端口是我们无法估计的,而且随着防范病毒数量的增多会造成访问控制列表规则过多,在一定程度上影响了网络访问的速度。这时我们可以使用反向控制列表来解决以上的问题。
    反向访问控制列表的用途及格式
    一、反向访问控制列表的用途
    反向访问控制列表属于ACL的一种高级应用。他可以有效的防范病毒。通过配置反向ACL可以保证AB两个网段的计算机互相PING,A可以PING通B而B不能PING通A。
    说得通俗些的话就是传输数据可以分为两个过程,首先是源主机向目的主机发送连接请求和数据,然后是目的主机在双方建立好连接后发送数据给源主机。反向ACL控制的就是上面提到的连接请求。
    二、反向访问控制列表的格式
    反向访问控制列表格式非常简单,只要在配置好的扩展访问列表最后加上established即可。我们还是通过实例为大家讲解。
 

    我们采用如图所示的网络结构。路由器连接了二个网段,分别为172.16.4.0/24,172.16.3.0/24。在172.16.4.0/24网段中的计算机都是服务器,我们通过反向ACL设置保护这些服务器免受来自172.16.3.0这个网段的病毒***。
    配置实例:禁止病毒从172.16.3.0/24这个网段传播到172.16.4.0/24这个服务器网段。
    路由器配置命令:
    access-list 101 permit tcp 172.16.3.0 0.0.0.255 172.16.4.0 0.0.0.255 established    定义ACL101,容许所有来自172.16.3.0网段的计算机访问172.16.4.0网段中的计算机,前提是TCP连接已经建立了的。当TCP连接没有建立的话是不容许172.16.3.0访问172.16.4.0的。
    int e 1    进入E1端口
    ip access-group 101 out    将ACL101宣告出去
    设置完毕后病毒就不会轻易的从172.16.3.0传播到172.16.4.0的服务器区了。因为病毒要想传播都是主动进行TCP连接的,由于路由器上采用反向ACL禁止了172.16.3.0网段的TCP主动连接,因此病毒无法顺利传播。
    小提示:3.0ping不通4.0,4.0ping通3.0
检验反向ACL是否顺利配置的一个简单方法就是拿172.16.4.0里的一台服务器PING在172.16.3.0中的计算机,如果可以PING通的话再用172.16.3.0那台计算机PING172.16.4.0的服务器,PING不通则说明ACL配置成功。
    通过上文配置的反向ACL会出现一个问题,那就是172.16.3.0的计算机不能访问服务器的服务了,假如图中172.16.4.13提供了WWW服务的话也不能正常访问。解决的方法是在ESTABLISHED那句前头再添加一个扩展ACL规则,例如:access-list 101 permit tcp 172.16.3.0 0.0.0.255 172.16.4.13 0.0.0.0 eq www
    这样根据“最靠近受控对象原则”即在检查ACL规则时是采用自上而下在ACL中一条条检测的,只要发现符合条件了就立刻转发,而不继续检测下面的ACL语句。172.16.3.0的计算机就可以正常访问该服务器的WWW服务了,而下面的ESTABLISHED防病毒命令还可以正常生效。
   笔者所在公司就使用的这种反向ACL的方式进行防病毒的,运行了一年多效果很不错,也非常稳定。
    基于时间的访问控制列表:
    上面我们介绍了标准ACL与扩展ACL,实际上我们数量掌握了这两种访问控制列表就可以应付大部分过滤网络数据包的要求了。不过实际工作中总会有人提出这样或那样的苛刻要求,这时我们还需要掌握一些关于ACL的高级技巧。基于时间的访问控制列表就属于高级技巧之一。
    配置实例:
    要想使基于时间的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资源了,平时无法访问。
    访问控制列表流量记录
    网络管理员就是要能够合理的管理公司的网络,俗话说知己知彼方能百战百胜,所以有效的记录ACL流量信息可以第一时间的了解网络流量和病毒的传播方式。下面这篇文章就为大家简单介绍下如何保存访问控制列表的流量信息,方法就是在扩展ACL规则最后加上LOG命令。
    实现方法:
    log 192.168.1.1    为路由器指定一个日志服务器地址,该地址为192.168.1.1
    access-list 101 permit tcp any 172.16.4.13 0.0.0.0 eq www log    在希望监测的扩展ACL最后加上LOG命令,这样就会把满足该条件的信息保存到指定的日志服务器192.168.1.1中。
    小提示:
    如果在扩展ACL最后加上log-input,则不仅会保存流量信息,还会将数据包通过的端口信息也进行保存。
    使用LOG记录了满足访问控制列表规则的数据流量就可以完整的查询公司网络哪个地方流量大,哪个地方有病毒了。简单的一句命令就完成了很多专业工具才能完成的工作。
 
二、基于时间的访问控制列表
基于时间的访问控制列表的格式:
基于时间的访问控制列表由两部分组成,第一部分是定义时间段,第二部分是用扩展访问控制列表定义规则。这里我们主要讲解下定义时间段,具体格式如下:
用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处表示的时间开始生效,并且永远发生作用,当然把访问列表删除了的话就不会起作用了。
  
    怎么样,看明白了吗?上面讲的就是命令和基本参数为了便于理解,我们看两个例子。
  1、如果要表示每天的早8点到晚8点就可以用这样的语句:
  absolute start 8:00 end 20:00
  
     2、再如,我们要使一个访问列表从2006年10月1日早5点开始起作用,直到2006年10月31日晚24点停止作用,语句如下:
  absolute start 5:00 1 December 2000 end 24:00 31 December 2000
 
     这样一来,我们就可以用这种基于时间的访问列表来实现,而不用半夜跑到办公室去删除那个访问列表了。这对于网络管理员来说,是个很好的事情。如果你恰好是网管。。哇。。。什么也不要讲了,快回去好好配置吧:)。好了接下来,让我们接着看下一个periodic命令及其参数。一个时间范围只能有一个absolute语句,但是可以有几个periodic语句。
  periodic:主要是以星期为参数来定义时间范围的一个命令。它的参数主要有宾Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday中的一个或者几个的组合,也可以是daily(每天)、 weekday(周一到周五)或者 weekend(周末)。
配置实例:
拓朴:
ROUTER 2800 f0/1----服务器(192.168.2.1)
|f0/0
|
pc(192.168.1.0)
实现PC只能在工作时间内才能访问服务器.其他时间不能.
Router#configure terminal (进入特权模式)
Router(config)#ip access-list extended limittime (创建一条命名控制列表..名为:limittime)
Router(config-ext-nacl)#permit ip 192.168.1.1 0.0.0.255 host 192.168.2.1 time-range worktime (进入子配置模式,设置192.168.1.0这个网段可以在时间段worktime内访问服务器)
Router(config-ext-nacl)#exit (退出子配置模式)
Router(config)#time-range worktime (定义时间段,名为worktime)
Router(config-time-range)#periodic weekdays 09:00 to 18:00 (定义时间段为工作日(就是星期一到五),从9点到16点)
Router(config-time-range)#exit
Router(config)#interface fastethernat 0/0 (进入f0/0端口)
Router(config-if)# ip access-group limittime out (起用limittime控制列表)

---------------------
show clock (查看路由器的时间日期)
Router#clock set 16:00:00 23 May 2007 (设置时间日期)
检证:
SHOW RUN
Router#show run
Building configuration...
.
.
.
ip access-list extended limittime
permit ip 192.168.1.0 0.0.0.255 host 192.168.2.1 time-range worktime
.
.
time-range worktime
periodic weekdays 9:00 to 18:00
!
================
三、基于MAC地址的ACL
注:IP地址与MAC地址的关系: IP地址是根据现在的IPv4标准指定的,不受硬件限制比较容易记忆的地址,长度4个字节。而 MAC地址却是用网卡的物理地址,保存在网卡的EPROM里面,与硬件有关系,比较难于记忆,长度为6个字节。
  
  虽然在TCP/IP网络中,计算机往往需要设置IP地址后才能通讯,然而,实际上计算机之间的通讯并不是通过IP地址,而是借助于网卡的MAC地址。IP地址只是被用于查询欲通讯的目的计算机的MAC地址。
  
  ARP协议是用来向对方的计算机、网络设备通知自己IP对应的MAC地址的。在计算机的 ARJ缓存中包含一个或多个表,用于存储IP地址及其经过解析的以太网MAC地址。一台计算机与另一台IP地址的计算机通讯后,在ARP缓存中会保留相应的MAC地址。所以,下次和同一个IP地址的计算机通讯,将不再查询MAC地址,而是直接引用缓存中的MAC地址。
  
  在交换式网络中,交换机也维护一张MAC地址表,并根据MAC地址,将数据发送至目的计算机。  (转载注明出处n et130)
  
  为什么要绑定MAC与IP 地址:IP地址的修改非常容易,而MAC地址存储在网卡的EEPROM中,而且网卡的MAC地址是唯一确定的。因此,为了防止内部人员进行非法IP盗用(例如盗用权限更高人员的IP地址,以获得权限外的信息),可以将内部网络的IP地址与MAC地址绑定,盗用者即使修改了IP地址,也因MAC地址不匹配而盗用失败:而且由于网卡MAC地址的唯一确定性,可以根据MAC地址查出使用该MAC地址的网卡,进而查出非法盗用者。
  
  目前,很多单位的内部网络,都采用了MAC地址与IP地址的绑定技术。下面我们就针对Cisco的交换机介绍一下IP和MAC绑定的设置方案。
  
  在Cisco中有以下三种方案可供选择,方案1和方案2实现的功能是一样的,即在具体的交换机端口上绑定特定的主机的MAC地址(网卡硬件地址),方案3是在具体的交换机端口上同时绑定特定的主机的MAC地址(网卡硬件地址)和IP地址。
  
  1.方案1——基于端口的MAC地址绑定
  
  思科2950交换机为例,登录进入交换机,输入管理口令进入配置模式,敲入命令:
  Switch#config terminal
  #进入配置模式
  Switch(config)# Interface fastethernet 0/1
  #进入具体端口配置模式
  Switch(config-if)#Switchport port-secruity
  #配置端口安全模式
  Switch(config-if )switchport port-security mac-address MAC(主机的MAC地址)
  #配置该端口要绑定的主机的MAC地址
  Switch(config-if )no switchport port-security mac-address MAC(主机的MAC地址)
  #删除绑定主机的MAC地址
  
  注意:
  
  以上命令设置交换机上某个端口绑定一个具体的MAC地址,这样只有这个主机可以使用网络,如果对该主机的网卡进行了更换或者其他PC机想通过这个端口使用网络都不可用,除非删除或修改该端口上绑定的MAC地址,才能正常使用。
  
  注意:
  
  以上功能适用于思科2950、3550、4500、6500系列交换机
  
  2.方案2——基于MAC地址的扩展访问列表
  
  Switch(config)Mac access-list extended MAC10
  #定义一个MAC地址访问控制列表并且命名该列表名为MAC10
  Switch(config)permit host 0009.6bc4.d4bf any
  #定义MAC地址为0009.6bc4.d4bf的主机可以访问任意主机
  Switch(config)permit any host 0009.6bc4.d4bf
  #定义所有主机可以访问MAC地址为0009.6bc4.d4bf的主机
  Switch(config-if )interface Fa0/20
  #进入配置具体端口的模式
  Switch(config-if )mac access-group MAC10 in
  #在该端口上应用名为MAC10的访问列表(即前面我们定义的访问策略)
  Switch(config)no mac access-list extended MAC10
  #清除名为MAC10的访问列表
  
  此功能与应用一大体相同,但它是基于端口做的MAC地址访问控制列表限制,可以限定特定源MAC地址与目的地址范围。
  
  注意:
  
  以上功能在思科2950、3550、4500、6500系列交换机上可以实现,但是需要注意的是2950、3550需要交换机运行增强的软件镜像(Enhanced Image)。
  
  3.方案3——IP地址的MAC地址绑定
  
  只能将应用1或2与基于IP的访问控制列表组合来使用才能达到IP-MAC 绑定功能。
  Switch(config)Mac access-list extended MAC10
  #定义一个MAC地址访问控制列表并且命名该列表名为MAC10
  Switch(config)permit host 0009.6bc4.d4bf any
  #定义MAC地址为0009.6bc4.d4bf的主机可以访问任意主机
  Switch(config)permit any host 0009.6bc4.d4bf
  #定义所有主机可以访问MAC地址为0009.6bc4.d4bf的主机
  Switch(config)Ip access-list extended IP10
  #定义一个IP地址访问控制列表并且命名该列表名为IP10
  Switch(config)Permit 192.168.0.1 0.0.0.0 any
  #定义IP地址为192.168.0.1的主机可以访问任意主机
  Permit any 192.168.0.1 0.0.0.0
  #定义所有主机可以访问IP地址为192.168.0.1的主机
  Switch(config-if )interface Fa0/20
  #进入配置具体端口的模式
  Switch(config-if )mac access-group MAC10 in
  #在该端口上应用名为MAC10的访问列表(即前面我们定义的访问策略)
  Switch(config-if )Ip access-group IP10 in
  #在该端口上应用名为IP10的访问列表(即前面我们定义的访问策略)
  Switch(config)no mac access-list extended MAC10
  #清除名为MAC10的访问列表
  Switch(config)no Ip access-group IP10 in
  #清除名为IP10的访问列表
  
  上述所提到的应用1是基于主机MAC地址与交换机端口的绑定,方案2是基于MAC地址的访问控制列表,前两种方案所能实现的功能大体一样。如果要做到IP与MAC地址的绑定只能按照方案3来实现,可根据需求将方案1或方案2与IP访问控制列表结合起来使用以达到自己想要的效果。
  
  注意:以上功能在思科2950、3550、4500、6500系列交换机上可以实现,但是需要注意的是2950、3550需要交换机运行增强的软件镜像(Enhanced Image)。
  
  后注:从表面上看来,绑定MAC地址和IP地址可以防止内部IP地址被盗用,但实际上由于各层协议以及网卡驱动等实现技术,MAC地址与IP地址的绑定存在很大的缺陷,并不能真正防止内部IP地址被盗用。
四、反向访问列表
有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不对本地路由器上的数据包跟踪,所以对待进入的数据包时注意,要允许一些数据流进入
关于访问列表的in/out
     不管在那个端口启用,就在那个端口下ip access-group x in/out
     In 先处理,再路由:
     out先路由,再处理
      所谓IN,就是在数据包进入路由器之前作访问表的对照,如果是OUT,就是数据可以先进路由器,然后在出路由器时检查访问列表,所以默认是IN.
 
ACL分类:
按端口所在不同层面可以划分为:
基于IP地址第三层的ACL
基于VALN号的ACL
基于MAC地址的ACL
基于时间的ACL
ACL慨述:
控制业务数据
限制对路由器的Telnet(VTY)访问
过滤路由选择信息
通过排队技术区分WAN流量的优先次序
通过按需拨号路由选择
该变路由的管理距离
ACL定义:
  ACL基本上是一个命令,通过编号或组织在一起,用来过滤进入或离开接口的流量。
。入站(流量进入接口)  
。出站(在流量流出接口之前)
ACL类型:
编号ACL和命名ACL
编号和命名ACL定义了路由器将如何引入ACL,可以将其当作类似索引来看待.
编号ACL在所有ACL中分配一个唯一的号码,而命名ACL在所有ACL分配一个唯一
的名称.
标准ACL(1~99标准编号ACL;n条与存储量有关,标准命名ACL)
每种ACL的引用都支持两种类型的过滤:标准和扩展.
标准ACL仅根据分组内的源IP地址进行过滤
扩展ACL(100~199扩展编号ACL;n条与存储有关,扩展命名ACL)
   可以根据分组源和目的IP地址,IP地址类型(TCP/UDP/ICMP等等)

标准ACL和扩展ACL的比较:
 
可过滤的信息 标准IP ACL 扩展IP ACL   
源地址 是 是   
目的地址 否 是   
IP协议(如TCP或UDP 否 是   
协议信息(如端口号) 否 是 
  ACL处理过程:
   路由器自顶向下的处理ACL.执行包含2个动作(允许/拒绝)
一旦找到匹配项,列表中的后续语句就不在处理
语句之间的排列顺序很重要
如果列表中没有匹配项,就丢弃分组.
ACL重要配置指导方针:
语句顺序的重要性:把最严格的语句放在列表顶部,最不严格的语句放在语句的底部.
ACL语句将按自顶向下的顺序进行处理,只至找到匹配项,后续语句不在处理
如果ACL中没有找到匹配项,则丢弃分组(隐含拒绝)
每个ACL需要一个唯一的号码或唯一的名称.
路由器不能过滤自己产生的流量.
每个接口在每个方向(入站和出站)只能应用一个IP ACL—既在一个借口上不能应用两个以上入站或出站ACL.
在接口应用空的ACL,默认情况下允许所有的流量;为了是ACL具有隐含拒绝语句,列表至少需要一条实际的permit或deny语句.
TCP和UTP操作符
 
操作符 说明   
It 小于   
Gt 大于   
Neq 不等于   
Eq 等于   
Range 端口号范围 
常用TCP端口名称及编号
 
端口名 命令参数 端口号   
FTP数据端口 ftp-data 20   
FTP控制端口 ftp 21   
Telnet telnet 23   
SMTP Smtp 25   
WWW www 80 
常用UDP端口名称及编号
 
端口名 命令参数 端口号   
DNS请求 DNS 53   
TFTP TFTP 69   
SNMP SNMP 16   
RIP RIP 520 
 
 
 

关于ACL应该放到什么地方,下面两条规则在很多情况下都是使用的:
  。标准ACL应该尽可能接近设备放置(标准靠近目标)
  。扩展ACL应该尽可能靠近发送站设备放置(扩展靠近源)