访问控制列表ACL的配置与应用

访问控制列表(Access Control List,ACL)是应用在路由器接口的指令列表(即规则)。这些指令列表用来告诉路由器,哪些数据包可以接收,哪些数据包需要拒绝。其基本原理如下:ACL使用包过滤技术,在路由器上读取OSI七层模型的第三层及第四层包头中的信息,如源地址、目的地址、源端口、目的端口等,根据预先定义好的规则,对包进行过滤,从而达到访问控制的目的。

ACL通过在路由器接口处控制数据包的转发还是丢弃,从而过滤通信流量。路由器根据ACL中指定的条件来检测通过路由器的数据包,从而决定是转发还是丢弃数据包。

ACL的类型

ACL可分为以下三种类型:

标准ACL:检查数据包的源地址。其结果基于源网络/子网/主机IP地址,来决定允许还是拒绝转发数据包。它使用1-99之间的数字作为表号。

扩展ACL:对数据包的源地址与目标地址均进行检查。它也能检查特定的协议、端口号以及其他参数。它使用100-199之间的数字作为表号。

命名ACL:命名访问控制列表允许在标准和扩展访问控制列表中使用名称代替表号。具有灵活性,可以单独添加、删除单条ACL语句,而不必删除整个ACL。

ACL的工作原理

ACL是一组规则的集合,它应用在路由器的某个接口上。对路由器接口而言,访问控制列表有两个方向:

出:已经过路由器的处理,正离开路由器接口的数据包。

入:已到达路由器接口的数据包,将被路由器处理。

如果对接口应用了访问控制列表,也就是说该接口应用了一组规则,那么路由器将对数据包应用该组规则进行顺序检查。

(1)如果匹配第1条规则,则不再往下检查,路由器将决定该数据包允许通过或拒绝通过。

(2)如果不匹配第1条规则,则依次往下检查,直到有任何一条规则匹配,路由器将决定该数据包允许通过或拒绝通过。

(3)如果最后没有任何一条规则匹配,则路由器根据默认的规则将丢弃该数据包。

由此可见,数据包要么被允许,要么被拒绝。

根据以上的检查规则可知,在ACL中,各规则的放置顺序是很重要的。一旦找到了某一匹配规则,就结束比较过程,不再检查以后的其他规则。

标准ACL的配置

1. 创建ACL

创建标准ACL的命令语法如下:

 Router(config)# access-list access-list-number {permit | deny} source [source-wildcard] 
 
 access-list-number:访问控制列表表号,对于标准ACL来说,该表号是1-99中的一个数字
 permit|deny:如果满足测试条件,则允许/拒绝该通信流量
 source:数据包的源地址,可以是主机地址,也可以是网络地址。
 source-wildcard:通配符掩码,也叫做反码。在用二进制0和1表示时,如果某位为1,表明这一位不需要进行匹配操作,如果为0,则表明这一位需要严格匹配

例如:允许来自网络192.168.1.0/24和主机192.168.2.2的流量通过,标准ACL命令如下

  Router(config)# access-list 1 permit 192.168.1.0  0.0.0.255   
  Router(config)# access-list 1 permit 192.168.2.2  0.0.0.0

192.168.1.0/24的子网掩码是255.255.255.0,那么其反码可以通过255.255.255.255减去255.2553.255.0得到0.0.0.255。

同样,主机192.168.2.2的子网掩码是255.255.255.255,那么其反码可以通过255.255.255.255减去255.255.255.255得到0.0.0.0。

(1)隐含的拒绝语句

每一个ACL都有一条隐含的拒绝语句,拒绝所有流量,语句如下:

  Router(config)# access-list 1 deny 0.0.0.0 255.255.255.255

(2)关键字host、any

在上面的例子中,192.168.2.2 0.0.0.0可以用“host 192.168.2.2”来表示,相应的ACL可改写为:

Router(config)# access-list 1 permit host 192.168.1.2

0.0.0.0 255.255.255.255可以使用关键字“any”来表示,相应的ACL可改写为:

  Router(config)# access-list 1 deny any

(3)删除已建立的标准ACL

删除语法如下:

Router(config)# no access-list access-list-number

对标准ACL来说,不能删除单条ACL语句,只能删除整个ACL。这意味着如果要改变一条或几条ACL语句,必须先删除整个ACL,然后再输入所要的ACL语句。

2. 将ACL应用于接口

创建ACL后,只有将ACL应用于接口,ACL才会生效。命令语法如下

 Router(config-if)# ip access-group access-list-number {in| out}

参数in|out:用来指示该ACL是应用到入站接口(in),还是出站接口(out)。

要在接口上取消ACL的应用,可以使用如下命令: 

 Router(config-if)# no ip access-group access-list-number {in| out}

注意:每个方向上只能有一个ACL,也就是每个接口最多只能有两个ACL:一个入方向ACL,一个出方向ACL。

3. 标准ACL的配置实例

如图所示,要求配置标准ACL实现:禁止PC2访问PC1,而允许其他所有流量

配置步骤如下:

(1)分析在哪个接口应用标准ACL

标准ACL既可以应用在入站接口,也可以应用在出站接口,二者有何不同呢?

路由器对进入的数据包先检查入访问控制列表,对允许传输的数据包才查询路由表,而对于外出的数据包先查询路由表,确定目标接口后才查看出访问控制列表。因此应该尽量把访问控制列表应用到入站接口,因为它比应用到出站接口效率更高:将要丢弃的数据包早路由器进行路由表查询出路之前就拒绝掉。

(2)配置全网互通(略)

(3)配置标准ACL并应用到接口上。

 Router(config)# access-list 1 deny host 192.168.2.2  
 Router(config)# access-list 1 permit any             
 Router(config)# int f0/0                   
 Router(config-if)# ip access-group 1 in


(4)查看并验证配置

使用show access-list命令查看ACL配置

Router# show access-lists

验证配置

PC2不能ping通主机PC1,但PC3可以ping通主机PC1

扩展ACL的配置

1. 创建ACL

创建扩展ACL的命令语法如下:

 Router(config)# access-list access-list-number {permit|deny} protocol {source source-wildcard destination destination-wildcard} [operator operan]
 
 accessi-list-number:ACL表号,对于扩展ACL来说,是100-199的一个数字
 protocol:用来指定协议,如IP、TCP、UDP、ICMP等
 source、destination:源、目的,分别用来标识源地址、目的地址
 source-wildcard、destination-wildcard:反码、目的反码
 operator operan:lt(小于)、gt(大于)、eq(等于)、neq(不等于)一个端口

案例1:允许网络192.168.1.0/24访问网络192.168.2.0/24的IP流量通过,而拒绝其它任何流量

Router(config)# access-list 101 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
Router(config)# access-list 1.0 deny ip any any

案例2:拒绝网络192.168.1.0/24访问FTP服务器192.168.2.2/24的IP流量通过,而允许其他任何流量

Router(config)# access-list 102 deny tcp 192.168.1.0 0.0.0.255 host 192.168.2.2 eq 21
Router(config)# access-list 102 permit ip any any

案例3:禁止网络192.168.1.0/24中的主机ping通服务器192.168.2.2/24,而允许其他任何流量

Router(config)# access-list 103 deny icmp 192.168.1.0 0.0.0.255 host 192.168.2.2 echo
Router(config)# access-list 103 permit ip any any

2. 将ACL应用于接口

与标准ACL一样,只有将ACL应用于接口,ACL才生效。配置命令与标准ACL一样(略)

注意:扩展ACL和标准ACL一样,也不能删除单条ACL语句,只能删除整个ACL

3. 扩展ACL的配置实例

如图所示,要求配置扩展ACL实现:允许PC1访问Web服务器的WWW服务,而禁止主机PC1访问WWW服务器其他任何服务;允许主机PC1访问网络192.168.2.0/24

配置步骤如下:

(1)分析在哪个接口应用扩展ACL

与标准ACL一样,应尽量把ACL应用到入口。

最好把ACL应用到路由器R1的入口处,否则会浪费R2、R3的资源。也就是说,应该把ACL应用于离地址最近的路由器上

(2)配置全网互通(略)

(3)配置扩展ACL并应用到接口上。

R1(config)# access-list 101 permit tcp host 192.168.1.1 host 192.168.3.1 eq 80
R1(config)# access-list 101 deny ip host 192.168.1.1 host 192.168.3.1
R1(config)# access-list 101 permit ip host 192.168.1.1 192.168.2.0 0.0.0.255
R1(config)# int f0/0
R1(config-if)# ip access group 101 in

(4)查看并验证配置

使用show access-list命令查看ACL配置

Router# show access-lists


命名ACL的配置

1. 创建ACL

创建命名ACL的命令语法如下:

 Router(config)# ip access-list {standard|extended} access-list-name
 
 standard|extended:决定是标准命名ACL、扩展命名ACL
 access-list-name:有字母、数字组成的字符串

(1)如果是标准命名ACL,命令语法如下:

Router(config-std-nacl)# [Sequence-Number] {permit|deny} source [source-wildcard]

(2)如果是扩展命名ACL,命令语法如下:

Router(config-ext-nacl)# [Sequence-Number] {permit|deny} source [source-wildcard destination destination-wildcard] [operator operan]
Sequence-Number:可选参数,表明配置的ACL语句在ACL中的位置,默认第一条为10,第二条20…

案例1:允许来自主机192.168.1.1/24的流量通过,而拒绝其它流量,使用标准命名ACL

Router(config)# ip access-list standard yangshufan
Router(config-std-nacl)# permit host 192.168.1.1    //默认ACL语句序列号为10
Router(config-std-nacl)# deny any                  //默认ACL语句序列号为20

更改需求,除了192.168.1.1/24外,还允许192.168.2.1/24的流量通过

Router(config)# ip access-list standard yangshufan
Router(config-std-nacl)# 15 permit host 192.168.2.1   //配置ACL语句序列号为15

案例2:拒绝网络192.168.1.0/24访问FTP服务器192.168.2.2/24的流量通过,而允许其他任何流量,使用扩展命名ACL

Router(config)# ip access-list extended yangshufan
Router(config-ext-nacl)# deny tcp 192.168.1.0 0.0.0.255 host 192.168.2.2 eq 21
Router(config-ext-nacl)# permit ip any any

2. 删除ACL

对于命名ACL,可以删除单条ACL语句,而不必删除整个ACL。并且,ACL语句可以有选择的插入到列表某个位置,是ACL配置更加灵活方便

删除已建立的命名ACL,命名语法如下:

Router(config)# no ip access-list {standard|extended} access-list-name

删除某一ACL语句,有两种方法:

例如:在案例1删除ACL语句“permit host 192.168.1.1”

Router(config)# ip access-list standard yangshufan
Router(config-std-nacl)# no 10

还可以采用以下命令:

Router(config)# ip access-list standard yangshufan
Router(config-std-nacl)# no permit host 192.168.1.1

2. 将ACL应用于接口

创建命名ACL后,也必须将ACL应用于接口,ACL才生效。命令语法如下:

Router(config-if)# ip access-group access-list-name {in| out}

要在接口上取消ACL的应用,可以使用如下命令: 

 Router(config-if)# no ip access-group access-list-name {in| out}

3. 扩展ACL的配置实例

(1)公司新建了一台服务器(IP地址:192.168.100.100),出于安全考虑,要求如下:

* 192.168.1.0/24网段中除了192.168.1.5-192.168.1.8外,其他地址都不能访问服务器

* 公司的其他网段都可以访问服务器

配置ACL

Router(config)# ip access-list extended yangshufan
Router(config-ext-nacl)# permit ip host 192.168.1.5 host 192.168.100.100
Router(config-ext-nacl)# permit ip host 192.168.1.6 host 192.168.100.100
Router(config-ext-nacl)# permit ip host 192.168.1.7 host 192.168.100.100
Router(config-ext-nacl)# permit ip host 192.168.1.8 host 192.168.100.100
Router(config-ext-nacl)# deny ip 192.168.1.0 0.0.0.255 host 192.168.100.100
Router(config-ext-nacl)# permit any 192.168.100.100

使用show access-lists命令查看配置的ACL信息

(2)网络运行一段时间后,由于公司人员调整,需要变更访问服务器的ACL,要求如下:

* 不允许192.168.1.6和192.168.1.8主机访问服务器

* 允许192.168.1.10主机访问服务器

ACL变更配置:

Router(config)# ip access-list extended yangshufan
Router(config-ext-nacl)# no 20
Router(config-ext-nacl)# no 40
Router(config-ext-nacl)# 15 permit ip host 192.168.1.10 host 192.168.100.100

再次查看配置的ACL信息,结果如下:

注意:如果不指定序列号,新添加的ACL语句被添加到列表的末尾

时间: 2024-08-12 16:10:58

访问控制列表ACL的配置与应用的相关文章

【华为HCNA】访问控制列表ACL实例配置

[华为HCNA]访问控制列表ACL实例配置 ACL的概念访问控制列表ACL(Access Control List)可以定义一系列不同的规则,设备根据这些规则对数据包进行分类,并针对不同类型的报文进行不同的处理,从而可以实现对网络访问行为的控制.限制网络流量.提高网络性能.防止网络攻击等等. 应用场景在小型企业的网络中,现要求只有经理的PC(源地址是192.168.2.1)才能访问互联 实验目的允许主机B(经理的PC)访问互联网,禁止主机A访问互联网 网络拓扑图如下: 操作步骤 一.配置端口类型

IIS中遇到无法预览的问题(HTTP 错误 401.3 - Unauthorized 由于 Web 服务器上此资源的访问控制列表(ACL)配置或加密设置,您无权查看此目录或页面。)

在IIS中  依次执行如下操作: 网站--编辑权限--共享(为了方便可以直接将分享对象设置为everyone)--安全(直接勾选 everyone )--应用--确定. IIS中遇到无法预览的问题(HTTP 错误 401.3 - Unauthorized 由于 Web 服务器上此资源的访问控制列表(ACL)配置或加密设置,您无权查看此目录或页面.)

Azure终结点访问控制列表ACL

对于公有云来说,用户最关心的莫过于安全方面的问题了.借助本文,我们来了解下Azure中的访问控制列表. 首先我们来看下什么是终结点访问控制列表ACL? 终结点访问控制列表 (ACL) 是可用于 Azure 部署的安全增强. 利用 ACL,可以选择允许还是拒绝虚拟机终结点的流量. 此数据包筛选功能额外提供了一层安全性. 只能为终结点指定网络 ACL, 无法为虚拟网络或虚拟网络中包含的特定子网指定 ACL. 建议尽可能使用网络安全组 (NSG),而不要使用 ACL. 使用网络 ACL 可以实现以下目

ORACLE 11G 存储过程发送邮件(job),ORA-24247:网络访问被访问控制列表 (ACL) 拒绝

ORA-24247:网络访问被访问控制列表 (ACL) 拒绝 需要先使用 DBMS_NETWORK_ACL_ADMIN.CREATE_ACL 创建访问控制列表(ACL),再使用 DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL 将此 ACL 与邮件服务器相关联,最后使用 DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE 在此 ACL 为用户授与连接邮件服务器的权限. BEGINDBMS_NETWORK_ACL_ADMIN.CREATE_ACL (acl 

Linux权限、组管理和访问控制列表(ACL)

一.用户组管理 创建组 groupad命令: groupadd [OPTION]... group_name     -g GID: 指明GID号:[GID_MIN,GID_MAX]     -r: 创建系统组: CentOS 6: ID<500 CentOS 7:ID<1000 组属性修改 groupmod命令: groupmod [OPTION]... group_name     -g:GID,改变组id     -n:改变组名 groupmod -n mutest mysystem g

文件的权限和访问控制列表(ACL)

前言 文件的权限以及访问控制列表贯穿在整个的Linux使用过程中.我们知道,在Linux 中一切皆文件,因而文件的权限,就自然而然地成为了Linux使用过程中需要频繁接触到的知识内容.而文件权限这一部分地内容,又非常地复杂,因为我们将在这篇文章当中详细地介绍文件的权限,加深自己的理解,同时留作备忘. 本文将通过以下几个方面的内容来介绍文件的权限. 1.文件权限 主要介绍文件的权限,以及每种权限代表着哪些含义. 2.修改文件权限  介绍如何修改文件的权限 3.Linux 系统上特殊文件权限 介绍L

通信导论-访问控制列表ACL原理

访问控制列表ACL:当网络流量不断增长的时候,对数据流进行管理和限制的方法,允许或拒绝数据指令(设置ACL规则前测试网络连通性) 访问控制列表的功能 限制网络流量,提高网络性能 提供对通信流量的控制手段 提供网络访问的基本安全手段 ACL类型 标准ACL:仅以源IP地址为过滤标准 扩展ACL:以源IP地址.目的IP地址.TCP/UDP源端口号等为过滤标准 二层ACL 混合ACL 应用ACL,区分in和out的方向 inbound:进入路由表接口的方向 outbound:出路由表接口的方向 ACL

“TI门外汉”网路知识笔记十一 访问控制列表ACL(1标准访问列表)

访问控制列表(Access Control List,ACL) 是路由器和交换机接口的指令列表,用来控制端口进出的数据包.ACL适用于所有的被路由协议,如IP.IPX.AppleTalk等. ACL的作用: ACL可以限制网络流量.提高网络性能. ACL提供对通信流量的控制手段. ACL是提供网络安全访问的基本手段. ACL可以在路由器端口处决定哪种类型的通信流量被转发或被阻塞. 3P 原则: 在路由器上应用 ACL 的一般规则.您可以为每种协议 (per protocol).每个方向 (per

CCNA网络工程师学习进程(8)访问控制列表ACL

前面几节我们介绍了路由器的路由配置,接下来几节我们将介绍路由器的高级配置应用,包括ACL.NAT.DHCP.PPP.VPN和远程连接等的配置.     (1)ACL概述:   ACL(Access Control List)是一系列运用到路由器接口的指令列表.这些指令告诉路由器如何接收和丢弃数据包,按照一定的规则进行,如源地址.目的地址和端口号等.路由器将根据ACL中指定的条件,对经过路由器端口的数据包进行检查,ACL可以基于所有的Routed Protocols(被路由协议)对经过路由器的数据