目录
ACL概述
为什么会有ACL
随着网络的飞速发展,网络安全和网络质量问题日益突出
- 企业重要服务器资源被随意访问,导致企业机密信息泄露
- Internet病毒肆意侵略企业内网
- 网络带宽被各类业务随意占用,导致重要的业务带宽得不到保障,用户上网体验差
如何解决这些问题
以上种种问题,对正常的网络通信造成了很大的影响,为了提高网络安全和网络质量,ACL问世
ACL是什么
- ACL:访问控制列表
- 是一个包含了多个“规则”的列表,不同规则通过 “规则号”进行区分
- 每个“规则”都包含:动作+条件两部分内容
- 动作分为:允许(permit)和拒绝(deny)
- 条件分为:地址、端口、通配符
- ACL本质上是一种报文过滤器,可以根据规则来过滤数据报文,比如允许数据通过,比如拒绝数据通过
ACL的作用
- 对网络中数据报文进行过滤,做访问控制,
- 提高内网安全性, 提高带宽利用率
ACL类型
- 基本ACL:过滤三层数据报文
ACL编号: 2000~2999 条件:源IP地址
- 高级ACL:可以过滤三层数据报文也可以过滤四层数据报文
ACL编号: 3000~3999 条件:五元组(源IP/目标IP/协议号/源端口/目标端口)
二层ACL :
ACL编号: 4000~4999 用于匹配源MAC地址、目的MAC地址、802.1q优先级等
ACL组成
- ACL编号:用于标识ACL 基本:2000-2999 高级:3000-3999
- 规则:即描述报文匹配条件的判断语句
&: 规则编号:用于标识规则,范围: 0~4294967294
&:动作:包括permit/deny两种动作,表示允许/拒绝
&:匹配项:地址、端口、通配符····
ACL匹配原则
- 根据ACL规则编号从小到大匹配(编号越小越优先被匹配)
- 匹配即停止(匹配上了第一条规则,就按照规则的动作去执行,不在向下查找第二条规则)
- 如果数据报文没有匹配到第一条规则,继续向下查找第二条规则,如果匹配,则按照第二条规则的动作去执行
- 如果所有的规则都无法匹配,则执行隐含规则
- 隐含规则(默认规则):隐含规则有两个一个允许所有,一个拒绝所有
&:允许所有:只要使用traffic-filter调用ACL规则时默认规则是允许所有
&:拒绝所有:只要不使用traffic-filter调用ACL就是拒绝所有
通配符
- 使用源/目的IP地址定义为规则的匹配项时,需要在IP地址后面指定通配符掩码,确定一个地址范围
- IP地址通配符掩码与IP地址的反掩码类似,也是一个32比特位的数字字符串
- IP地址通配符掩码的作用是,定义IP地址中的哪些位将被检查
- IP地址通配符掩码也是有0和1组成的,“0”表示“检查相应的位”,“1”表示“不检查相应的位,总结:“检查0,忽略1”
- 举例:
找老婆要求: 女 18岁 漂亮 有钱 0.0.0.0 {4个字段全部检查}
找老婆要求: 女 18岁 漂亮 有钱 0.0.0.255 {只检查前3个字段}
找老婆要求: 女 18岁 漂亮 有钱 0.0.255.255 {只检查前2个字段}
找老婆要求: 女 18岁 漂亮 有钱 0.255.255.0 {检查第1和第4个字段}
找老婆要求: 女 18岁 漂亮 有钱 255.0.0.255 {检查第2和第3个字段}
192. 168. 1. 0 0.0.0.255{通配符:只检查前面3个字段}
前面 必须是192.168.1 后面不检查
ACL实验
基本ACL配置案例1
拓扑
需求
- PC1不能访问Server1
- PC2可以访问Server1
- 允许其他所有流量互通(允许PC1访问PC2)
配置思路
-分析PC1和Server1的数据转发路径
-判断在那个设备上配置ACL
-判断在那个接口上调用ACL
配置步骤
第一步:配置PC和Server的IP地址,掩码,网关
第二步:配置ACL
-配置R1的接口IP地址
-在R1中配置基本ACL(拒绝192.168.1.0/24 访问server1)
-在R1的g0/0/0调用ACL
第三步:验证与测试
PC1不能访问Server1
PC2可以访问Server1
配置命令
第一步:配置PC1/2和Server1的IP地址,掩码,网关 第二步:在R1中配置ACL R1配置: [R1]int g0/0/0 [R1-G0/0/0]ip address 192.168.100.254 24 [R1-G0/0/0]int g0/0/1 [R1-G0/0/1]ip address 192.168.1.254 24 [R1-G0/0/1]int g0/0/2 [R1-G0/0/2]ip address 192.168.2.254 24 [R1-G0/0/2]quit [R1]acl 2000 //创建基本ACL [R1-acl-basic-2000]rule 10 deny source 192.168.1.0 0.0.0.255 //配置基本ACL规则 [R1-acl-basic-2000]quit [R1]int g0/0/0 [R1-G0/0/0]traffic-filter outbound acl 2000 //在接口上调用ACL对数据报文进行过滤 第三步:测试与验证 PC1 ping Server1 不通 PC2 ping Server1 通 PC1 ping PC2 通 [R1]display acl all //查看acl [R1]display traffic-filter applied-record //查看acl调用信息 ==================================================================== 备注1:命令解析 acl 2000 rule 10 deny source 192.168.1.0 0.0.0.255 字段解析: acl 2000 :表示的ACL的名字,代表是基本ACL rule 10 :表示的是规则10 (10代表规则的编号) deny : 表示的是动作,deny代表拒绝 source : 表示的源,在当前规则中代表的是源IP地址 192.168.1.0 :在当前规则中代表的是源IP地址段 0.0.0.255 :表示的通配符,在当前规则中代表,检查的字段是192.168.1 (前三个字段) 备注2:命令解析 int g0/0/0 traffic-filter outbound acl 2000 字段解析: traffic-filter :表示的是流量过滤 outbound :表示的是出方向上过滤数据报文 备注: 一个接口的同一个方向上只能调用基于一个ACL进行报文过滤 如果要进行更改,则要先undo原来调用的acl
基本ACL配置案例2
拓扑
需求
- 不允许售后部主机(192.168.1.0/24)访问财务服务器
- 允许售后部主机访问公司其他主机
配置思路
-实现全网互通
-确定售后部和财务服务器之间的数据的转发路径
-确定配置ACL的设备
-确定调用ACL的端口
配置步骤
第一步:配置PC1/PC2/Server1的IP地址,掩码,网关
第二步:配置交换机SW1/SW2
-创建VLAN,接口加入VLAN
第三步:配置路由,让网络互通
-配置R1和R2的接口IP地址
-在R1中配置默认路由,下一跳为192.168.12.2
-在R2中配置静态路由,下一跳为192.168.12.1
第四步:在R2中配置ACL
-在R2中配置基本ACL(拒绝售后部主机访问财务服务器)
-在R2的g0/0/2接口的出方向,调用基本ACL
第五步:测试与验证
配置命令
第一步:配置PC1/PC2/Server1的IP地址,掩码,网关 第二步:配置交换机SW1/SW2 SW1配置: [SW1]vlan 10 [SW1-vlan10]quit [SW1]port-group group-member g0/0/1 g0/0/2 [SW1-port-group]port link-type access [SW1-port-group]port default vlan 10 SW2配置: [SW2]vlan 20 [SW2-vlan20]quit [SW2]port-group group-member g0/0/1 g0/0/2 [SW2-port-group]port link-type access [SW2-port-group]port default vlan 20 第三步:配置路由,让网络互通 R1配置: [R1]int g0/0/0 [R1-GigabitEthernet0/0/0]ip address 192.168.12.1 24 [R1-GigabitEthernet0/0/0]int g0/0/1 [R1-GigabitEthernet0/0/1]ip address 192.168.1.254 24 [R1-GigabitEthernet0/0/1]quit [R1]ip route-static 0.0.0.0 0 192.168.12.2 //配置默认路由 R2配置: [R2]int g0/0/0 [R2-GigabitEthernet0/0/0]ip address 192.168.12.2 24 [R2-GigabitEthernet0/0/0]int g0/0/1 [R2-GigabitEthernet0/0/1]ip address 192.168.2.254 24 [R2-GigabitEthernet0/0/1]int g0/0/2 [R2-GigabitEthernet0/0/2]ip address 192.168.3.254 24 [R2-GigabitEthernet0/0/2]quit [R2]ip route-static 192.168.1.0 24 192.168.12.1 //配置静态路由 第四步:在R2中配置ACL [R2]acl 2000 //创建基本ACL [R2-acl-basic-2000]rule 10 deny source 192.168.1.0 0.0.0.255 //配置ACL规则 [R2-acl-basic-2000]quit [R2]int g0/0/2 [R2-GigabitEthernet0/0/2]traffic-filter outbound acl 2000 //调用ACL 总结: 调用基本ACL,尽量在离目标近的接口上调用,避免数据被误杀 调用高级ACL,尽量离源近的接口上调用,避免无效的流量占用有限的带宽 第五步:测试与验证 PC1 ping 财务服务器-server1 不通 PC2 ping 财务服务器-server1 通 PC1 ping PC2 通 在R1中测试网络连通性 [R1]ping -a 192.168.1.254 192.168.3.1 不通 [R1]ping -a 192.168.12.1 192.168.3.1 通 在R2中查看acl规则和接口调用信息 <R2>display acl all //查看acl信息 <R2>display traffic-filter applied-record //查看acl调用信息
高级ACL配置案例
拓扑
需求
-售后部主机Client1仅能访问 Server1上的Web服务
-售后部主机Client1可以访问行政部的所有主机的所有服务
-售后部主机Client1不能访问网络中的其他主机
配置思路
-实现全网互通
-分析数据转发路径
-确定ACL的类别(基本&高级)
-确定配置ACL的设备
-确定调用ACL的端口
配置步骤
第一步:配置Client1/PC1/Server1的IP,掩码,网关
-开启server1的web服务
第二步:配置路由,让网络互通
-配置R1/R2/R3的接口IP地址
-在R1中配置默认路由,下一跳为192.168.12.2
-在R2中配置去往192.168.1.0/24的静态路由,下一跳为192.168.12.1
-在R2中配置去往192.168.3.0/24的静态路由,下一跳为192.168.23.3
-在R3中配置默认路由,下一跳为192.168.23.2
第三步:在R1中配置ACL
-在R1中配置高级ACL
&:允许源售后部主机访问目标服务器server1的web服务
&:允许源售后部主机访问目标行政部的主机
&:拒绝源售后部主机访问网络中其他任何主机
-在R1的g0/0/2接口的入方向,调用高级ACL
第四步:测试与验证
配置命令
第一步:配置Client1/PC1/Server1的IP,掩码,网关 第二步:配置路由,让网络互通 R1配置: [R1]int g0/0/0 [R1-GigabitEthernet0/0/0]ip address 192.168.12.1 24 [R1-GigabitEthernet0/0/0]int g0/0/2 [R1-GigabitEthernet0/0/2]ip address 192.168.1.254 24 [R1-GigabitEthernet0/0/2]quit [R1]ip route-static 0.0.0.0 0 192.168.12.2 R2配置: [R2]int g0/0/0 [R2-GigabitEthernet0/0/0]ip address 192.168.12.2 24 [R2-GigabitEthernet0/0/0]int g0/0/1 [R2-GigabitEthernet0/0/1]ip address 192.168.23.2 24 [R2-GigabitEthernet0/0/1]int g0/0/2 [R2-GigabitEthernet0/0/2]ip address 192.168.2.254 24 [R2-GigabitEthernet0/0/2]quit [R2]ip route-static 192.168.1.0 24 192.168.12.1 [R2]ip route-static 192.168.3.0 24 192.168.23.3 R3配置: [R3]int g0/0/0 [R3-GigabitEthernet0/0/0]ip address 192.168.23.3 24 [R3-GigabitEthernet0/0/0]int g0/0/2 [R3-GigabitEthernet0/0/2]ip address 192.168.3.254 24 [R3-GigabitEthernet0/0/2]quit [R3]ip route-static 0.0.0.0 0 192.168.23.2 第三步:在R1中配置ACL R1配置: [R1]acl 3000 [R1-acl-adv-3000]rule 10 permit tcp source 192.168.1.1 0 destination 192 .168.3.1 0 destination-port eq www [R1-acl-adv-3000]rule 20 permit ip source 192.168.1.1 0 destination 192. 168.2.0 0.0.0.255 [R1-acl-adv-3000]rule 30 deny ip source 192.168.1.1 0 destination any [R1-acl-adv-3000]quit [R1]int g0/0/2 [R1-GigabitEthernet0/0/2]traffic-filter inbound acl 3000 总结: 调用基本ACL,尽量在离目标近的接口上调用,避免数据被误杀 调用高级ACL,尽量离源近的接口上调用,避免无效的流量占用有限的带宽 命令解析: acl 3000 :高级acl rule 10 :规则10 permit :允许 tcp :tcp协议 ip : ip协议 source :源 192.168.1.0 :源IP地址 0 : 通配符:0代表绝对匹配,代表唯一的一个IP地址 destination :目标 192.168.3.1 0 :目标IP地址,通配符为 0 destination-port :目标端口 eq :等于 www :web服务 any : 表示所有IP地址 inbound :入向流量 备注: 如果是对售后部所有主机做规则,这样配置写通配符 rule 10 permit tcp source 192.168.1.0 0.0.0.255 rule 20 permit ip source 192.168.1.0 0.0.0.255 rule 30 deny ip source 192.168.1.0 0.0.0.255 如果是仅仅对售后部PC1做规则,这样配置写通配符 rule 10 permit tcp source 192.168.1.1 0 rule 20 permit ip source 192.168.1.1 0 rule 30 deny ip source 192.168.1.1 0 第四步:验证与测试 client1 可以访问server1的web服务 client1 可以ping 通 192.168.2.0/24 的主机 client1 不能ping 通 server1 (192.168.3.1) client1 不能ping 通 192.168.12.1 client1 不能ping 通 192.168.12.2 client1 不能ping 通 192.168.23.2 client1 不能ping 通 192.168.23.3 client1 不能ping 通 192.168.3.254
高级ACL之ICMP
拓扑
需求
-售后部主机Client1 仅仅能ping通 Server1,不能访问server1其他服务
-售后部主机Client1可以访问行政部的所有主机的所有服务
-售后部主机Client1不能访问网络中的其他主机
配置思路
-实现全网互通
-分析数据转发路径
-确定ACL的类别(基本&高级)
-确定配置ACL的设备
-确定调用ACL的端口
配置步骤
第一步:配置Client1/PC1/Server1的IP,掩码,网关
-开启server1的web服务
第二步:配置路由,让网络互通
-配置R1/R2/R3的接口IP地址
-在R1中配置默认路由,下一跳为192.168.12.2
-在R2中配置去往192.168.1.0/24的静态路由,下一跳为192.168.12.1
-在R2中配置去往192.168.3.0/24的静态路由,下一跳为192.168.23.3
-在R3中配置默认路由,下一跳为192.168.23.2
第三步:在R1中配置ACL
-在R1中配置高级ACL
&:允许源售后部主机能ping 通目标服务器server1,但是不能访问server1 的其他服务
&:允许源售后部主机访问目标行政部的主机
&:拒绝源售后部主机访问网络中其他任何主机
-在R1的g0/0/2接口的入方向,调用高级ACL
第四步:测试与验证
配置命令
第一步:配置Client1/PC1/Server1的IP,掩码,网关 第二步:配置路由,让网络互通 R1配置: [R1]int g0/0/0 [R1-GigabitEthernet0/0/0]ip address 192.168.12.1 24 [R1-GigabitEthernet0/0/0]int g0/0/2 [R1-GigabitEthernet0/0/2]ip address 192.168.1.254 24 [R1-GigabitEthernet0/0/2]quit [R1]ip route-static 0.0.0.0 0 192.168.12.2 R2配置: [R2]int g0/0/0 [R2-GigabitEthernet0/0/0]ip address 192.168.12.2 24 [R2-GigabitEthernet0/0/0]int g0/0/1 [R2-GigabitEthernet0/0/1]ip address 192.168.23.2 24 [R2-GigabitEthernet0/0/1]int g0/0/2 [R2-GigabitEthernet0/0/2]ip address 192.168.2.254 24 [R2-GigabitEthernet0/0/2]quit [R2]ip route-static 192.168.1.0 24 192.168.12.1 [R2]ip route-static 192.168.3.0 24 192.168.23.3 R3配置: [R3]int g0/0/0 [R3-GigabitEthernet0/0/0]ip address 192.168.23.3 24 [R3-GigabitEthernet0/0/0]int g0/0/2 [R3-GigabitEthernet0/0/2]ip address 192.168.3.254 24 [R3-GigabitEthernet0/0/2]quit [R3]ip route-static 0.0.0.0 0 192.168.23.2 第三步:在R1中配置ACL [R1]acl 3000 [R1-acl-adv-3000]rule 10 permit icmp source 192.168.1.1 0 destination 192.168.3.1 0 [R1-acl-adv-3000]rule 20 permit ip source 192.168.1.1 0 destination 192.168.2.0 0.0.0.255 [R1-acl-adv-3000]rule 30 deny ip source 192.168.1.1 0 destination any [R1-acl-adv-3000]quit [R1]int g0/0/2 [R1-GigabitEthernet0/0/2]traffic-filter inbound acl 3000 备注: 如果是对售后部所有主机做规则,这样配置写通配符 rule 10 permit tcp source 192.168.1.0 0.0.0.255 rule 20 permit ip source 192.168.1.0 0.0.0.255 rule 30 deny ip source 192.168.1.0 0.0.0.255 如果是仅仅对售后部PC1做规则,这样配置写通配符 rule 10 permit tcp source 192.168.1.1 0 rule 20 permit ip source 192.168.1.1 0 rule 30 deny ip source 192.168.1.1 0 第四步:验证与测试 client1 可以ping 通server1 (192.168.3.1) client1 可以ping 通 192.168.2.0/24 网段内的主机 client1 不能访问 server1 的其他任何服务,比如web服务 client1 不能ping 通 192.168.12.1 client1 不能ping 通 192.168.12.2 client1 不能ping 通 192.168.23.2 client1 不能ping 通 192.168.23.3 client1 不能ping 通 192.168.3.254
基本ACL之Telnet
拓扑
需求
- 为了便于设备管理,为设备开启远程管理功能,登录密码:HCIE
- 仅仅允许 192.168.1.254 远程登录 R2,拒绝其他所有IP地址
- 拒绝 R1的任何IP地址远程登录 R3,其他设备都可以
配置步骤
第一步:配置路由,让网络互通
-配置R1/R2/R3的接口IP地址
-在R1中配置默认路由,下一跳为192.168.12.2
-在R2中配置去往192.168.1.0/24的静态路由,下一跳为192.168.12.1
-在R2中配置去往192.168.3.0/24的静态路由,下一跳为192.168.23.3
-在R3中配置默认路由,下一跳为192.168.23.2
第二步:配置Telnet 远程
-R2/R3开启远程,远程密码:HCIE
第三步:在R2中配置基本ACL
-在R2配置基本ACL,允许源IP:192.168.1.254 远程登录R2 ,拒绝其他IP远程
-在R2的vty 虚接口调用ACL
第四步:在R3中配置基本ACL
-在R3配置基本ACL,拒绝源IP:192.168.1.254 远程登录R3
-在R3配置基本ACL,拒绝源IP:192.168.12.1 远程登录R3
-在R3配置基本ACL,允许其他所有IP地址远程登录R3
-在R3的vty 虚接口调用ACL
第五步:测试与验证
配置命令
第一步:配置路由,让网络互通 R1配置: [R1]int g0/0/0 [R1-GigabitEthernet0/0/0]ip address 192.168.12.1 24 [R1-GigabitEthernet0/0/0]int g0/0/2 [R1-GigabitEthernet0/0/2]ip address 192.168.1.254 24 [R1-GigabitEthernet0/0/2]quit [R1]ip route-static 0.0.0.0 0 192.168.12.2 R2配置: [R2]int g0/0/0 [R2-GigabitEthernet0/0/0]ip address 192.168.12.2 24 [R2-GigabitEthernet0/0/0]int g0/0/1 [R2-GigabitEthernet0/0/1]ip address 192.168.23.2 24 [R2-GigabitEthernet0/0/1]int g0/0/2 [R2-GigabitEthernet0/0/2]ip address 192.168.2.254 24 [R2-GigabitEthernet0/0/2]quit [R2]ip route-static 192.168.1.0 24 192.168.12.1 [R2]ip route-static 192.168.3.0 24 192.168.23.3 R3配置: [R3]int g0/0/0 [R3-GigabitEthernet0/0/0]ip address 192.168.23.3 24 [R3-GigabitEthernet0/0/0]int g0/0/2 [R3-GigabitEthernet0/0/2]ip address 192.168.3.254 24 [R3-GigabitEthernet0/0/2]quit [R3]ip route-static 0.0.0.0 0 192.168.23.2 第二步:配置Telnet远程 R2配置: [R2]user-interface vty 0 4 [R2-ui-vty0-4]authentication-mode password [R2-ui-vty0-4]protocol inbound all Please configure the login password (maximum length 16): HCIE R3配置: [R3]user-interface vty 0 4 [R3-ui-vty0-4]authentication-mode password [R3-ui-vty0-4]protocol inbound all Please configure the login password (maximum length 16): HCIE 第三步:R2配置基本ACL R2配置: [R2]acl 2000 [R2-acl-basic-2000]rule 10 permit source 192.168.1.254 0 [R2-acl-basic-2000]quit [R2]user-interface vty 0 4 [R2-ui-vty0-4]acl 2000 inbound //在vty虚接口调用acl 第四步:R3配置基本ACL R3配置: [R3]acl 2000 [R3-acl-basic-2000]rule 10 deny source 192.168.1.254 0 [R3-acl-basic-2000]rule 20 deny source 192.168.12.1 0 [R3-acl-basic-2000]rule 30 permit source any [R3-acl-basic-2000]quit [R3]user-interface vty 0 4 [R3-ui-vty0-4]acl 2000 inbound //在vty虚接口调用acl 隐含规则: &:允许所有:只要使用taffic-filter调用ACL规则时默认规则是允许所有 &:拒绝所有:只要不使用taffic-filter调用ACL就是拒绝所有 备注:使用ACL去过滤telnet 报文的时候,选择在vty 虚接口调用 如果路由器配置了多个接口IP地址,做ACL调用的时候要在每一个接口调用,非常麻烦 所以使用ACL过滤telent报文时,建议在user-interface vty 0 4 接口下调用 第五步:测试与验证 R1的192.168.1.254 可以远程R2的任意一个IP地址 <R1>telnet -a 192.168.1.254 192.168.12.2(R2) 可以成功 <R1>telnet -a 192.168.1.254 192.168.23.2(R2) 可以远程 <R1>telnet -a 192.168.1.254 192.168.2.254(R2) 可以远程 R1的192.168.12.1 无法远程R2 <R1>telnet -a 192.168.12.1 192.168.12.2(R2) 无法远程 <R1>telnet -a 192.168.12.1 192.168.23.2(R2) 无法远程 <R1>telnet -a 192.168.12.1 192.168.2.254(R2) 无法远程 R2可以远程R3 <R2>telnet 192.168.23.3 (R3)可以远程 R3无法远程R2 <R3>telnet 192.168.23.2 (R2)无法远程 R1无法远程R3 <R1>telnet -a 192.168.12.1 192.168.23.3(R3) 无法远程 <R1>telnet -a 192.168.12.1 192.168.3.254(R3) 无法远程