30-安全技术,ACL
1.ACL:Access Control List 访问控制列表 (第一代防火墙)
![]()
ACL基于数据包的包头的4个字段来定义过滤规则:
ip头的源地址、目标地址;
tcp头的源端口、目标端口;
例如:
![]()
2.ACL应用场景
1)acl可以用来过滤流量;
如图:
通过定义acl规则,使192.168.1.0网段的主机A和主机B可以上网,但无法访问内网服务器A;
192.168.2.0网段的主机C和主机D不可以上网,能访问服务器A;
2)通过acl筛选数据后做后续动作
例如:
利用acl规则,筛选出192.168.2.0网段的数据,然后给这些数据做加密
![]()
3.ACL工作原理
4.ACL类型
分为数字型ACL和命名ACL
1)数字型ACL
对于高级的设备支持匹配的序号越多;
![]()
基本ACL:
比较简单,只能匹配源地址
例如:
acl number 2000
acl编号为2000时,只能给源ip地址制定规则;无法给目标ip、源端口、目标端口定匹配规则;
2)命名型ACL
优点:更容易识别该
例如:acl name nogame
![]()
命名型ACL可以自己制定类型;
默认为高级类型advance,也就是相当于编号3000-3999,也就是可以指定源IP地址、目标IP地址、源端口、目标端口的规则;
命名型ACL也可以后面跟数字指定编ACL编号;
如果不指定编号,会自动分配一个的ACL编号(从大到小分配)
查看ACL信息:
![]()
5.正掩码、反掩码、通配符
在配置acl过滤规则时,会使用到ip地址;
ip地址后面跟的是通配符,而不是掩码;
例如:
0.0.0.255就是地址1.0.0.0的通配符
表示1.1.1.x的地址为能匹配的地址;
比如,1.1.1.2可以匹配;1.1.0.2就无法匹配;
![]()
通配符和反掩码类似,都是0的位表示必须匹配,1的位表示无需匹配;
通配符比反掩码更自由,也就是不需要连续的0和连续的1;
6.ACL配置
示例1:
如图在路由器RTA的右接口g0/0/0的出去的流量调用了acl2000;
拒绝了192.168.1.0网段的流量从RTA的g0/0/0接口出去;
导致的结果是,主机A无法联网,主机B可以联网;
![]()
示例2:
定义了一个acl3000,有两条规则;
导致的结果是:
主机A无法访问FTP服务器;
主机B无法访问私有服务器;
![]()
7.ACL调用方向建议
1】基本ACL尽量调用在离目标最近的出站接口Outbound
基本acl只能允许或拒绝所有协议
如下图,禁止pc2访问pc4的acl最好在AR2的g0/0/1接口调用,因为离目标pc4最近;
如果在AR1的g0/0/1调用,可能导致pc2无法和pc1通信;
2】高级ACL尽量调用在离源头最近的入站接口Inbound
如下图,高级acl禁止pc1访问pc4的80端口;
最好在AR1的g0/0/1端口调用;这样的好处是,目标流量在开始就被阻止了,减轻了中间链路的负担;
因为高级acl可以指定更息的规则,因此不必担心其它流量被阻止;
3】ACL的规则一般是先细后粗
sys acl 3000 #创建一个名为3000的acl #acl的规则:允许1.1.1.1:1024到2.2.2.2:80的流量 rule 1 permit tcp source 1.1.1.1 0.0.0.0 source-port eq 1024 destination 2.2.2.2 0.0.0.0 destination-port eq 80 acl规则定义时并不一定4个元素全需要,例如,只给源地址定义规则: acl 2000 rule 1 permit so 192.168.10.0 0.0.0.0 #允许来自192.168.10.0的流量查看已经配置的acl规则:
d th
- ACL由一条或多条规则组成
- 每条规则必须选择动作:允许permit或拒绝deny
- 每条规则都会一个id序列号(缺省值为5,步长默认为5)
- 序列号越小越先进行匹配
- 只要有一条规则和报文匹配,就停止查找,称为命中规则
- 查找完所有规则,如果没有符合条件的规则,称为未命中规则
- ACL只是一个流量匹配工具,需要应用在实际的接口或其他技术内才会激活
- 应用在接口时必须选择方向:入站或出站
- 不能过滤由设备自己产生的流量
分类 | 编号范围 | 参数 |
基本ACL | 2000~2999 | 源IP地址等 |
高级ACL | 3000~3999 | 源IP地址、目标IP地址、源端口、目标端口等 |
二层ACL | 4000~4999 | 源MAC地址、目标MAC地址、以太网帧类型等 |
dis acl all可以看到: 前面指定的命名型acl name nogame,默认类型高级Advanced acl,自动分配了一个编号3997
名称 | 规则 | 作用 | 举例 | 备注 |
掩码 | 连续的1和0 | IP地址 | 255.255.255.0 | 1对应网络位,0对应主机位 |
反掩码 | 连续的1和0 | 路由协议 | 0.0.0.255 | 0表示必须的位,1表示无须匹配的位 反掩码 = 255.255.255.255 - 正掩码 |
通配符 | 任意的1和0 | ACL | 0.0.255.0 | 0必须匹配,1无须匹配 |
举例 | 备注 |
192.168.0.1 0.0.0.0 | 匹配一个主机地址 (只有192.168.0.1能匹配) |
192.168.0.0 0.0.0.255 | 匹配一个网段 (192.168.0.0 - 192.168.0.255) |
192.168.0.1 0.0.0.254 | 匹配网段内奇数地址 254 = 11111110 最后一位为0,必须匹配, 也就是最后一位必须和192.168.0.1的最后一位一样 192.168.0.1的最后一位 = 00000001的最后一位 = 1 匹配的地址为:192.168.0.xxxxxxx1 |
192.168.0.0 0.0.0.254 | 匹配网段内偶数地址 |
x.x.x.x 255.255.255.255 | 匹配所有地址 |
命令 | 配置 |
Acl 2000 | 创建一个基本ACL |
Rule 5 permit/deny source 192.168.1.0 0.0.0.255 | 配置ACL的规则:允许或拒绝源地址为192.168.1.0网段内的所有流量 |
Acl 3000 | 创建一个高级ACL |
Rule 5 permit/deny tcp source 192.168.1.0 0.0.0.255 destination 8.8.8.8 0 destination-port eq 80 eq 等于 gt 大于 lt 小于 range 范围 | 配置ACL的规则:允许或拒绝源地址192.168.1.0网段内所有流量去访问8.8.8.8的80端口 |
traffic-filter inbound/outbound acl 2000 | 在接口下调用,出去的流量/进来的流量中匹配ACL2000 |
Display acl 2000 | 验证ACL2000 |
Display traffic-filter applied-record | 查看设备上所有基于ACL调用情况 |