ACL概述
为什么会有ACL
- 因为我们要过滤数据流量,要做访问控制,要保障内网安全
ACL是什么
- ACL:访问控制列表
- 是一个包含了多个规则的列表,不同规则通过规则号进行区分
- 每个规则都包含动作+条件两部分内容
- 动作分为:允许(permit)和拒绝(deny)
- 条件分为:地址、端口、通配符
- ACL本质上是一种报文过滤器,可以根据规则来过滤数据报文,比如允许数据通过,比如拒绝数据通过
ACL作用
- 对网络中数据报文进行过滤,做访问控制
- 提高内网安全性,提高带宽利用率
ACL类型
- 基本ACL:过滤三层数据报文
编号:2000~2999,条件:源ip地址 - 高级ACL:可以过滤三层数据报文,也可以过滤四层数据报文
编号:3000~3999,条件:五元组(源ip/目标ip/协议号/源端口/目标端口) - 二层ACL:
编号:4000~4999,用于匹配源MAC地址、目的MAC地址、802.1q优先级等
ACL组成
- ACL编号:用于标识ACL,基本ACL(2000~ 2999 )、高级ACL(3000~ 3999)
- 规则:即描述报文匹配条件的判断语句
规则编号:用于标识规则,范围:0~4294967294,规则号越小越好,可以手动指定,也可根据步长值自动分配
动作:包括permit/deny两种动作,表示允许/拒绝
匹配项:地址、端口、通配符····
ACL匹配原则
- 根据ACL规则编号从小到大匹配(编号越小越优先被匹配)
- 匹配即停止(匹配上了第一条规则,就按照规则的动作去执行,不在向下查找第二条规则)
- 如果数据报文没有匹配到第一条规则,继续向下查找第二条规则,如果匹配,则按照第二条规则的动作去执行
- 如果所有的规则都无法匹配,则执行隐含规则
- 隐含规则(默认规则):隐含规则有两个一个允许所有,一个拒绝所有
拒绝所有:只要不使用traffic-filter调用ACL就是拒绝所有(默认拒绝所有)
允许所有:只要使用traffic-filter调用ACL规则时默认规则是允许所有
匹配流程:
- 首先系统会查找设备上是否配置了ACL。
- 如果ACL不存在,则返回ACL匹配结果为:不匹配。
- 如果ACL存在,则查找设备是否配置了ACL规则。
- 如果规则不存在,则返回ACL匹配结果为:不匹配。
- 如果规则存在,则系统会从ACL中编号最小的规则开始查找。
- 如果匹配上了permit规则,则停止查找规则,并返回ACL匹配结果为:匹配(允许)。
- 如果匹配上了deny规则,则停止查找规则,并返回ACL匹配结果为:匹配(拒绝)。
- 如果未匹配上规则,则继续查找下一条规则,以此循环。如果一直查到最后一条规则,报文仍未匹配上,则返回ACL匹配结果为:不匹配。
从整个ACL匹配流程可以看出,报文与ACL规则匹配后,会产生两种匹配结果:“匹配”和“不匹配”。 - 匹配(命中规则):指存在ACL,且在ACL中查找到了符合匹配条件的规则。不论匹配的动作是“permit”还是“deny”,都称为“匹配”,而不是只是匹配上permit规则才算“匹配”。
- 不匹配(未命中规则):指不存在ACL,或ACL中无规则,再或者在ACL中遍历了所有规则都没有找到符合匹配条件的规则。以上三种情况,都叫做“不匹配”。
- 匹配原则:一旦命中即停止匹配。
通配符
- 使用源/目的IP地址定义为规则的匹配项时,需要在IP地址后面指定通配符,确定一个地址范围
- IP地址通配符与IP地址的反掩码类似,也是一个32比特位的数字字符串
- IP地址通配符的作用是,定义IP地址中的哪些位将被检查
- IP地址通配符也是有0和1组成的,“0”表示“检查相应的位”,“1”表示“不检查相应的位,总结:“检查0,忽略1”
ACL实验
基本ACL
需求
- 不允许售后部主机(192.168.1.0/24)访问财务服务器
- 允许售后部主机访问公司其他主机
配置步骤
第一步:配置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,尽量在离目标近的接口上调用,避免数据被误杀
第五步:测试与验证
- 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规则和接口调用信息
- display acl all //查看acl信息
- display traffic-filter applied-record //查看acl调用信息
高级ACL配置案例
需求
需求1:-售后部主机Client1仅能访问 Server1上的Web服务,但是不能访问server1的其他任何服务
解析:
- Client1只能访问server1的80端口,只能访问服务器部署的网站(web服务)
- Client1不能ping 通server1
- Client1 不能访问server1 的ftp服务
需求2:-售后部主机Client1可以访问行政部的所有主机的所有服务
解析: - Client1 可以ping通PC1,可以ping通192.168.2.0/24网段的所有IP
需求3:-售后部主机Client1不能访问网络中的其他任何主机
解析: - Client1 不能访问其他的路由器的接口IP地址,如:12.0/24 23.0/24
配置步骤
第一步:配置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 3000 :高级acl
- rule 10 :规则10
- permit :允许
- tcp :tcp协议: 四层流量
- ip : ip协议 :三层流量
- source :源
- 192.168.1.1:源IP地址
- 0.0.0.0. :通配符:0代表绝对匹配,代表唯一的一个IP地址
- destination :目标
- 192.168.3.1 0.0.0.0 :目标IP地址,通配符为 0
- destination-port :目标端口
- eq :等于
- www :web服务: 默认是80端口
- any :表示任意IP地址,你可以理解为所有
- inbound :入向流量
ps:
如果是对售后部所有主机做规则,这样配置写通配符 - 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