ACL概述
Access Control list, ACL 称之为 访问控制列表, 该表中包含了很多规则
每个规则都是用来匹配数据的.
每个规则中都有对数据的处理发送: 允许/拒绝
作用
- 控制路由条目实现路径是否互通.
- 控制数据包转发 —实现流量控制.
ACL 类型
- 基本ACL(标准): 2000-2999, 仅使用报文的源IP地址、分片信息和生效时间段信息来定义规则。
- 高级ACL: 3000-3999, 可使用IPv4报文的源IP地址、目的IP地址、IP协议类型、ICMP类型、TCP源/目的端口号、UDP源/目的端口号、生效时间段等来定义规则。
- 二层ACL: 4000~4999, 使用报文的以太网帧头信息来定义规则,如根据源MAC地址、目的MAC地址、二层协议类型等。
- 用户自定义ACL: 5000~5999, 使用报文头、偏移位置、字符串掩码和用户自定义字符串来定义规则。
- 用户ACL: 6000~6999, 既可使用IPv4报文的源IP地址或源UCL(User Control List)组,也可使用目的IP地址或目的UCL组、IP协议类型、ICMP类型、TCP源端口/目的端口、UDP源端口/目的端口号等来定义规则。
ACL概述
主要用于在众多类型的数据包中, “匹配/抓取” 感兴趣的数据
是一个包含多个 “规则” 的列表, 不同规则通过 “规则号” 进行区分.
每个 “规则” 都包含: 动作 + 条件 两部分内容
动作分为: 允许(permit) 和 拒绝(deny)
条件分为: 地址(address) 和 通配符(wildcard bits).
掩码,反掩码和通配符的区别
- 掩码: 区分网络位和主机位. 1在左边,0在右边, 0 和 1 不会交叉,
- 反掩码: 有用且仅在OSPF中应用. 0在左边, 1在右边, 0 和 1 不会交叉.
- 通配符: 0 和 1 出现, 没有规律.
为什么要使用ACL?
为了企业的业务安全, 要求不同部门对服务器有不同的权限.
例: PC1不能访问Server, PC2允许访问Server , 允许其他流量互通.
如果想要控制设备之间的连通性, 必须搞清楚数据转发的路径.
在数据转发路径上的某些节点设备上, 使用控制策略, 过滤数据包.
解决方案: 现网中, 实现流量访问控制的方法有两种
- 控制路由条目 -在数据包转发路径上的三层设备上, 通过路由策略, 拒绝路由条目, 从而确保数据包无法互通.
- 控制数据包转发 – 在数据包转发路径上的任何一个设备的接口下, 调用专门的 “流量控制工具”, 比如ACL
ACL解析
举例:
- acl 2000
- rule 10 permit source 192.168.1.0 0.0.0.255
解析:
- 2000, 表示的是 “ACL的名字” ,可以通过ID表示, 也可以通过字符表示
- rule, 表示的是 “规则”
- 10, 表示的是 “规则号” , 取值范围是0 – 4924967294
- permit, 表示的是动作 – 允许; (deny 表示的是动作 – 拒绝)
- source, 表示当前的 “规则” 检查的是数据包的 “源”地址
- “源IP地址”, 表示的是”源IP地址的范围”
- 通配符, 表示的是 “与源IP地址对应的通配符”
- 根据0来匹配数据包的源IP地址
- 0.0.0.255, 表示匹配前三个字节的IP地址
- 0.0.0.0, 表示匹配所有IP地址
- 如source 192.168.1.0 0.0.0.255,表示匹配 192.168.1.x的源IP地址.
ACL类型
基本ACL: 只能匹配 “源IP地址” ,不能匹配其他的信息, 匹配数据不精准, 所用的 ID 取值范围是: 2000 – 2999.
高级ACL: 可以匹配 “源IP地址”, “目标IP地址”, “协议号”, “端口号”等, 匹配的数据更加精准, 所用的 ID 取值范围是: 3000 – 3999
二层ACL: 4000-4999
配置思路
确定PC1与Server之间的数据转发路径.
确定转发路径上的转发设备有哪些, 判断在哪个设备上配置ACL
判断数据包在每个端口上的转发方向, 确定ACL的配置命令和调用方向.
配置命令
配置ACL
acl 2000
rule 10 deny source 192.168.1.0 0.0.0.255
调用ACL
interfacce g0/0/0
traffic-filter outbound acl 2000
验证与测试
PC1> ping 192.168.100.1, 不通
PC1> ping 192.168.2.1, 通
PC2>ping 192.168.100.1 通
思考:
是否还存在其他的配置ACL的方法? 应该如何配置?
ACL小结
- ACL用来匹配数据包, 并实现数据包的过滤
- ACL的类型分为: 基本ACL和高级ACL, 使用不通的ID范围来表示
- 基本ACL, 只能匹配数据包的源IP地址, 匹配数据不精准
- 高级ACL, 可以同时匹配数据包的源IP, 目标IP, 源端口, 目标端口, 协议号等字段, 匹配数据包更加精准.
- ACL必须先配置, 再调用, 并且在端口调用是由有方向的.
基本ACL实战项目
项目背景:公司存在两个部门,为了确保业务安全, 需规划安全控制策略.
1.不允许”售后服务部”以任何方式访问”财务部”服务器.
2.”售后服务部”可以访问网络中的任何其他设备.
需求:
1.售后服务部不能访问服务器
2.其他都可以访问
配置思路:
- 配置终端设备
- 终端设备: IP,掩码,网关
- 服务器设备: IP,掩码,网关
- (命令略)
- 配置网络设备
- 交换机: 默认为hybrid, 可以不配置.
- 路由器: 接口IP, 路由(默认路由或静态路由)
- [r1]ip route-static 192.168.2.0 24 192.168.12.2
- [r1]ip route-static 192.168.3.0 24 192.168.12.2
- 或使用默认路由: 0.0.0.0 0 192.168.12.2
- [r2]ip route-static 192.168.1.0 24 192.168.12.1
- 或使用默认路由: 0.0.0.0 0 192.168.12.1
- 确认网络连通性
- 当前未配置ACL所有设备都可通信
- 若出现网络不通, 检查各设备配置.
- 配置ACL
- 确定需配置的路由器(R2)
- 过滤源IP地址为”售后服务部”网段.
- [R2]acl 2001
- [R2]rule 10 deny source 192.168.1.1 0.0.0.255
- quit
- 调用ACL(确定在哪个端口调用→在R2的g0/0/2, 数据出口方向)
- [R2-acl-basic-2001]interface g0/0/2
- [R2-GigabitEthernet0/0/2]traffic-filter outbound acl 2001
- 验证ACL
- display acl all //查看设备上所有的ACL
- display traffic-filter applied-record //查看设备上已被调用的ACL
- 售后部ping服务器: request timeout, 无法与服务器通信.
- 售后器ping其他设备, 正常通信.
- 路由器R1 ping -a 192.168.1.254 192.168.3.1, request timeout, 无法通信.
- 路由器R1 ping -a 192.168.12.1 192.168.3.1,request timeout, 可以通信.
- 财务部ping服务器和其他设备都可通信.
- 思考:
- 能不能在R2的g0/0/0配置ACL过滤’财务部服务器’3.0/24网段的流量呢? 如果配置了,会发生什么情况?
- 能不能在R1上配置ACL呢?
总结:
- 基本ACL只能匹配源IP地址, 过滤数据的效率非常高.
- 基本ACL有一个默认的隐含的动作是”允许所有”.
- 基本ACL尽量调用在距离”目标设备”最近的设备/接口上.
高级ACL
项目背景
- 为了增强企业内网安全, 实施业务隔离以及访问权限控制.
- 三个部门属于不同的IP地址网段.
- 售后仅仅能 ping 通 Server, 不能访问其他服务.
- 售后部可以访问行政部的所有设备的任何服务.
- 除了以上权限外, 售后部不能访问网络中的任何其他地方.
项目分析
不同部门之间存在特定业务流量控制, 所以用高级ACL
高级ACL可以精确区分流量, 尽量调用在距离源设备进的地方.
配置思路
- 配置设备IP, 路由条目, 确保不同网段互通
- 测试设备之间连通性, 当前所有设备均可通信
- 确定ACL设备
- 确定ACL接口
- 配置高级ACL
- 在R1连接PC1的接口入方向, 调用ACL
- 验证并测试ACL
配置命令
- acl 3000
- rule 10 permit tcp source 192.168.1.1 0.0.0.0 destination 192.168.3.1 0.0.0.0 destination-port eq 80 //允许IP地址为192.168.1.1的主机对 Server 的TCP 80 端口的访问数据通过.
- rule 20 permit ip source 192.168.1.1 0.0.0.0 destination 192.168.2.0 0.0.0.255
- rule 30 deny ip source 192.168.1.1 0 destination any
验证与测试ACL
- display acl all //查看设备上的所有ACL
- display traffic-filter applied-record //查看设备上已经被调用的ACL
- PC1通过 http 客户端访问 server, 成功.
- PC1通过 ping 访问 server, 失败.
- PC1 ping PC2, 成功.
- PC1 访问其他网段,失败
总结1
高级ACL匹配数据更加精确, 适合细分业务流量的管理控制.
高级ACL尽量调用在距离 源设备 近的设备/接口上.
高级ACL之ICMP
项目背景
售后部仅仅能 ping 通 server, 不能访问其他服务
售后部可以访问行政部的所有设备的任何服务
除了上述权限外, 售后部不能访问网络中的任何地方.
项目分析
不同部门之间存在特定业务流量控制, 所以使用高级ACL
高级AC可以精确区分流量, 尽量在距离源设备最近的地方调用.
配置思路
- 配置各设备IP地址, 路由条目
- 测试各设备连通性, 当前未做任何其他配置, 本网络中的所有设备均可通信.
- 确定部署ACL的设备
- 确定调用ACL的端口
- 配置高级ACL,精确匹配业务流量.
- 在R1与 售后部设备接口的入方向, 调用ACL
- 测试并验证ACL
配置命令
- acl 3000
- rule 10 permit icmp source 192.168.1.1 0 destination 192.168.3.1 0
- rule 20 permit ip source 192.168.1.1 0 destination 192.168.2.0 0.0.0.255
- rule 30 deny ip source 192.168.1.1 0 destination any
- interface g0/0/0
- traffic-filter inbound acl 3000
验证与测试ACL
- display acl all
- display traffic-filter applied-record //查看设备上已经被调用的ACL
- PC1通过 http 客户端访问 server, 失败
- PC1通过 ping 访问 server, 成功
- PC1 ping PC2, 成功.
- PC1 访问其他网段, 失败
总结2:
高级ACL匹配数据更加精准, 适合细分业务流量的管理控制.
高级ACL尽量调用在距离 源端口 最近的设备/接口上.
一个ACL中存在多个 条目 时, 数据的匹配顺序是按照 rule号 从小到大依次执行的.
在ACL条目匹配数据过程中, 如果有一个条目匹配成功, 后续的条目不再查看, 直接执行动作 ‘permit’ 或 ‘deny’ .
如果ACL中的所有条目, 都没有匹配成功, 则执行最后一个隐含条目:
- ACL最后一个隐含动作是 ‘拒绝所有’
- 但是用 traffic-filter 调用时, ACL默认行为是 ‘允许所有’
高级ACL值Telnet
项目背景
为了便于设备管理, 为设备开启远程管理功能, 登陆密码: HHHH
仅仅允许 192.168.1.254 远程登录 R2, 其他设备不可以.
拒绝R1 的任何 IP 地址远程登录 R3, 其他设备可以.
项目分析
针对远程登陆操作, 访问的都是设备 “远程登录虚拟接口”.
对于虚拟接口, 使用 ‘基本ACL’, 可实现 ‘远程登陆’过滤.
配置思路
- 配置IP地址, 路由条目
- 测试设备连通性, 当前状态下所有设备均可互相通信.
- 确定部署ACL的设备 — R2和R3.
- 确定部署ACL的接口 — R2和R3的 ‘远程访问’ 虚拟接口.
- 配置基本ACL, 仅仅匹配允许的 IP 地址即可.
- 在R2 和 R3 的 ‘远程登录’ 虚拟接口的入方向, 调用 ACL.
- 验证并测试ACL.
配置命令
配置R2和R3的远程管理功能
- R2
- user-interface vty 0 4 //vty 是 Virtual Teletype Terminal 的缩写,即虚拟终端。它允许用户通过 Telnet 或 SSH 等协议远程登录到设备,进行配置和管理。0 4 表示虚拟终端的编号范围,从 0 到 4,共包含五个虚拟终端界面。这意味着最多可以有五个用户同时通过远程登录连接到设备。
- authentication-mode password
please configure the login password(maximum length 16): HHHH
- R3
- user-interface vty 0 4
- authentication-mode password
please configure the login password(maximum length 16):HHHH
创建ACL
- R2
- acl 2000
- rule 10 permit source 192.168.1.254 0
- R3
- acl 2000
- rule 10 deny source 192.168.1.254 0
- rule 20 deny source 192.168.12.1 0.0.0.0
- rule 30 permit source any
调用ACL
- R2
- user-interface vty 0 4
- acl 2000 inbound
- R3
- user-interface vty 0 4
- acl 2000 inbound
验证与测试ACL
- [R2]display acl all
- [R3]display acl all
- <R1>telnet -a 192.168.1.254 192.168.12.2, 登陆成功
- <R1>telnet 192.168.12.2, 登录失败
- <R1>telnet 192.168.23.3, 登录失败
- <R1>telnet -a 192.168.1.254 192.168.13.1, 登录失败
- <R2>telnet 192.168.23.3, 登录成功
总结
ACL最后一个隐含动作是’拒绝所有’.
但是用traffic-filter 调用时, ACL的默认行为是 ‘允许所有’.
远程登录一个设备时, 设备使用 ‘虚拟接口’: vty 接口.
(ノ°ο°)ノ
111