访问控制列表(ACL)是一种基于包过滤的流控制技术,在路由器、交换机和防火墙等网络设备中被广泛应用,用于限制网络中用户、进程或设备的访问权限,以实现网络传输中的数据报文过滤和数据报文分类的功能:
基本概念
- ACE:即访问控制条目,是包含 “允许(permit)” 或 “拒绝(deny)” 两种动作以及过滤规则的一条语句。每个 ACE 都有一个序号,该序号可由设备自动分配或者手动配置,一条 ACL 中包含一个或者多个 ACE.
- 步长:当设备为 ACE 自动分配序号时,两个相邻 ACE 序号之间的差值称为步长。通过改变步长,可以在两个 ACE 之间插入新的 ACE.
- 过滤域和过滤域模板:过滤域指的是生成一条 ACE 时,根据报文中的哪些字段对报文进行识别、分类,过滤域模板则是这些字段的组合.
- ACL 规则:指的是 ACE 过滤域模板对应的值,例如源 IP 地址、目的 IP 地址、IP 协议、TCP 目的端口等信息.
分类
- 标准 IP 访问控制列表:编号范围是从 1 到 99,仅匹配 IP 包中的源地址或源地址中的一部分,可对匹配的包采取拒绝或允许两个操作1.
- 扩展 IP 访问控制列表:编号范围是从 100 到 199,比标准 IP 访问控制列表具有更多的匹配项,包括协议类型、源地址、目的地址、源端口、目的端口、建立连接的和 IP 优先级等1.
- 命名的 IP 访问控制列表:以列表名代替列表编号来定义 IP 访问控制列表,同样包括标准和扩展两种列表,定义过滤的语句与编号方式中相似1.
- 标准 IPX 访问控制列表:编号范围是 800-899,检查 IPX 源网络号和目的网络号,同样可以检查源地址和目的地址的节点号部分1.
- 扩展 IPX 访问控制列表:编号范围是 900-999,在标准 IPX 访问控制列表的基础上,增加了对 IPX 报头中协议类型、源 socket、目标 socket 等字段的检查1.
- 命名的 IPX 访问控制列表:使用列表名取代列表编号,从而方便定义和引用列表,同样有标准和扩展之分1.
作用
- 数据报文过滤:通过 ACL 规则,能够控制设备是否转发数据报文,或者限制用户访问服务,例如允许或拒绝特定 IP 地址或网段的设备访问某个网络资源1.
- 数据报文分类:ACL 规则对数据报文进行分类,以便其他应用(如 QoS、策略路由等)通过调用 ACL,能够对不同类别的数据报文进行区别处理,例如根据不同的应用协议或端口号对报文进行分类,为不同类型的流量分配不同的优先级或采取不同的路由策略.
工作原理
当网络设备收到一个数据报文时,会按照 ACL 中定义的规则顺序进行匹配检查。一旦找到匹配的规则,就会执行相应的允许或拒绝动作,不再继续匹配后续规则。如果所有规则都不匹配,则根据设备的默认配置来处理报文,通常默认是允许报文通过。
应用场景
- 企业网络出口控制:限制内部网络用户对外部网络的访问权限,例如只允许特定部门的用户访问互联网,或者禁止访问某些不安全的网站1.
- 服务器访问控制:保护企业内部的服务器资源,只允许授权的用户或网段访问服务器上的特定服务,如 HTTP、FTP、SSH 等1.
- 网络安全防护:防止网络中的报文攻击,例如通过 ACL 规则拒绝来自特定恶意 IP 地址或网段的流量,或者限制对某些敏感端口的访问1.
- VLAN 间访问控制:在交换机上配置 ACL,限制不同 VLAN 之间的通信,实现不同部门或用户组之间的网络隔离,提高网络安全性.
配置命令示例(以华为设备为例)
以下是一些基本的 ACL 配置和应用命令:
- 创建标准 ACL:
acl number 2000
rule 5 deny source 192.168.1.0 0.0.0.255
rule 10 permit source any
上述命令创建了一个编号为 2000 的标准 ACL,第一条规则拒绝源 IP 地址为 192.168.1.0/24 网段的流量,第二条规则允许其他所有源 IP 地址的流量通过。
- 创建扩展 ACL:
acl number 3000
rule 15 deny tcp source 192.168.2.10 0.0.0.0 destination 10.0.0.1 0.0.0.0 destination-port eq 23
rule 20 permit ip source any destination any
此命令创建了一个编号为 3000 的扩展 ACL,第一条规则拒绝源 IP 地址为 192.168.2.10 的设备访问目的 IP 地址为 10.0.0.1 的设备的 23 端口(Telnet 端口),第二条规则允许所有的 IP 流量通过。
- 将 ACL 应用到接口:
interface GigabitEthernet 0/0/1
traffic-filter inbound acl 2000
该命令将编号为 2000 的 ACL 应用到 GigabitEthernet 0/0/1 接口的入方向,对进入该接口的流量进行过滤。
ACL 的配置需要根据具体的网络需求和安全策略进行精心设计和调整,以达到最佳的网络访问控制效果.