访问控制列表ACL

编程知识 更新时间:2023-04-20 11:51:30

访问控制列表ACL

  • 访问控制列表(Access Control List)
    • 访问控制列表的分类
    • ACL工作原理
    • 3P原则
    • ACL的放置位置
    • 标准ACL的配置命令
    • 标准ACL的配置实例
    • 扩展ACL配置命令
    • 扩展ACL的配置实例
    • 命名的ACL配置命令
    • 命名ACL的配置实例
    • 基于时间的ACL配置命令
    • 基于时间的ACL配置实例
    • 动态ACL的配置
    • 动态ACL的配置实例

记录大学时的ACL学习经过,当时参考了一些网络资料,出处已难寻,如有误,请不吝赐教。

访问控制列表(Access Control List,简称ACL)是根据报文字段对报文进行过滤的一种安全技术。访问控制列表通过过滤报文达到流量控制、攻击防范以及用户接入控制等功能,在现实中应用广泛。
ACL根据功能的不同分为标准ACL和扩展ACL。
(1)标准ACL只能过滤报文的源IP地址;
(2)扩展ACL可以过滤源IP、目的IP、协议类型、端口号等。
ACL的配置主要分为两个步骤:
(1)根据需求编写ACL;
(2)将ACL应用到路由器接口的某个方向。本章主要介绍各种常用ACL的编写与应用。

访问控制列表(Access Control List)

访问控制列表(Access Control List)是一种路由器配置脚本,它根据从数据包报头中发现的条件来控制路由器应该允许还是拒绝数据包通过。通过接入控制列表可以在路由器、三层交换机上进行网络安全属性配置,可以实现对进入路由器、三层交换机的输入数据流进行过滤,但ACL 对路由器自身产生的数据包不起作用。
当每个数据包经过关联有 ACL 的接口时,都会与 ACL 中的语句从上到下一行一行进行比对,以便发现符合该传入数据包的模式。ACL 使用允许或拒绝规则来决定数据包的命运,通过此方式来贯彻一条或多条公司安全策略。还可以配置 ACL 来控制对网络或子网的访问。另外,也可以在VTY线路接口上使用访问控制列表,来保证telnet的连接的安全性。
默认情况下,路由器上没有配置任何 ACL,不会过滤流量。进入路由器的流量根据路由表进行路由。如果路由器上没有使用 ACL,所有可以被路由器路由的数据包都会经过路由器到达下一个网段。
ACL 主要执行以下任务:
1.限制网络流量以提高网络性能。例如,如果公司政策不允许在网络中传输视频流量,那么就应该配置和应用 ACL 以阻止视频流量。这可以显著降低网络负载并提高网络性能。
2.提供流量控制。ACL 可以限制路由更新的传输。如果网络状况不需要更新,便可从中节约带宽。
3.提供基本的网络访问安全性。ACL 可以允许一台主机访问部分网络,同时阻止其它主机访问同一区域。例如,“人力资源”网络仅限选定用户进行访问。
4.决定在路由器接口上转发或阻止哪些类型的流量。例如,ACL 可以允许电子邮件流量,但阻止所有 Telnet 流量。
5.控制客户端可以访问网络中的哪些区域。
6.屏蔽主机以允许或拒绝对网络服务的访问。ACL 可以允许或拒绝用户访问特定文件类型,例如 FTP 或 HTTP。

访问控制列表的分类

ACL的类型主要分为IP标准访问控制列表(Standard IP ACL)和IP扩展访问控制列表(Extended IP ACL)两大类:
1.IP标准访问控制列表(Standard IP ACL)。标准 ACL 根据源 IP 地址允许或拒绝流量。数据包中包含的目的地址和端口无关紧要。
2.IP扩展访问控制列表(Extended IP ACL )。扩展 ACL 根据多种属性(例如,协议类型、源和 IP 地址、目的 IP 地址、源 TCP 或 UDP 端口、目的 TCP 或 UDP 端口)过滤 IP 数据包,并可依据协议类型信息(可选)进行更为精确的控制。
此外还包括一些复杂的ACL,例如命名ACL,基于时间的ACL,动态ACL,自反ACL等。

ACL工作原理

ACL 要么配置用于入站流量,要么用于出站流量。入站 ACL 传入数据包经过处理之后才会被路由到出站接口。入站 ACL 非常高效,如果数据包被丢弃,则节省了执行路由查找的开销。当测试表明应允许该数据包后,路由器才会处理路由工作。如图就是入站ACL的工作原理图。

图中显示了入站 ACL 的逻辑。如果数据包报头与某条 ACL 语句匹配,则会跳过列表中的其它语句,由匹配的语句决定是允许还是拒绝该数据包。如果数据包报头与 ACL 语句不匹配,那么将使用列表中的下一条语句测试数据包。此匹配过程会一直继续,直到抵达列表末尾。最后一条隐含的语句适用于不满足之前任何条件的所有数据包。这条最后的测试条件与这些数据包匹配,并会发出“拒绝”指令。此时路由器不会让这些数据进入或送出接口,而是直接丢弃它们。最后这条语句通常称为“隐式 deny any 语句”或“拒绝所有流量”语句。由于该语句的存在,所以 ACL 中应该至少包含一条 permit 语句,否则 ACL 将阻止所有流量。
出站 ACL 传入数据包路由到出站接口后,由出站 ACL 进行处理。

图中显示了出站 ACL 的逻辑。在数据包转发到出站接口之前,路由器检查路由表以查看是否可以路由该数据包。如果该数据包不可路由,则丢弃它。接下来,路由器检查出站接口是否配置有 ACL。如果出站接口没有配置 ACL,那么数据包可以发送到输出缓冲区。

3P原则

在路由器上应用 ACL 的一般规则我们简称为3P原则。即我们可以为每种协议 (per protocol)、每个方向 (per direction)、每个接口 (per interface) 配置一个 ACL:
(1)每种协议一个 ACL: 要控制接口上的流量,必须为接口上启用的每种协议定义相应的 ACL。
(2)每个方向一个 ACL:一个 ACL 只能控制接口上一个方向的流量。要控制入站流量和出站流量,必须分别定义两个 ACL。
(3)每个接口一个 ACL:一个 ACL 只能控制一个接口(例如快速以太网 0/0)上的流量。

ACL的放置位置

每一个路由器接口的每一个方向,每一种协议只能创建一个ACL;在适当的位置放置 ACL 可以过滤掉不必要的流量,使网络更加高效。ACL 可以充当防火墙来过滤数据包并去除不必要的流量。ACL 的放置位置决定了是否能有效减少不必要的流量。例如,会被远程目的地拒绝的流量不应该消耗通往该目的地的路径上的网络资源。每个 ACL 都应该放置在最能发挥作用的位置。基本的规则是:
(1)将扩展 ACL 尽可能靠近要拒绝流量的源。这样,才能在不需要的流量流经网络之前将其过滤掉。
(2)因为标准 ACL 不会指定目的地址,所以其位置应该尽可能靠近目的地。

标准ACL的配置命令

标准访问控制列表是通过使用IP包中的源IP地址进行过滤,使用的访问控制列表号1到99来创建相应的ACL。标准ACL占用路由器资源很少,是一种最基本最简单的访问控制列表格式。应用比较广泛,经常在要求控制级别较低的情况下使用。
要配置标准ACL,首先在全局配置模式中执行以下命令:

   Router(config)#access-list access-list-number {remark | permit | deny} protocol source source-wildcard [log]

参数说明:

参数参数含义
access-list-number标准ACL号码,范围从0-99,或1300-1999
remark添加备注,增强ACL的易读性
permit条件匹配时允许访问
deny条件匹配时拒绝访问
protocol指定协议类型,eg:IP,TCP,UDP,ICMP等
source发送数据包的网络地址或者主机地址
source-wildcard通配符掩码,和源地址对应
log对符合条件的数据包生成日志消息,该消息将发送到控制台

其次,配置标准 ACL 之后,可以在接口模式下使用 ip access-group 命令将其关联到具体接口:

Router(config-if)#ip access-group access-list-number  {in | out}
参数参数含义
ip access-group标准ACL号码,范围从0-99,或1300-1999
access-list-number标准ACL号码,范围从0-99,或1300-1999
in参数in限制特定设备与访问列表中地址之间的传入连接
out参数out限制特定设备与访问列表中地址之间的传出连接

标准ACL的配置实例


地址表:

设备接口IP地址子网掩码
R1Fa 0/0192.168.1.1255.255.255.0
S 0/0/0172.16.1.2255.255.255.252
R2S 0/0/0172.16.1.1255.255.255.252
S 0/0/1172.16.1.5255.255.255.252
Fa 0/0192.168.1255.255.255.0
R3S 0/0/1172.16.1.6255.255.255.252
Fa 0/0192.168.20.1255.255.255.0
PC1NIC192.168.1.10255.255.255.0
PC2NIC192.168.10255.255.255.0
PC3NIC192.168.20.10255.255.255.0

本实验案例要求只允许PC1通过telnet方式登录路由器R1,R2和R3。只允许PC1所在网段访问PC3所在网段。整个网络可以配置RIP或者OSPF路由协议保证整个网络的畅通。
(1)步骤1:配置路由器R1

R1(config-if)#inter fa 0/0
R1(config-if)#ip add 192.168.1.1 255.255.255.0
R1(config-if)#no shut
R1(config-if)#inter s 0/0/0
R1(config-if)#ip add 172.16.1.2 255.255.255.252
R1(config-if)#clock rate 64000
R1(config-if)#no shut
R1(config-if)#exit
R1(config)#enable secret cisco  //配置enable密码
R1(config)#router ospf 1
R1(config-router)#network 172.16.1.0 0.0.0.3 area 0
R1(config-router)#network 192.168.1.0 0.0.0.255 area 0  //以上3条为配置ospf路由协议,保证网络正常联通
R1(config)#access-list 2 permit 192.168.1.10  //定义ACL2,允许源IP地址为192.168.1.10的数据包通过
R1(config-if)#line vty 0 4
R1(config-line)#access-class 2 in  //在接口下应用定义的ACL2,允许IP地址为192.168.1.10的主机通过TELNET连接到路由器R1
R1(config-line)#password cisco   //配置TELNET远程登录密码为cisco
R1(config-line)#login

(2)步骤2:配置路由器R2

R2(config)#inter s0/0/0
R2(config-if)#ip add 172.16.1.1 255.255.255.252
R2(config-if)#clock rate 64000
R2(config-if)#no shut
R2(config-if)#exit
R2(config)#inter s0/0/1
R2(config-if)#ip add 172.16.1.5 255.255.255.252
R2(config-if)#clock rate 64000
R2(config-if)#no shut
R2(config-if)#exit
R2(config)#inter fa 0/0
R2(config-if)#ip add 192.168.1 255.255.255.0
R2(config-if)#no shut
R2(config-if)#exit
R2(config)#enable secret cisco   //配置enable密码
R2(config)# router ospf 1
R2(config-router)#network 172.16.1.0 0.0.0.3 area 0
R2(config-router)#network 172.16.1.4 0.0.0.3 area 0
R2(config-router)#network 192.168.20.0 0.0.0.255 area 0  //以上4条为配置ospf路由协议,保证网络正常联通
R2(config)#access-list 2 permit 192.168.1.10  //定义ACL2,允许源IP地址为192.168.1.10的数据包通过
R2(config-if)#line vty 0 4
R2(config-line)#access-class 2 in   //在接口下应用定义的ACL2,允许IP地址为192.168.1.10的主机通过TELNET连接到路由器R2
R2(config-line)#password cisco    //配置TELNET远程登录密码为cisco
R2(config-line)#login

(3)步骤3:配置路由器R3

R3(config)#inter s 0/0/1
R3(config-if)#ip add 172.16.1.6 255.255.255.252
R3(config-if)#clock rate 64000
R3(config-if)#no shut
R3(config-if)#exit
R3(config)#inter fa 0/0
R3(config-if)#ip add 192.168.20.1 255.255.255.0
R3(config-if)#no shut
R3(config-if)#exit
R3(config)#enable secret cisco    //配置enable密码
R3(config)# router ospf 1
R3(config-router)#network 172.16.1.4 0.0.0.3 area 0
R3(config-router)#network 192.168.20.0 0.0.0.255 area 0     //以上3条为配置ospf路由协议,保证网络正常联通
R3(config)#access-list 1 permit 192.168.1.0  0.0.0.255  //定义ACL1,允许源IP地址为192.168.1.0/24的数据包通过
R3(config)#access-list 1 deny any
R3(config)#interface fa 0/0
R3(config-if)#ip access-group 1 out   //在接口下应用ACL1, 允许IP地址为192.168.1.0/24的IP包从fa 0/0接口离开路由器R3
R3(config)#access-list 2 permit 192.168.1.10     //定义ACL2,允许源IP地址为192.168.1.10的数据包通过
R3(config-if)#line vty 0 4
R3(config-line)#access-class 2 in   //在接口下应用定义的ACL2,允许IP地址为192.168.1.10的主机通过TELNET连接到路由器R3
R3(config-line)#password cisco    //配置TELNET远程登录密码为cisco
R3(config-line)#login

【说明】
①ACL定义好后可以在很多地方应用,接口上应用只是其中之一,其他的常用应用包括在vty下用”access-class”命令调用,用来控制Telnet的访问,“access-class”命令只对标准ACL有效。
②访问控制列表表项的检查按自上而下的顺序进行,并且从第一个表项开始,所以必须考虑在访问控制列表中定义语句的次序;访问控制列表最后一条是隐含的拒绝所有deny any;
③路由器不对自身产生的IP数据包进行过滤;
④我们另外,尽量使标准的访问控制列表靠近目的,由于标准访问控制列表只使用源地址,如果将其靠近源会阻止数据包流向其他端口
⑤对于编号标准ACL,新添加的ACL条目只能加到最后,不能插到原来ACL条目中间,所以如果想在原来的编号标准ACL中插入某条条目,只能删掉原来的ACL内容,重新编写。
(4)实验调试

R3#show ip access-lists  //该命令用来查看所定义的IP访问控制列表
 Standard IP access list 1
   10 permit   192.160.1.0,wildcard bits 0.0.0.3(11 matches)
   20 deny any (405 matches)
Standard IP access list 2
   10 permit 192.168.1.10(2 matches)
以上输出表明路由器R2上定义的标准访问控制列表为”1”和”2”,括号中的数字表示匹配条件的数据包的个数,可以用”clear access-list counters”命令将访问控制列表计数器清零。
R3#show ip interface fa 0/0
FastEthernet0/0 is up, line protocol is up (connected)
  Internet address is 192.168.20.1/24
  Broadcast address is 255.255.255.255
  Address determined by setup command
  MTU is 1500
  Helper address is not set
  Directed broadcast forwarding is disabled
  Outgoing access list is 1
Inbound  access list is not set  ......
***省略后面输出***

以上输出表明在接口fa 0/0的出方向应用了访问控制列表1 。

扩展ACL配置命令

为了更加精确地控制流量过滤,我们可以使用编号在 100 到 199 之间以及 2000 到 2699 之间的扩展 ACL(最多可使用 800 个扩展 ACL)。扩展 ACL 比标准 ACL 更常用,因为其控制范围更广,可以提升安全性。与标准 ACL 类似,扩展 ACL 可以检查数据包源地址,但除此之外,它们还可以检查目的地址、协议和端口号(或服务)。如此一来,我们便可基于更多的因素来构建 ACL。例如,扩展 ACL 可以允许从某网络到指定目的地的电子邮件流量,同时拒绝文件传输和网页浏览流量。
由于扩展 ACL 具备根据协议和端口号进行过滤的功能,因此我们可以构建针对性极强的 ACL。利用适当的端口号,我们可以通过配置端口号或公认端口名称来指定应用程序。
本实验案例要求配置OSPF动态路由协议使得网络联通,同时定义扩展ACL实现如下访问控制:
(1)该网段只允许IP地址为172.16.1.0/28范围的主机访问server(192.168.1.254)的WEB服务;
(2)该网段只允许IP地址为172.16.1.0/28范围的主机访问server(192.168.1.254)的FTP服务;
(3)拒绝PC2所在网段访问服务器器server的telnet服务;
(4)拒绝PC2所在网段ping server(192.168.1.254);
要配置扩展ACL,在全局配置模式中执行以下命令:

Router(config)#access-list access-list-number {remark | permit | deny} protocol source [source-wildcard] [operator port]  destination  [destination-wildcard] [operator port] [established] [log]

参数说明:

参数参数含义
access-list-number扩展ACL号码,范围从100-199,或2000-2699
remark添加备注,增强ACL的易读性
permit条件匹配时允许访问
deny条件匹配时拒绝访问
protocol指定协议类型,eg:IP,TCP,UDP,ICMP等
source 和destination分别识别源地址和目的地址
source-wildcard通配符掩码,和源地址对应
destination-wildcard通配符掩码,和目的地址对应
operatorlt,gt,eg,neg (小于,大于,等于,不等于)
port端口号
established只用于TCP协议,只是已建立的连接
log对符合条件的数据包生成日志消息,该消息将发送到控制台。

扩展ACL的配置实例


IP地址表:

设备接口IP地址子网掩码
R1S 0/0/0192.168.2.1255.255.255.252
Fa 0/0172.16.1.1255.255.255.0
Fa 0/1172.16.2.1255.255.255.0
R2S 0/0/0192.168.2.2255.255.255.252
Fa 0/0192.168.1.1255.255.255.0
ServerNIC192.168.1.254255.255.255.0
PC1NIC172.16.1.10255.255.255.0
PC2NIC172.16.2.20255.255.255.0

(1)步骤1:配置路由器R1

R1(config)#inter fa 0/0
R1(config-if)#ip add 172.16.1.1 255.255.255.0
R1(config-if)#no shut
R1(config)#inter fa 0/1
R1(config-if)#ip add 172.16.2.1 255.255.255.0
R1(config-if)#no shut
R1(config-if)#exit
R1(config)#router ospf 1
R1(config-router)#net 192.168.2.0 0.0.0.3 area 0
R1(config-router)#net 172.16.1.0 0.0.0.255 area 0
R1(config-router)#net 172.16.2.0 0.0.0.255 area 0
R1(config-router)#exit
R1(config)#access-list 101 remark This is an example for extended ACL  //为ACL101添加标注
R1(config)#access-list 101 permit tcp 172.16.1.0 0.0.0.15 host 192.168.1.254 eq 80 log
//允许IP地址为172.16.1.10的主机访问server(192.168.1.254)的WEB服务
R1(config)#access-list 101 permit tcp 172.16.1.0 0.0.0.15 host 192.168.1.254 eq 20 log
R1(config)#access-list 101 permit tcp 172.16.1.0 0.0.0.15 host 192.168.1.254 eq 21 log
//以上2条ACL拒绝IP地址为172.16.1.20的主机访问server(192.168.1.254)的FTP服务
R1(config)#access-list 101 deny ip any any      
//可不添加,因为ACL末尾默认隐含“deny any any”
R1(config)#access-list 102 remark This is an example for extended ACL  //为ACL102添加标注
R1(config)#access-list 102 deny tcp 172.16.2.0  0.0.0.255  host 192.168.1.254 eq 23 log
//拒绝IP地址为172.16.1.0/24的主机访问server(192.168.1.254)的的telnet服务
R1(config)#access-list 102 deny icmp 172.16.2.0  0.0.0.255  host 192.168.1.254 log 
//拒绝IP地址为172.16.1.0/24的主机访问server(192.168.1.254)的的icmp服务
R1(config)#access-list 102 permit ip any any  
//将其余流量放行,否则ACL会将所有流量拒绝,因为ACL末尾隐含了“deny any any”
R1(config)#interface fa 0/0
R1(config-if)#ip access-group 101 in  //应用ACL101到接口fa0/0的出方向
R1(config-if)#exit
R1(config)#interface fa 0/1
R1(config-if)#ip access-group 102 in  //应用ACL102到接口fa0/1的出方向
R1(config-if)#exit
R1(config)#

(2)步骤2:配置路由器R2

R2(config)#inter s 0/0/0
R2(config-if)#ip add 192.168.2.2 255.255.255.252
R2(config-if)#clock rate 64000
R2(config-if)#no shut
R2(config-if)#exit
R2(config)#inter fa 0/0
R2(config-if)#ip add 192.168.1.1 255.255.255.0
R2(config-if)#no shut
R2(config-if)#exit
R2(config)#router ospf 1
R2(config-router)#net 192.168.2.0 0.0.0.3 area 0
R2(config-router)# net 192.168.1.0 0.0.0.255 area 0
R2(config-router)#end

【说明】
①参数”log”会生成相应的日志信息,用来记录经过ACL入口的数据包的情况。
②访问控制列表表项的检查按自上而下的顺序进行,并且从第一个表项开始,所以必须考虑在访问控制列表中定义语句的次序;访问控制列表最后一条是隐含的拒绝所有deny any;
③路由器不对自身产生的IP数据包进行过滤;
④尽量考虑将扩展的访问控制列表放在靠近过滤源的位置上,这样创建的过滤器就不会反过来影响其他接口上的数据流。
⑤对于编号扩展ACL,新添加的ACL条目只能加到最后,不能插到原来ACL条目中间,所以如果想在原来的编号扩展ACL中插入某条条目,只能删掉原来的ACL内容,重新编写。
(3)步骤3:实验调试
首先分别在PC1上访问服务器的FTP和WWW服务,然后改变PC1的地址为172.16.1.20,在PC1上访问服务器的FTP和WWW服务,再查看访问控制列表:

R1#show ip access-list 
Extended IP access list 101
  10  permit tcp 172.16.1.0 0.0.0.15 host 192.168.1.254 eq www (10 match(es)) 
  20  permit tcp 172.16.1.0 0.0.0.15 host 192.168.1.254 eq 20
  30  permit tcp 172.16.1.0 0.0.0.15 host 192.168.1.254 eq ftp (14 match(es))
  40  deny ip any any (80 match(es))
Extended IP access list 102
  10  deny tcp 172.16.2.0 0.0.0.255 host 192.168.1.254 eq telnet
  20  deny icmp 172.16.2.0 0.0.0.255 host 192.168.1.254
  30  permit ip any any
最后在PC2所在网段的主机ping 服务器,路由器R1会出现下面的日志信息
*Mar 25 17:35:46.383;%SEC-6-IPACCESSLOGDP;list 102 denied icmp 172.16.2.10 ->192.168.1.254(0/0),4 packet

以上输出说明访问控制列表101在有匹配数据包的时候,系统做了日志。

命名的ACL配置命令

命名ACL:所谓命名的IP访问控制列表是以列表名代替列表编号来定义IP访问控制列表,因为一般访问控制列表,我们只要删除其中一个条目,那么所有的条目都已经被删除了,所以增加了我们修改的难度,而名称列表可以达到任意添加修改和删除某一特定的ACL中个别的控制条目的效果。

router(config)#ip access-list {extended or standard} name

参数说明:

参数参数含义
standard标准命名ACL就选standard
Extended扩展命名ACL就选extended
nameACL的名字
router(config-ext-nacl)#{permit  or deny } protocols soure soure-wildcard {operator port}destination destination-wildcard {operator port}{established}

参数说明:

参数参数含义
permit条件匹配时允许访问
deny条件匹配时拒绝访问
protocol指定协议类型,eg:IP,TCP,UDP,ICMP等
source 和 destination分别识别源地址和目的地址
source-wildcard通配符掩码,和源地址对应
destination-wildcard通配符掩码,和目的地址对应
operatorlt,gt,eg,neg (小于,大于,等于,不等于)
port端口号
established只用于TCP协议,只是已建立的连接
log对符合条件的数据包生成日志消息,该消息将发送到控制台

命名ACL的配置实例

IP地址表:

设备接口IP地址子网掩码
R1S 0/0/0192.168.2.1255.255.255.252
Fa 0/0172.16.1.1255.255.255.0
Fa 0/1172.16.2.1255.255.255.0
R2S 0/0/0192.168.2.2255.255.255.252
Fa 0/0192.168.1.1255.255.255.0
ServerNIC192.168.1.254255.255.255.0
PC1NIC172.16.1.10255.255.255.0
PC2NIC172.16.2.20255.255.255.0

本实验案例要求配置OSPF动态路由协议使得网络联通,同时定义扩展ACL实现如下访问控制:
(1)该网段只允许IP地址为172.16.1.0/28范围的主机访问server(192.168.1.254)的WEB服务;
(2)该网段只允许IP地址为172.16.1.0/28范围的主机访问server(192.168.1.254)的FTP服务;
(3)只允许PC2 通过TELNET连接到路由器R1和R2;
步骤:
(1)步骤1:配置路由器R1

R1(config)#inter s 0/0/0
R1(config-if)#ip add 192.168.1.1 255.255.255.252
R1(config-if)#clock rate 64000
R1(config-if)#no shut
R1(config-if)#exit
R1(config)#inter fa 0/0
R1(config-if)#ip add 172.16.1.1 255.255.255.0
R1(config-if)#no shut
R1(config)#inter fa 0/1
R1(config-if)#ip add 172.16.2.1 255.255.255.0
R1(config-if)#no shut
R1(config-if)#exit
R1(config)#router ospf 1
R1(config-router)#net 192.168.2.0 0.0.0.3 area 0
R1(config-router)#net 172.16.1.0 0.0.0.255 area 0
R1(config-router)#net 172.16.2.0 0.0.0.255 area 0
R1(config-router)#exit
R1(config)#ip access-list extend NO_WWW_FTP
R1(config-ext-nacl)# remark This is an example for extended_ ACL for NO_WWW_FTP  
//为命名ACL  WWW_FTP添加标注
R1(config-ext-nacl)# permit tcp 172.16.1.0 0.0.0.15 host 192.168.1.254 eq 80 log
//允许IP地址为172.16.1.10的主机访问server(192.168.1.254)的WEB服务
R1(config-ext-nacl)# permit tcp 172.16.1.0 0.0.0.15 host 192.168.1.254 eq 20 log
R1(config-ext-nacl)# permit tcp 172.16.1.0 0.0.0.15 host 192.168.1.254 eq 21 log
//以上2条ACL拒绝IP地址为172.16.1.20的主机访问server(192.168.1.254)的FTP服务
R1(config-ext-nacl)# deny ip any any   //可不添加,因为ACL末尾默认隐含“deny ip any any”
R1(config-ext-nacl)#exit
R1(config)# ip access-list standard VTY_TELNET
R1(config-ext-nacl)# remark This is an example for standard ACL for VTY_TELNET //添加标注
R1(config-ext-nacl)#permit host 172.16.2.20 
//允许IP地址为172.16.2.20的主机数据包通过
R1(config-ext-nacl)#deny ip any any  //可不添加,因为ACL末尾默认隐含“deny ip any any”
R1(config-ext-nacl)#exit
R1(config)#interface fa 0/0
R1(config-if)#ip access-group WWW_FTP in  //应用ACL:WWW_FTP到接口fa0/0的入方向
R1(config-if)#exit
R1(config)#line vty 0 4
R1(config-line)#access-class VTY_TELNET in   
//在接口下应用定义ACL:VTY_TELNET,允许IP地址为192.168.1.10的主机通过TELNET
连接到路由器R1
R1(config-line)#password cisco    //配置TELNET远程登录密码为cisco
R1(config-line)#login
R1(config-line)#exit

(2)步骤2:配置路由器R2

R2(config)#inter s 0/0/0
R2(config-if)#ip add 192.168.2.2 255.255.255.252
R2(config-if)#clock rate 64000
R2(config-if)#no shut
R2(config-if)#exit
R2(config)#inter fa 0/0
R2(config-if)#ip add 192.168.1.1 255.255.255.0
R2(config-if)#no shut
R2(config-if)#exit
R2(config)#router ospf 1
R2(config-router)#net 192.168.2.0 0.0.0.3 area 0
R2(config-router)# net 192.168.1.0 0.0.0.255 area 0
R2(config-router)#exit
R2(config)# ip access-list standard VTY_TELNET
R2(config-ext-nacl)# remark This is an example for standard ACL for VTY_TELNET //添加标注
R2(config-ext-nacl)#permit host 172.16.2.20  //允许IP地址为172.16.2.20的主机数据包通过
R2(config-ext-nacl)#deny ip any any  //可不添加,因为ACL末尾默认隐含“deny ip any any”
R2(config-ext-nacl)#exit
R2(config)#line vty 0 4
R1(config-line)#access-class VTY_TELNET in   
//在接口下应用定义ACL:VTY_TELNET,允许IP地址为192.168.1.10的主机通过TELNET
连接到路由器R2
R2(config-line)#password cisco    //配置TELNET远程登录密码为cisco
R2(config-line)#login
R2(config-line)#exit

(3)步骤3:实验调试
先分别在PC1上访问服务器server的FTP服务,可以看到服务访问正常,WWW服务亦同。

PC>ftp 192.168.1.254
Trying to connect...192.168.1.254
Connected to 192.168.1.254
220- Welcome to Ftp server
Username:cisco
331- Username ok, need password
Password: cisco
230- Logged in
(passive mode On)
ftp>

然后将在PC1的地址改为172.16.1.20(地址不在172.16.1.0/28网段内),此时在PC1上访问服务器的FTP服务,已不能访问,WWW服务亦同。

PC>ftp 192.168.1.254
Trying to connect...192.168.1.254
%Error opening ftp://192.168.1.254/ (Timed out)
PC>(Disconnecting from ftp server)

在PC1上telnet路由器R1,由于PC1的IP地址为172.16.1.10,被ACL禁止访问。

PC>telnet 172.16.1.1
Trying 172.16.1.1 ...
% Connection timed out; remote host not responding      //说明ACL起作用了
在PC2上telnet路由器R1,
PC>telnet 172.16.2.1
Trying 172.16.2.1 ...Open   //telnet路由器R1成功,因为PC2的地址是172.16.2.20,符合命名ACL VTY_TELNET的定义
User Access Verification
Password: 
R1>en
Password: 
R1#
再查看访问控制列表:
R1# sh ip access-lists 
Extended IP access list WWW_FTP
    permit tcp 172.16.1.0 0.0.0.15 host 192.168.1.254 eq www (3 match(es))
    permit tcp 172.16.1.0 0.0.0.15 host 192.168.1.254 eq ftp_data(3 match(es))
    permit tcp 172.16.1.0 0.0.0.15 host 192.168.1.254 eq ftp (3 match(es))
    deny ip any any (12 match(es))
Standard IP access list VTY_TELNET
permit host 172.16.2.20 (2 match(es))

基于时间的ACL配置命令

基于时间的 ACL 功能类似于扩展 ACL,但它允许根据时间执行访问控制。要使用基于时间的 ACL,您需要创建一个时间范围,指定一周和一天内的时段。您可以为时间范围命名,然后对相应功能应用此范围。时间限制会应用到该功能本身。基于时间的 ACL 具有许多优点,例如:
(1)在允许或拒绝资源访问方面为网络管理员提供了更多的控制权。
(2)允许网络管理员控制日志消息。ACL 条目可在每天定时记录流量,而不是一直记录流量。因此,管理员无需分析高峰时段产生的大量日志就可轻松地拒绝访问。
基于时间访问列表的设计中,用time-range 命令来指定时间范围的名称,然后用absolute命令,或者一个或多个periodic命令来具体定义时间范围。IOS命令格式为:

Router(config)#time-range time-range-name 
参数参数含义
time-range用来定义时间范围的命令
time-range-name时间范围名称,用来标识时间范围,以便于在后面的访问列表中引用
Router(config-time-range)#absolute[start time date] [end time date]
参数参数含义
absolute指定绝对时间范围;
start time dateStart为关键字,关键字后面的时间要以24小时制hh:mm表示,日期要按照日/月/年来表示。如果省略start及其后面的时间,则表示与之相联系的permit 或deny语句立即生效,并一直作用到end处的时间为止。
end time date后面的时间要以24小时制hh:mm表示,日期要按照日/月/年来表示。如果省略end及其后面的时间,则表示与之相联系的permit 或deny语句在start处表示的时间开始生效,并且一直进行下去。
Router(config-time-range)#periodic days-of-the week hh:mm to [days-of-the week] hh:mm
参数参数含义
periodic主要是以星期为参数来定义时间范围的一个命令
days-of-the week它的参数主要有Monday、Tuesday、Wednesday、Thursday、Friday、Saturday、Sunday中的一个或者几个的组合,也可以是daily(每天)、weekday(周一至周五),或者weekend(周末)。
hh:mm24小时制

基于时间的ACL配置实例


IP地址表:

设备接口IP地址子网掩码
R1S 0/0/0192.168.2.1255.255.255.252
Fa 0/0172.16.1.1255.255.255.0
Fa 0/1172.16.2.1255.255.255.0
R2S 0/0/0192.168.2.2255.255.255.252
Fa 0/0192.168.1.1255.255.255.0
ServerNIC192.168.1.254255.255.255.0
PC1NIC172.16.1.10255.255.255.0
PC2NIC172.16.2.20255.255.255.0

本实验案例要求定义一个基于时间的ACL,要求在每天凌晨0:00-8:00禁止访问server的WEB服务,同时在2011年10月1日0点起至2011年10月7日24点止,禁止访问server的FTP服务。

(1)步骤1:配置路由器R1

R1(config)#inter s 0/0/0
R1(config-if)#ip add 192.168.1.1 255.255.255.252
R1(config-if)#clock rate 64000
R1(config-if)#no shut
R1(config-if)#exit
R1(config)#inter fa 0/0
R1(config-if)#ip add 172.16.1.1 255.255.255.0
R1(config-if)#no shut
R1(config)#inter fa 0/1
R1(config-if)#ip add 172.16.2.1 255.255.255.0
R1(config-if)#no shut
R1(config-if)#exit
R1(config)#router ospf 1
R1(config-router)#net 192.168.2.0 0.0.0.3 area 0
R1(config-router)#net 172.16.1.0 0.0.0.255 area 0
R1(config-router)#net 172.16.2.0 0.0.0.255 area 0
R1(config-router)#exit
R1(config)# time-range noWEB
R1(config-time-range)# periodic daily 0:00 to 8:00
R1(config)# time-range noFTP
R1(config-time-range)# absolute start 0:00 1 oct 2011 end 0:00 8 oct 2011
R1(config)# access-list 101 remark This is an example for time-range 
R1(config)# access-list 101 deny tcp any host 192.168.1.254 eq 20 time-range noFTP
R1(config)# access-list 101 deny tcp any host 192.168.1.254 eq 21 time-range noFTP
R1(config)# access-list 101 deny tcp any host 192.168.1.254 eq 80 time-range noWEB
R1(config)# access-list 101 permit ip any any
R1(config)# inter fa 0/0
R1(config-if)# ip access-group 101 in
R1(config)# inter fa 0/1
R1(config-if)# ip access-group 101 in

(2)步骤2:配置路由器R2

R2(config)#inter s 0/0/0
R2(config-if)#ip add 192.168.2.2 255.255.255.252
R2(config-if)#clock rate 64000
R2(config-if)#no shut
R2(config-if)#exit
R2(config)#inter fa 0/0
R2(config-if)#ip add 192.168.1.1 255.255.255.0
R2(config-if)#no shut
R2(config-if)#exit
R2(config)#router ospf 1
R2(config-router)#net 192.168.2.0 0.0.0.3 area 0
R2(config-router)# net 192.168.1.0 0.0.0.255 area 0
R2(config-router)#exit

(3)实验调试
将PC1系统时间调整到周一至周五的0:00-8:00范围内,然后在PC1上访问FTP SERVER,此时可以成功,然后查看访问控制列表:

R1#show ip access-lists
Extended IP access list 101
    10 deny tcp any host 192.168.1.254 eq ftp-data time-range noFTP (active) (3 match(es))
    20 deny tcp any host 192.168.1.254 eq ftp time-range noFTP (active) (3 match(es))
    30 deny tcp any host 192.168.1.254 eq www time-range noWEB (active)
    40 permit ip any any

将PC2系统时间调整到0:00-8:00范围之外,然后在PC2上访问WWW SERVER,此时不成功,然后查看访问控制列表:

R1#show ip access-lists
Extended IP access list 101
    10 deny tcp any host 192.168.1.254 eq ftp-data time-range noFTP (inactive)
    20 deny tcp any host 192.168.1.254 eq ftp time-range noFTP (inactive)
    30 deny tcp any host 192.168.1.254 eq www time-range noWEB (inactive) (8 match(es))
    40 permit ip any any
如果想查看定义的时间范围,可以使用show time-range命令:
R1#show time-range
time-range entry: noFTP (inactive)
   absolute start 00:00 01 October 2011 end 00:00 08 October 2011
   used in: IP ACL entry
   used in: IP ACL entry
time-range entry: noWEB (active)
   periodic daily 0:00 to 8:00
   used in: IP ACL entry

动态ACL的配置

“锁和钥匙”是使用动态 ACL(有时也称为锁和钥匙 ACL)的一种流量过滤安全功能。锁和钥匙仅可用于 IP 流量。动态 ACL 依赖于 Telnet 连接、身份验证(本地或远程)和扩展 ACL。
执行动态 ACL 配置时,首先需要应用扩展 ACL 来阻止通过路由器的流量。想要穿越路由器的用户必须使用 Telnet 连接到路由器并通过身份验证,否则会被扩展 ACL 拦截。Telnet 连接随后会断开,而一个单条目的动态 ACL 将添加到现有的扩展 ACL 中。该条目允许流量在特定时间段内通行;另外还可设置空闲超时和绝对超时值。与标准 ACL 和静态扩展 ACL 相比,动态 ACL 在安全方面具有以下优点:
(1)使用询问机制对每个用户进行身份验证
(2)简化大型网际网络的管理
(3)在许多情况下,可以减少与 ACL 有关的路由器处理工作
(4)降低黑客闯入网络的机会
(5)通过防火墙动态创建用户访问,而不会影响其它所配置的安全限制

Router(config)# username username password password
参数参数含义
username用户名
password用户密码
Router(config)#access-list access-list-number dynamic dynamic_ACL_name timeout time
{remark | permit | deny} protocol source [source-wildcard] [operator port]  destination  [destination-wildcard] [operator port] [log]
参数参数含义
access-list-number扩展ACL号码,范围从100-199,或2000-2699
dynamic表示定义的是动态ACL
dynamic_ACL_name动态ACL名字
time动态ACL绝对的超时时间
remark添加备注,增强ACL的易读性
permit条件匹配时允许访问
deny条件匹配时拒绝访问
protocol指定协议类型,eg:IP,TCP,UDP,ICMP等
source 和 destination分别识别源地址和目的地址
source-wildcard通配符掩码,和源地址对应
destination-wildcard通配符掩码,和目的地址对应
operatorlt,gt,eg,neg (小于,大于,等于,不等于)
port端口号
log对符合条件的数据包生成日志消息,该消息将发送到控制台。
Router(config-line)#autocommand access-enable timeout time
参数参数含义
autocommand access-enable在一个动态ACL中创建一个临时性的访问控制列表条目
timeout定义空闲超时值
time空闲超时值的大小,该值必须小于上面的动态ACL绝对的超时时间

动态ACL的配置实例


IP地址表:

设备接口IP地址子网掩码
R1S 0/0/0192.168.2.1255.255.255.252
Fa 0/0172.16.1.1255.255.255.0
Fa 0/1172.16.2.1255.255.255.0
R2S 0/0/0192.168.2.2255.255.255.252
Fa 0/0192.168.1.1255.255.255.0
ServerNIC192.168.1.254255.255.255.0
PC1NIC172.16.1.10255.255.255.0
PC2NIC172.16.2.20255.255.255.0

本实验要求如果172.16.1.0网段的主机想要访问server上的FTP服务,必须先telnet路由器R1成功,后才能访问。
(1)步骤1:配置路由器R1

R1(config)#inter s 0/0/0
R1(config-if)#ip add 192.168.1.1 255.255.255.252
R1(config-if)#clock rate 64000
R1(config-if)#no shut
R1(config-if)#exit
R1(config)#inter fa 0/0
R1(config-if)#ip add 172.16.1.1 255.255.255.0
R1(config-if)#no shut
R1(config)#inter fa 0/1
R1(config-if)#ip add 172.16.2.1 255.255.255.0
R1(config-if)#no shut
R1(config-if)#exit
R1(config)#router ospf 1
R1(config-router)#net 192.168.2.0 0.0.0.3 area 0
R1(config-router)#net 172.16.1.0 0.0.0.255 area 0
R1(config-router)#net 172.16.2.0 0.0.0.255 area 0
R1(config-router)#exit
R1(config)# username cisco password cisco   //建立本地验证数据库   
R1(config)# access-list 100 permit tcp 172.16.1.0 0.0.0.255  host 172.16.1.1 eq 23
R1(config)# access-list 100 permit tcp 172.16.2.0 0.0.0.255  host 172.16.2.1 eq 23
R1(config)#access-list 100 permit ospf any any  //允许ospf协议
R1(config)# access-list 100 dynamic LAB timeout 60 permit tcp 172.16.1.0 0.0.0.255  host 192.168.1.254  eq ftp
R1(config)# inter fa 0/0
R1(config)# ip access-group 100 in
R1(config)# inter fa 0/1
R1(config)# ip access-group 100 in
R1(config)# line vty 0 4 
R1(config-line)# login local   //VTY采用本地用户认证
R1(config-line)# autocommand access-enable timeout 5

(2)步骤2:配置路由器R2

R2(config)#inter s 0/0/0
R2(config-if)#ip add 192.168.2.2 255.255.255.252
R2(config-if)#clock rate 64000
R2(config-if)#no shut
R2(config-if)#exit
R2(config)#inter fa 0/0
R2(config-if)#ip add 192.168.1.1 255.255.255.0
R2(config-if)#no shut
R2(config-if)#exit
R2(config)#router ospf 1
R2(config-router)#net 192.168.2.0 0.0.0.3 area 0
R2(config-router)# net 192.168.1.0 0.0.0.255 area 0
R2(config-router)#exit

(3)实验调试
没有Telnet路由器R1,在PC1上直接访问路由器R2的WWW和FTP服务,不成功,路由器R1的访问控制列表:

R1#show ip access-lists
Extended IP access list 100
10 access-list 100 permit tcp 172.16.1.0 0.0.0.255  host 172.16.1.1 eq 23(11 match(es))
20 access-list 100 permit tcp 172.16.2.0 0.0.0.255  host 172.16.2.1 eq 23
30 access-list 100 permit ospf any any  (87 match(es))
50 access-list 100 dynamic LAB timeout 60 permit ip 172.16.1.0 0.0.0.255 host 192.168.1.254 eq 20
60 access-list 100 dynamic LAB timeout 60 permit ip 172.16.1.0 0.0.0.255 host 192.168.1.254 eq 21

②Telnet路由器R1成功之后,在PC1上访问SERVER的WWW和FTP服务,成功,路由器R1的访问控制列表:

R2#show ip access-lists
Extended IP access list 100
10 access-list 100 permit tcp 172.16.1.0 0.0.0.255  host 172.16.1.1 eq 23(11 match(es))
20 access-list 100 permit tcp 172.16.2.0 0.0.0.255  host 172.16.2.1 eq 23
30 access-list 100 permit ospf any any (87 match(es))
40 access-list 100 dynamic LAB timeout 60 permit ip 172.16.1.0 0.0.0.255 host 192.168.1.254 eq 80
permit ip host 17216.1.10 host 192.168.1.254 eq 80 (18matches)(time left 1238)
50 access-list 100 dynamic LAB timeout 60 permit ip 172.16.1.0 0.0.0.255 host 192.168.1.254 eq 20
permit ip host 17216.1.10 host 192.168.1.254 eq 20 (5matches)(time left 1238)
60 access-list 100 dynamic LAB timeout 60 permit ip 172.16.1.0 0.0.0.255 host 192.168.1.254 eq 21
permit ip host 17216.1.10 host 192.168.1.254 eq 21 (10matches)(time left 1238)
70 access-list 100 dynamic LAB timeout 60 permit ip 172.16.2.0 0.0.0.255 host 192.168.1.254 eq 80
80 access-list 100 dynamic LAB timeout 60 permit ip 172.16.2.0 0.0.0.255 host 192.168.1.254 eq 20
90 access-list 100 dynamic LAB timeout 60 permit ip 172.16.2.0 0.0.0.255 host 192.168.1.254 eq 21

从以上的输出结果可以看到,从主机172.16.1.10 Telnet 路由器R1,,如果通过认证,该Telnet会话就会被切断,IOS软件将在动态访问控制中动态建立三条临时条目
“ permit ip host 172.16.1.10 host 192.168.1.254 eq 80” ,
“permit ip host 172.16.1.10 host 192.168.1.254 eq 20” ,
“permit ip host 172.16.1.10 host 192.168.1.254 eq 21 ”,
此时在主机172.16.1.10上访问192.168.1.254的Web和FTP服务,成功。

更多推荐

访问控制列表ACL

本文发布于:2023-04-15 22:41:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/87e311cd150b3dfe1ac9f4c548f1a675.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:访问控制   列表   ACL

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 79344文章数
  • 44阅读数
  • 0评论数