计算机网络通信技术与协议(七)———关于ACL的详细解释
今日学习状态:
关于ACL,我们在之前的博文中有简要的提及到,今天我们将ACL作为一个专题进行讲解:
目录
ACL成立背景:
ACL(Access Control List,访问控制列表):
五元组:
举个例子:
工作原理(基于包过滤技术):其核心在于对数据包进行匹配和过滤
图示:
实验部分:
网络拓扑图:
详细的数据已经标注在拓扑图中,启用OSPF,实现各PC之间可以互相访问
配置完成图:
最终效果图(让各PC之间相互通信):
接下来进行VTY的配置,开启两台路由器的Telnet服务,登录密码为admin@123
配置代码:
接下来对ACL进行配置,配置标准ACL,使得PC1不能与PC2进行访问,其余PC不影响:
配置代码:设备名称R1:
实现效果:
配置标准ACL使得只有PC1可以远程登录R2,其余的PC都不可以。
配置代码:配置设备R2
实现效果:
使用扩展ACL实现R2只允许PC1远程登录,(注意是扩展ACL)
配置代码:
实现效果:
使用扩展ACL实现PC1可以pingPC3,但PC3禁止pingPC1,其余设备不受限制。
配置代码:
实现效果:
ACL成立背景:
早期的网络多依赖物理隔离或简单密码进行访问控制,但随着互联网的兴起,未授权访问和流量拥塞问题日益严重。企业重要的服务器资源被随意访问,会导致机密信息泄露,造成安全隐患。为了解决这种棘手的问题,需要一种精细化的权限管理工具来保护网络资源。
随着计算机技术的发展,尤其是多用户操作系统和网络设备的出现,访问控制的复杂性日益上升。
这时就要引入今天的主题,ACL(Access Control List,访问控制列表)(与上篇文章内容一致)
ACL(Access Control List,访问控制列表):
ACL是一种核心安全机制,用于限制网络中的用户、进程或设备对资源的访问权限。
五元组:
源IP地址:数据包发送方的IP地址,用于识别流量来源
目的IP地址:数据包接收方的IP地址,用于确定流量目标。
源端口:发送方应用程序使用的端口,标识具体服务或进程。
目的端口:接收方应用程序使用的端口号,例如HTTP服务使用80端口。
协议类型:传输层协议(如TCP、UDP、ICMP),用于区分流量特性。
一句话总结:五元组就是“谁发的、发给谁、谁发的程序、谁收的程序、用啥方式”,这5个信息凑一块,就能精准定位一条网络数据流。
ACL就像小区的门卫,负责检查“谁进谁出”。五元组就是门卫手里的“检查清单”,用来决定放行还是拦截数据。
举个例子:
规则1:允许 任何设备 → 微信服务器(443端口)(因为你要用微信)。
规则2:拒绝 任何设备 → 黑客服务器(6666端口)(因为那是恶意软件常用的端口)。
规则3:默认拒绝 所有其他流量(安全起见,没写规则的流量全拦截)。
门卫(ACL)的工作流程: 数据包来了,门卫先看它的五元组(比如:你的手机IP → 微信服务器IP,端口12345→443,TCP协议)。
对比规则清单: 如果匹配规则1,就放行(允许用微信)。 如果匹配规则2,就拦截(禁止连黑客服务器)。 如果都不匹配,就按规则3处理(默认拒绝)。 重点:ACL规则是从上到下一条条检查的,第一个匹配的规则生效,后面的规则就不看了。
工作原理(基于包过滤技术):其核心在于对数据包进行匹配和过滤
数据包捕获与信息提取:
当数据包到达配置有ACL的网络设备接口时,设备首先捕获该数据包。
设备从数据包中提取关键信息(五元组)
规则匹配:
将收集到的信息与ACL中定义的规则进行匹配。ACL中的规则按照一定的顺序进行排序。
匹配过程遵循“一旦命中即停止匹配”的机制。
决策与执行:
根据获取的数据包与ACL中的规则进行匹配并执行相关操作。
图示:
实验部分:
我们在进行实验的同时需要注意ACL的配置是有基本ACL配置与扩展ACL的配置,同时内部内容可能还会涉及到VTY之类的知识点:
网络拓扑图:
详细的数据已经标注在拓扑图中,启用OSPF,实现各PC之间可以互相访问
配置完成图:
最终效果图(让各PC之间相互通信):
如果无法通信,查询IP地址是否出错,或者SW1-2对于VLAN的配置出错。
接下来进行VTY的配置,开启两台路由器的Telnet服务,登录密码为admin@123
配置代码:
R2(config)#line vty 0 4
R2(config-line)#transport input telnet
R2(config-line)#password admin@123
R2(config-line)#login
R2(config-line)#privilege level 15
R2(config-line)#exi
R2(config)#do show run | se vty
line vty 0 4
privilege level 15
password admin@123
login
transport input telnet
接下来对ACL进行配置,配置标准ACL,使得PC1不能与PC2进行访问,其余PC不影响:
配置代码:设备名称R1:
R1(config)#access-list 1 deny host 192.168.10.1
R1(config)#access-list 1 permit any -------思科设备隐式拒绝所有
R1(config)#exit
R1(config)#int e0/0.20
R1(config-subif)#ip access-group 1 ?
in inbound packets
out outbound packetsR1(config-subif)#ip access-group 1 out
R1(config-subif)#exi
实现效果:
配置标准ACL使得只有PC1可以远程登录R2,其余的PC都不可以。
配置代码:配置设备R2
R2(config)#access-list 1 permit host 192.168.10.1
R2(config)#line vty 0 4R2(config-line)#access-class 1 in
R2(config-line)#exi
R2(config)#
实现效果:
远程登录代码:(PC1 telnet + 设备接口ip)
PC4#telnet 192.168.40.254
使用扩展ACL实现R2只允许PC1远程登录,(注意是扩展ACL)
注意扩展ACL:
R1(config)#access-list 100 deny ?
<0-255> An IP protocol number
ahp Authentication Header Protocol
eigrp Cisco's EIGRP routing protocol
esp Encapsulation Security Payload
gre Cisco's GRE tunneling
icmp Internet Control Message Protocol
igmp Internet Gateway Message Protocol
ip Any Internet Protocol
ipinip IP in IP tunneling
nos KA9Q NOS compatible IP over IP tunneling
object-group Service object group
ospf OSPF routing protocol
pcp Payload Compression Protocol
pim Protocol Independent Multicast
sctp Stream Control Transmission Protocol
tcp Transmission Control Protocol
udp User Datagram ProtocolR1(config)#access-list 100 deny
解释说明:
- 使用预定义的协议名称,直接拒绝特定类型的流量:
tcp
: 拒绝TCP流量udp
: 拒绝UDP流量icmp
: 拒绝ICMP流量(如Ping)esp
: 拒绝IPsec ESP封装流量gre
: 拒绝GRE隧道流量ospf
: 拒绝OSPF路由协议流量eigrp
: 拒绝EIGRP路由协议流量- 其他协议如
igmp
,pim
,sctp
等。
配置代码:
R2(config)#access-list 100 permit tcp host 192.168.10.1 host 12.12.12.2 eq telnet
R2(config)#access-list 100 permit tcp host 192.168.10.1 host 192.168.30.254 eq telnet
R2(config)#access-list 100 permit tcp host 192.168.10.1 host 192.168.40.254 eq telnet
R2(config)#line vty 0 4
R2(config-line)#access-class 100 in
R2(config-line)#exi
实现效果:
使用扩展ACL实现PC1可以pingPC3,但PC3禁止pingPC1,其余设备不受限制。
配置代码:
R1(config)#access-list 100 deny icmp host 192.168.30.1 host 192.168.10.1 echo
R1(config)#access-list 100 permit ip any any
R1(config)#do show run | se acc
access-list 100 deny icmp host 192.168.30.1 host 192.168.10.1 echo
access-list 100 permit ip any any
R1(config-if)#int e0/1
R1(config-if)#ip access-group 100 ?
in inbound packets
out outbound packetsR1(config-if)#ip access-group 100 in
R1(config-if)#exi
R1(config)#