30-安全技术,ACL
1.ACL:Access Control List 访问控制列表 (第一代防火墙)
ACL基于数据包的包头的4个字段来定义过滤规则:
ip头的源地址、目标地址;
tcp头的源端口、目标端口;
例如:
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
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工作原理
-
ACL由一条或多条规则组成
-
每条规则必须选择动作:允许permit或拒绝deny
-
每条规则都会一个id序列号(缺省值为5,步长默认为5)
-
序列号越小越先进行匹配
-
只要有一条规则和报文匹配,就停止查找,称为命中规则
-
查找完所有规则,如果没有符合条件的规则,称为未命中规则
-
ACL只是一个流量匹配工具,需要应用在实际的接口或其他技术内才会激活
-
应用在接口时必须选择方向:入站或出站
-
不能过滤由设备自己产生的流量
先细后粗:
在配置ACL时,通常会将较细的规则序列号设置设置较小来提高优先级;
例如,172.16.1.1/24 属于172.16.1.0/24网段 ;
在配置ACL时,如果 172.16.1.0/24网段的规则优先级较高,根据命中规则,172.16.1.1/24会匹配该网段的规则之后停止查找;
导致优先级较低的172.16.1.1/24的规则无法生效;
4.ACL类型
分为数字型ACL和命名ACL
1)数字型ACL
对于高级的设备支持匹配的序号越多;
分类
|
编号范围
|
参数
|
基本ACL
|
2000~2999
|
源IP地址等
|
高级ACL
|
3000~3999
|
源IP地址、目标IP地址、源端口、目标端口等
|
二层ACL
|
4000~4999
|
源MAC地址、目标MAC地址、以太网帧类型等
|
基本ACL:
比较简单,只能匹配源地址
例如:
acl number 2000
acl编号为2000时,只能给源ip地址制定规则;无法给目标ip、源端口、目标端口定匹配规则;
2)命名型ACL
优点:更容易识别该
例如:acl name nogame
命名型ACL可以自己制定类型;
默认为高级类型advance,也就是相当于编号3000-3999,也就是可以指定源IP地址、目标IP地址、源端口、目标端口的规则;
命名型ACL也可以后面跟数字指定编ACL编号;
如果不指定编号,会自动分配一个的ACL编号(从大到小分配)
查看ACL信息:
dis acl all
前面指定的命名型acl name nogame,默认类型高级Advanced acl,自动分配了一个编号3997
5.正掩码、反掩码、通配符
在配置acl过滤规则时,会使用到ip地址;
ip地址后面跟的是通配符,而不是掩码;
例如:
0.0.0.255就是地址1.0.0.0的通配符
表示1.1.1.x的地址为能匹配的地址;
比如,1.1.1.2可以匹配;1.1.0.2就无法匹配;
名称
|
规则
|
作用
|
举例
|
备注
|
掩码
|
连续的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无须匹配
|
通配符和反掩码类似,都是0的位表示必须匹配,1的位表示无需匹配;
通配符比反掩码更自由,也就是不需要连续的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
|
匹配所有地址
|
6.ACL配置
命令
|
配置
|
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调用情况
|
示例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的规则一般是先细后粗