一、概述
访问控制列表(ACL)是一种基于包过滤的访问控制技术,它可以根据设定的条件对接口上的数据包进行过滤,允许其通过或丢弃。
ACL分为基本ACL和高级ACL。
二、基本ACL
基本ACL针对网络层和传输层进行过滤,也叫包过滤。
其中基本ACL中包含标准ACL和扩展ACL。
- 标准ACL只对源IP地址进行过滤,应靠近目的使用
- 在思科设备上标准ACL编号为1-99,扩展ACL编号为100-199
- 扩展ACL可以对协议、源IP地址、源端口号、目的IP地址、目的端口号进行过滤,应靠近源使用
1、配置
标准ACL
拓扑
第一步:配置IP地址
第二步:配置路由
由于ACL的使用是基于底层互通的情况下来制定一些规则,所以首先保证底层互通。
第三步:配置ACL(编号)
规则1:禁止PC3访问PC1(源为PC3,目的为PC1,所以靠近目的配置(R1))
方法一:
R1(config)#access-list 1 deny host 10.1.3.3 创建编号为1的ACL拒绝主机10.1.3.3
R1(config)#access-list 1 permit any 创建编号为1的ACL允许所有
R1(config)#interface g0/0/1
R1(config-if)#ip access-group 1 in 把ACL 1 运用到接口的in方向
方法二:
R1(config)#ip access-list standard 1 创建标准ACL 1
R1(config-std-nacl)#deny host 10.1.3.3 拒绝主机10.1.3.3
R1(config-std-nacl)#permit any 允许所有
R1(config)#interface g0/0/1
R1(config-if)#ip access-group 1 in 把ACL 1 运用到接口的in方向
ACL一般用在接口上,其中包括入站ACL和出站ACL
- 入站ACL:在数据包进入接口时检查ACL规则过后才会被转发到出接口(入站为in)
- 出站ACL:在数据包进入接口被转发到出接口后,在出接口检查ACL判断是否转发数据(出站为out)
注意:ACL对路由器自己产生的数据包不起作用
第四步:验证
R1#show access-lists 可以查看ACL
- 前面的10,20为ACL条目(ACE)的编号,后面的match为匹配的数据包个数
- ACL查询是从ACE编号小的开始查
- ACL有一条隐式拒绝所有的ACE条目,所以在使用deny的ACL条目最后都要加一条permit any的ACE条目
分别使用PC2和PC3去ping PC1,查看结果
PC2可以ping通,PC3不能ping通
ACL用到VTY接口上
规则1:拒绝主机10.1.3.3远程登录R2,允许其他主机远程登录R2
R2(config)#access-list 2 deny 10.1.3.3 创建编号为2的ACL拒绝10.1.3.3
R2(config)#access-list 2 permit any 创建编号为2的ACL允许所有
R2(config)#line vty 0 4 进入VTY接口
R2(config-line)#password cisco 创建密码cisco
R2(config-line)#login 启用密码验证
R2(config-line)#access-class 2 in 将ACL 2 用到in方向
使用PC2 和PC3 远程登录R2
PC2:远程登录成功
PC3:远程登录失败
扩展ACL
在原有的拓扑上添加一个Server
规则1:拒绝PC1向server发出ping请求消息
规则2:允许PC1访问server的http服务
规则3:拒绝PC1访问server的FTP服务
扩展ACL靠近源配置,所以在R1上配置
R1(config)#ip access-list extended 100 创建扩展ACL100
R1(config-ext-nacl)#deny icmp host 10.1.1.2 host 10.1.3.4 echo 拒绝原IP 10.1.1.2 目的IP 10.1.3.4 使用ICMP的echo消息
R1(config-ext-nacl)#permit tcp host 10.1.1.2 host 10.1.3.4 eq 80 允许原IP 10.1.1.2 目的IP 10.1.3.4 使用TCP的80端口(http)
R1(config-ext-nacl)#deny tcp host 10.1.1.2 host 10.1.3.4 eq ftp 拒绝原IP 10.1.1.2 目的IP 10.1.3.4 使用tcp的FTP服务(20,21号端口)
R1(config-ext-nacl)#permit ip any any 允许所有
R1(config)#interface g0/0/0 进入g0/0/0接口
R1(config-if)#ip access-group 100 in 将ACL 100 用到接口的in方向
验证
PC1 ping server:失败
PC1 ping PC3 :成功
PC1 访问server web服务:成功
PC1 访问 server FTP服务:失败
R1#show access-lists 查看每条ACE匹配的数据包
2、关于配置
标准ACL
access-list 【1-99】 【permit / deny】 【address / any / host】 【通配符掩码】
通配符掩码:0代表匹配1代表不匹配 和ospf、eigrp 里面的一样
例如:ACL 10 拒绝 192.168.10.0/24 网段
access-list 10 deny 192.168.10.0 0.0.0.255
扩展ACL
access-list 【100-199】【permit / deny】【ahp /eigrp / esp gre / icmp / ip / ospf / tcp / udp】源【address / any / host】 【通配符掩码】【匹配的端口号】目的【address / any / host】 【通配符掩码】【匹配的端口号】
例如:ACL100 允许 10.1.1.0/24 网段的32769 端口号 去往20.1.1.0/24 网段的80端口 的TCP流量
access-list 100 permit tcp 10.1.1.0 0.0.0.255 eq 32769 20.1.1.0 0.0.0.255 eq 80
注意:
- 所有的ACL最后都具有隐式拒绝所有的ACE条目
- ACL要挂接在接口上才会起作用
- 一个出站 IPv4 ACL、一个入站 IPv4 ACL、一个入站 IPv6 ACL、一个出站 IPv6 ACL