访问控制列表--标准ACL

被刻印的时光 ゝ 提交于 2019-12-06 09:08:20

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

1.1 实验目的

1)了解访问控制列表的工作过程

2)掌握标准访问控制列表的配置和应用

3)熟悉标准ACL的调试

1.2 实验原理

1. 什么是访问控制列表(Access Control List?

访问控制列表(Access Control List)是一种路由器配置脚本,它根据从数据包报头中发现的条件来控制路由器应该允许还是拒绝数据包通过。通过接入控制列表可以在路由器、三层交换机上进行网络安全属性配置,可以实现对进入路由器、三层交换机的输入数据流进行过滤,但ACL 对路由器自身产生的数据包不起作用。

当每个数据包经过关联有 ACL 的接口时,都会与 ACL 中的语句从上到下一行一行进行比对,以便发现符合该传入数据包的模式。ACL 使用允许或拒绝规则来决定数据包的命运,通过此方式来贯彻一条或多条公司安全策略。还可以配置 ACL 来控制对网络或子网的访问。另外,也可以在VTY线路接口上使用访问控制列表,来保证telnet的连接的安全性。

默认情况下,路由器上没有配置任何 ACL,不会过滤流量。进入路由器的流量根据路由表进行路由。如果路由器上没有使用 ACL,所有可以被路由器路由的数据包都会经过路由器到达下一个网段。ACL 主要执行以下任务:

限制网络流量以提高网络性能。例如,如果公司政策不允许在网络中传输视频流量,那么就应该配置和应用 ACL 以阻止视频流量。这可以显著降低网络负载并提高网络性能。

提供流量控制。ACL 可以限制路由更新的传输。如果网络状况不需要更新,便可从中节约带宽。

提供基本的网络访问安全性。ACL 可以允许一台主机访问部分网络,同时阻止其它主机访问同一区域。例如,“人力资源”网络仅限选定用户进行访问。

决定在路由器接口上转发或阻止哪些类型的流量。例如,ACL 可以允许电子邮件流量,但阻止所有 Telnet 流量。

l 控制客户端可以访问网络中的哪些区域。

屏蔽主机以允许或拒绝对网络服务的访问。ACL 可以允许或拒绝用户访问特定文件类型,例如 FTP 或 HTTP。

2.访问控制列表的分类

ACL的类型主要分为IP标准访问控制列表(Standard IP ACL)和IP扩展访问控制列表(Extended IP ACL)两大类:

l IP标准访问控制列表(Standard IP ACL)。标准 ACL 根据源 IP 地址允许或拒绝流量。数据包中包含的目的地址和端口无关紧要。   

l IP扩展访问控制列表(Extended IP ACL )。扩展 ACL 根据多种属性(例如,协议类型、源和 IP 地址、目的 IP 地址、源 TCP 或 UDP 端口、目的 TCP 或 UDP 端口)过滤 IP 数据包,并可依据协议类型信息(可选)进行更为精确的控制。

此外还包括一些复杂的ACL,例如命名ACL,基于时间的ACL,动态ACL,自反ACL等。

3.ACL工作原理

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

                

1 入站ACL工作原理

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

             

2 出站ACL工作原理

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

4. 3P原则

在路由器上应用 ACL 的一般规则我们简称为3P原则。即我们可以为每种协议 (per protocol)、每个方向 (per direction)、每个接口 (per interface) 配置一个 ACL:

每种协议一个 ACL: 要控制接口上的流量,必须为接口上启用的每种协议定义相应的 ACL。

每个方向一个 ACL:一个 ACL 只能控制接口上一个方向的流量。要控制入站流量和出站流量,必须分别定义两个 ACL。

每个接口一个 ACL:一个 ACL 只能控制一个接口(例如快速以太网 0/0)上的流量。

5. ACL的放置位置

每一个路由器接口的每一个方向,每一种协议只能创建一个ACL在适当的位置放置 ACL 可以过滤掉不必要的流量,使网络更加高效。ACL 可以充当防火墙来过滤数据包并去除不必要的流量。ACL 的放置位置决定了是否能有效减少不必要的流量。例如,会被远程目的地拒绝的流量不应该消耗通往该目的地的路径上的网络资源。每个 ACL 都应该放置在最能发挥作用的位置。基本的规则是:

将扩展 ACL 尽可能靠近要拒绝流量的源。这样,才能在不需要的流量流经网络之前将其过滤掉。

因为标准 ACL 不会指定目的地址,所以其位置应该尽可能靠近目的地。

6. 标准ACL的配置命令

标准访问控制列表是通过使用IP包中的源IP地址进行过滤,使用的访问控制列表号199来创建相应的ACL。标准ACL占用路由器资源很少,是一种最基本最简单的访问控制列表格式。应用比较广泛,经常在要求控制级别较低的情况下使用。

要配置标准ACL,首先在全局配置模式中执行以下命令:

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

参数说明:

参数

参数含义

access-list-number

标准ACL号码,范围从0-99,13001999

remark

添加备注,增强ACL的易读性

permit

条件匹配时允许访问

deny

条件匹配时拒绝访问

protocol

指定协议类型,egIP,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,13001999

access-list-number

标准ACL号码,范围从0-99,13001999

in

参数in限制特定设备与访问列表中地址之间的传入连接

out

参数out限制特定设备与访问列表中地址之间的传出连接

 

7.标准ACL的配置实例

                 

地址表:

设备

接口

IP地址

子网掩码

R1

Fa 0/0

192.168.1.1

255.255.255.0

S 0/0/0

172.16.1.2

255.255.255.252

R2

S 0/0/0

172.16.1.1

255.255.255.252

S 0/0/1

172.16.1.5

255.255.255.252

Fa 0/0

192.168.1

255.255.255.0

R3

S 0/0/1

172.16.1.6

255.255.255.252

Fa 0/0

192.168.20.1

255.255.255.0

PC1

NIC

192.168.1.10

255.255.255.0

PC2

NIC

192.168.10

255.255.255.0

PC3

NIC

192.168.20.10

255.255.255.0

1 IP地址表

本实验案例要求只允许PC1通过telnet方式登录路由器R1,R2R3。只允许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 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!