前言
ACL本质上是一种报文过滤器,规则是过滤器的滤芯,设备基于这些规则进行报文匹配,可以过滤出特定的报文,并根据应用ACL的业务模块的处理策略来允许或阻止该报文通过
一、ACL概述
1、ACL简介
ACL是Access Control List的简称,中文是访问控制列表,ACL表中包含了一系列的规则,所谓规则,是指描述报文匹配条件的判断语句,这些条件可以是报文的源地址、目的地址、端口号等,简单来说,ACL其实是人为定义的一组或几组规则,以便设备判断是否执行用户指定的动作,抽象来说,通过ACL,可以对报文进行分类,将具有某类共同特征的报文划分为一类,来为同一类报文提供相同的服务,也可以对不同类的报文提供不同的服务
2、ACL分类
(1)基本ACL
基本ACL编号范围为2000~2999,规则中只包含源IP地址,对设备的CPU消耗较少,可用于简单的部署,但是使用场景有限,不能提供强大的安全保障
(2)高级ACL
高级ACL编号范围为3000~3999,相较于基本ACL,高级ACL提供更高的扩展性,可以对流量进行更精细的匹配,通过配置高级ACL,可以阻止特定主机或者整个网段的源或者目标,除此之外,还可以使用协议信息(IP、ICMP、TCP、UDP)去过滤相应的流量
(3)二层ACL
二层ACL编号范围为4000~4999,可根据报文的以太网帧头信息来定义规则,在公司的内部网络中,想对特定的终端进行访问权限控制,这时就需要二层ACL,使用二层ACL,可以根据源MAC地址、目的MAC地址、802.1p优先级、二层协议类型等二层信息对流量进行管控
(4)用户自定义ACL
用户自定义ACL编号范围为5000~5999,可根据偏移位置和偏移量从报文中提取出一段内容进行匹配
(5)用户ACL
用户ACL编号范围为6000~6031,由于企业内部同部门的工作人员的终端不在同一个网段难以管理,需要将其纳入一个用户组,并对其用户组进行访问权限管理,这时候就需要用户ACL,用户ACL在高级ACL的基础上增加了用户组的配置项,可以实现对不同用户组的流量管控
3、ACL组成
(1)ACL标识
使用数字标识ACL:不同的类型的ACL使用不同的数字进行标识
使用名称标识ACL:可以使用字符来标识ACL,就像用域名代替IP地址一样,更加方便记忆
(2)ACL规则
规则编号:用于标识ACL规则,所有规则均按照规则编号从小到大进行排序
动作:包括permit/deny两种动作,表示设备对所匹配的数据包接受或者丢弃
匹配项:ACL定义了极其丰富的匹配项,包括生效时间段、IP协议(ICMP、TCP、UDP等)、源/目的地址以及相应的端口号(21、23、80等)
4、ACL匹配机制
首先系统会查找设备上是否配置了ACL
- 如果ACL不存在,则返回ACL匹配结果为:不匹配
- 如果ACL存在,则查找设备是否配置了ACL规则
- 如果规则不存在,则返回ACL匹配结果为:不匹配
- 如果规则存在,则系统会从ACL中编号最小的规则开始查找
- 如果匹配上了permit规则,则停止查找规则,并返回ACL匹配结果为:匹配(允许)
- 如果匹配上了deny规则,则停止查找规则,并返回ACL匹配结果为:匹配(拒绝)
- 如果未匹配上规则,则继续查找下一条规则,以此循环,如果一直查到最后一条规则,报文仍未匹配上,则返回ACL匹配结果为:不匹配
报文与ACL规则匹配后,会产生两种匹配结果:“匹配”和“不匹配”
- 匹配(命中规则):指存在ACL,且在ACL中查找到了符合匹配条件的规则,不论匹配的动作是“permit”还是“deny”,都称为“匹配”,而不是只是匹配上permit规则才算“匹配”
- 不匹配(未命中规则):指不存在ACL,或ACL中无规则,再或者在ACL中遍历了所有规则都没有找到符合匹配条件的规则
5、ACL步长
步长,是指系统自动为ACL规则分配编号时,每个相邻规则编号之间的差值,ACL(特指基本ACL、高级ACL、二层ACL、用户ACL)的缺省步长为5,系统为ACL中首条未手工指定编号的规则分配编号时,使用步长值作为该规则的起始编号;为后续规则分配编号时,则使用大于当前ACL内最大规则编号且是步长整数倍的最小整数作为规则编号,如果重新调整了步长值(例如调整为2),系统则会自动从当前步长值开始重新排列规则编号,规则编号变成2、4、6…,恢复步长值为缺省值后,系统则会立刻按照缺省步长重新调整规则编号,规则编号变成5、10、15…
6、ACL的匹配顺序
共有两种ACL匹配顺序:配置顺序(config模式)和自动排序(auto模式),缺省的ACL匹配顺序是配置顺序
(1)配置顺序
系统按照ACL规则编号从小到大的顺序进行报文匹配,规则编号越小越容易被匹配
- 如果配置规则时指定了规则编号,则规则编号越小,规则插入位置越靠前,该规则越先被匹配
- 如果配置规则时未指定规则编号,则由系统自动为其分配一个编号,该编号是一个大于当前ACL内最大规则编号且是步长整数倍的最小整数,因此该规则会被最后匹配
(2)自动排序
自动排序是指系统使用“深度优先”的原则,将规则按照精确度从高到低进行排序,并按照精确度从高到低的顺序进行报文匹配,规则中定义的匹配项限制越严格,规则的精确度就越高,即优先级越高,系统越先匹配
7、ACL应用场景
(1)在NAT中使用ACL
通过NAT的端口映射可使得外网访问内部网络,考虑到内部的网络安全,不可能允许所有的外部用户访问内部网络,这时可以设置ACL规则并应用在企业路由器上,使得特定的外网用户可以访问内部网络
(2)在防火墙中使用ACL
防火墙用在内外网络边缘处,防止外部网络对内部网络的入侵,也可以用来保护网络内部大型服务器和重要的资源(如数据),由于ACL直接在设备的转发硬件中配置,在防火墙中配置ACL在保护网络安全的同时不会影响服务器的性能
(3)在QoS中使用ACL
ACL应用在QoS的流策略中,可以实现不同网段用户之间访问权限的限制,从而避免用户之间随意访问形成安全隐患
8、常见TCP/UDP端口号
(1)TCP
端口号 | 字符串 | 协议 | 说明 |
7 | echo | Echo | 计算机命令 |
9 | discard | Discard | 用于连接测试的空服务 |
13 | daytime | Daytime | 给请求主机发送日期和时间 |
19 | CHARgen | Character generator | 字符生成服务;发送无止境的字符流 |
20 | ftp-data | FTP data connections | FTP数据端口 |
21 | ftp | File Transfer Protocol(FTP) | 文件传输协议(FTP)端口 |
23 | telnet | Telnet | Telnet服务 |
25 | smtp | Simple Mail Transport Protocol(SMTP) | 简单邮件传输协议 |
37 | time | Time | 时间协议 |
43 | whois | Nickname(WHOIS) | 目录服务 |
49 | tacacs | TAC Access Control System (TACACS) | 用于基于TCP/IP验证和访问的访问控制系统(TACACS登录主机协议) |
53 | domain | Domain Name Service(DNS) | 域名服务 |
70 | gopher | Gopher | 信息检索协议(互联网文档搜寻和检索) |
79 | finger | Finger | 用于用户联系信息的Finger服务,查询远程主机在线用户等信息 |
80 | www | World Wide Web(HTTP) | 用于万维网(WWW)服务的超文本传输协议(HTTP),用于网页浏览 |
101 | hostname | NIC hostname server | NIC机器上的主机名服务 |
109 | pop2 | Post Office Protocol v2 | 邮件协议-版本2 |
110 | pop3 | Post Office Protocol v3 | 邮件协议-版本3 |
111 | sunrpc | Sun Remote Procedure Call (RPC) | SUN公司的远程过程调用(RPC)协议,用于远程命令执行,被网络文件系统(NFS)使用 |
119 | nntp | Network News Transport Protocol(NNTP) | 网络新闻传输协议,承载USENET通信 |
179 | bgp | Border Gateway Protocol (BGP) | 边界网关协议 |
194 | irc | Internet Relay Chat(IRC) | 互联网中继聊天(多线交谈协议) |
512 | exec | Exec (rsh) | 用于对远程执行的进程进行验证 |
513 | login | Login (rlogin) | 远程登录 |
514 | cmd | Remote commands | 远程命令,不必登录的远程shell(rshell)和远程复制(rcp) |
515 | lpd | Printer service | 打印机(lpr)假脱机 |
517 | talk | Talk | 远程对话服务和客户 |
540 | uucp | Unix-to-Unix Copy Program | Unix到Unix复制服务 |
543 | klogin | Kerberos login | Kerberos版本5 (v5)远程登录 |
544 | kshell | Kerberos shell | Kerberos版本5 (v5)远程shell |
(2)UDP
端口号 | 字符串 | 协议 | 说明 |
7 | echo | Echo | 计算机命令 |
9 | discard | Discard | 用于连接测试的空服务 |
37 | time | Time | 时间协议 |
42 | nameserver | Host Name Server | 主机名服务 |
53 | dns | Domain Name Service (DNS) | 域名服务 |
65 | tacacs-ds | TACACS-Database Service | TACACS数据库服务 |
67 | bootps | Bootstrap Protocol Server | 引导程序协议 (BOOTP)服务端, DHCP服务使用 |
68 | bootpc | Bootstrap Protocol Client | 引导程序协议 (BOOTP)客户端, DHCP客户使用 |
69 | tftp | Trivial File Transfer Protocol (TFTP) | 小文件传输协议 |
90 | dnsix | DNSIX Security Attribute Token Map | DNSIX安全属性标记图 |
111 | sunrpc | SUN Remote Procedure Call (SUN RPC) | SUN公司的远程过程调用(RPC)协议, 用于远程命令执行, 被网络文件系统(NFS)使用 |
123 | ntp | Network Time Protocol (NTP) | 网络时间协议,蠕虫病毒会利用 |
137 | netbios-ns | NETBIOS Name Service | NETBIOS名称服务 |
138 | netbios-dgm | NETBIOS Datagram Service | NETBIOS数据报服务 |
139 | netbios-ssn | NETBIOS Session Service | NETBIOS会话服务 |
161 | snmp | SNMP | 简单网络管理协议 |
162 | snmptrap | SNMPTRAP | SNMP陷阱 |
177 | xdmcp | X Display Manager Control Protocol (XDMCP) | X显示管理器控制协议 |
434 | mobilip-ag | MobileIP-Agent | 移动IP代理 |
435 | mobilip-mn | MobileIP-MN | 移动IP管理 |
512 | biff | Mail notify | 异步邮件,可用来通知用户有邮件到达 |
513 | who | Who | 登录的用户列表 |
514 | syslog | Syslog | UNIX系统日志服务 |
517 | talk | Talk | 远程对话服务器和客户端 |
520 | rip | Routing Information Protocol | RIP路由协议 |
二、ACL配置
1、案例
通过配置ACL禁止客户机1访问FTP服务,允许客户机2正常访问
2、配置过程
(1)AR1
(2)AR2
(3)L2-SW1
3、测试
(1)FTP
(2)客户机1
(3)客户机2
结语
ACL作为一个过滤器,设备通过应用ACL来阻止和允许特定流量的流入和流出,如果没有它,任何流量都会自由流入和流出,使得网络容易受到攻击