1. 概述
1.1 背景介绍
日志服务联合网络团队一起推出了包括VPC flowlog、CEN flowlog、VBR flowlog等在内的多种网络产品流日志,用于VPC的策略统计、弹性网卡流量统计以及网段间流量统计,帮助您快速、有效地监控和分析网络流日志,发现流量异常根源,实现网络流量的审计告警等功能。
虽然客户可以根据实际情况选择开通 VPC/CEN/VBR flowlog,但是由于CEN和VBR flowlog对所用的产品版本有严格要求,部分客户无法升级到合适版本的情况下,无法开启对应的CEN和VBR flowlog。由于VPC flowlog可以针对ENI/VSwitch/VPC 三个维度来采集,所以VPC flowlog是包含所有ECS通过 CEN 和 VBR 对外访问的所有流量的。针对客户无法直接使用CEN和VBR flowlog的情况,可以通过开启VPC flowlog后,对流日志进行过滤的方式来获得客户所需的 CEN 和 VBR 流量数据。
本文就通过一个客户的实际案例开介绍如何使用在无法直接开启CEN flowlog的情况下,使用SLS的数据加工能力,从VPC flowlog的数据中过滤出客户需要的流量日志出来。该客户由于使用了CEN 1.0版,并经过了大量定开,无法升级到CEN2.0版,所以无法直接开通CEN flowlog。经过研究讨论,可以通过对VPC flowlog数据进行过滤,就能获取客户需要的两个region之间不同网段ECS间相互访问的流量日志。
1.2 目标读者
无法直接使用CEN和VBR flowlog,但可以开通VPC flowlog的客户、和架构师们。
1.3 适用场景
本文介绍的最佳实践适合如下场景:
无法直接开通CEN 和 VBR flowlog
可以开通VPC flowlog
明确知道所需流量过滤规则的场景
2. 方案介绍
2.1 方案说明
根据客户的需求,整个方案分为采集、过滤、拉取三个部分。
采集:在VPC 中开启流日志,将日志导入SLS中
过滤:根据客户提供的过滤规则,使用数据加工将日志过滤到一个新的logstore中
拉取:客户通过下载日志的方式将日志拉取到其线下安全平台中分析
2.2 架构图
2.3 前提条件
已经创建VPC、vSwitch、ENI
已经开通SLS
3. 操作步骤
3.1 开通流日志
1.打开“专有网络”产品控制台,进入“运维与监控”-“流日志”页面,点击“创建流日志”按钮。
2.在“创建流日志”页面填写需要创建流日志的源和目标信息后,点击确定后就完成了流日志的创建
流日志来源配置:
资源类型:可为“专有网络”、“交换机”、“弹性网卡”三种网络资源类型创建流日志。
资源实例:根据选择的资源类型选择对应的资源实例
流量类型:“全部流量”表示记录所有的请求流量;“被访问控制允许的流量”表示正确接收的请求流量;“被访问控制拒绝的流量”表示拒绝接收的请求流量
流日志目标存放库配置:
Project和logstore:如果没有创建专门用于存放VPC flowlog的project和logstore的话,可以在本页面进行创建。
勾选“开启流日志分析报表功能”确保可以在SLS中看到采集到的VPC flowlog
3.可以在流日志页面看到新增加的流日志采集作业,可以停止和删除该作业。
3.2 日志过滤
1.登录日志服务控制台,进入上个步骤配置的Project和logstore,可以看到流日志已经发送到该logstore了。
2.在当前project下创建一个新logstore,比如取名叫:vpc-flowlog-vswitch-etl,并开启全文索引。
3.在logstore查询页面中,点击数据加工按钮,进入数据加工配置页面,根据客户的需求,编写数据加工语句。需求如下:
sourceIP和destIP都属于10.0.0.0/8网段
需要过滤sourceIP是10.200.0.0/16,destIP是10.200.0.0/16
需要过滤sourceIP是10.200.0.0/16,destIP是10.100.0.0/16
需要过滤sourceIP是10.100.0.0/16,destIP是10.200.0.0/16
需要过滤TCP端口(源端口或目的端口)8080和8081
只保留这些字段:dstaddr/dstport/action/bytes/__time__/srcaddr/protocol/packets/srcport
根据如上规则编写的数据加工语句如下:
e_keep(
ip_cidrmatch("10.0.0.0/8", v("srcaddr"))
and ip_cidrmatch("10.0.0.0/8", v("dstaddr"))
)
e_drop(
ip_cidrmatch("10.200.0.0/16", v("srcaddr"))
and ip_cidrmatch("10.200.0.0/16", v("dstaddr"))
)
e_drop(
ip_cidrmatch("10.200.0.0/16", v("srcaddr"))
and ip_cidrmatch("10.100.0.0/16", v("dstaddr"))
)
e_drop(
ip_cidrmatch("10.100.0.0/16", v("srcaddr"))
and ip_cidrmatch("10.200.0.0/16", v("dstaddr"))
)
e_drop(v("protocol") == "1")
e_drop((v("protocol") == "6") and (v("srcport") == "8080" or v("dstport") == "8080"))
e_drop((v("protocol") == "6") and (v("srcport") == "8081" or v("dstport") == "8081"))
e_keep_fields(
"dstaddr",
"dstport",
"action",
"bytes",
"__time__",
"srcaddr",
"protocol",
"packets",
"srcport",
regex=False,
)
4.点击“保存数据加工”按钮,进入创建数据加工作业的页面。选择加工后的数据存储目标,这里选择前面创建的logstore:vpc-flowlog-vswitch-etl,根据实际情况选择加工范围,这里选“所有”。点击确定就完成了数据加工作业的创建。可以根据需要选择是否在随后出现的对话框中“开启监控”。
5.在目标logstore中,可以看到客户所需的CEN流日志。
3.3 拉取日志
日志服务提供多种方法可以拉取日志,包括日志投递、消费、日志下载等方式获取过滤后的日志。本例中,客户使用页面下载的方式将日志下载到本地后使用。
1.查询到需要的日志后,点击下载日志按钮,进入下载日志页面。
2.根据需要选择下载日志的参数,点击确认后,后台会启动日志导出任务。
3.任务执行完毕后,就可以点击“下载”按钮下载日志到本地了。