WAF日志转储OBS或DIS实现日志长期保存
应用场景
业务运行过程中,WAF会持续产生海量访问与攻击日志,开启WAF全量日志功能后,云日志服务LTS可以存储365天以内的日志,超出存储时间的日志数据将会被自动删除,适合短期日志的高频检索、实时排查。
使用云日志服务LTS转储功能,WAF结合云日志服务LTS联动对象存储服务OBS或数据接入服务DIS的分层存储方案,可实现冷热数据分离管理。日常运维中,运维人员仅通过LTS查询近期日志,即可满足故障排查、攻击溯源等即时需求;若同时配置LTS实时转储功能,便可将全量日志同步推送至OBS或DIS,实现日志长期保存。当遇到合规审计、历史安全事件回溯等场景时,可按需从OBS或DIS中调取归档日志。整套方案无需人工干预,自动化完成日志流转与层级切换,在满足数据留存要求的前提下,兼顾使用效率与成本控制,适配中高流量业务长期稳定运行。
方案架构
本方案采用Web应用防火墙WAF+云日志服务LTS+对象存储服务OBS或数据接入服务DIS轻量化组合架构,面向多IAM账号业务场景,实现WAF日志采集、短期运维、长期归档、容灾备份、成本优化全流程管理。方案架构如图1所示。
- 日志源:Web应用防火墙WAF
Web应用防火墙在执行流量转发、攻击拦截、访问控制的同时,实时生成结构化日志,包含日志分类、攻击类型、防护动作、请求IP、源站返回的响应状态码等核心字段,开启WAF全量日志功能,按照规则主动将日志推送到关联的LTS日志流,是整个架构的数据入口。
- 热数据处理层:云日志服务LTS
作为近期日志主力载体,负责接收、存储WAF原始日志,支持日志结构化解析、关键词检索、字段过滤与异常告警。LTS 适配高频查询场景,满足运维人员日常故障排查、实时攻击溯源、短期安全审计需求,同时内置转储能力,将日志不间断同步至 OBS,保障数据不中断、不丢失。
- 冷数据归档层:对象存储 OBS或数据接入服务DIS
承接LTS转储的全量日志,作为长期容灾备份与归档载体。将老旧日志从标准存储依次迁移至低频访问存储、归档存储,实现冷热数据分离。既满足等保、行业监管对日志长期留存的硬性要求,又大幅降低海量历史日志的存储成本,仅在历史事件回溯、合规抽查时按需读取归档数据。
表1 冷数据归档层选择OBS与DIS的差别 对比项
冷数据归档层选择OBS
冷数据归档层选择DIS
数据类型
格式化的日志文件
实时流数据
延迟
高延迟、非实时(分钟级)
低延迟(秒级)
适用场景
长期保存、合规审计
实时分析、告警、监控
与LTS集成
双向集成(转储归档与导入检索)
单向集成(转储归档)
资源与成本规划
| 资源 | 资源说明 | 每月费用 |
|---|---|---|
| 云日志服务 |
| 具体的计费方式及标准请参考计费说明。 |
| 日志转储 | 分为日志基础转储流量和日志高级转储流量。
| 具体的计费方式及标准请参考计费说明。 |
| Web应用防火墙 | 云模式-标准版:
| 具体的计费方式及标准请参考计费说明。 |
前提条件
- 已将网站成功接入WAF。
- 若日志转储至OBS请确认已创建OBS桶。详细请参考创建桶。
- 若日志转储至DIS请确认已开通DIS,详细请参考开通DIS通道。日志转储至DIS仅支持华东-上海一、华北-北京四、华北-北京一、华东-上海二、华南-广州、中国-香港、亚太-新加坡局点,其他局点需要给DIS服务提交工单申请开通才能使用。详细操作请参考提交工单。
步骤一:购买云模式标准版
以购买WAF云模式标准版为例进行介绍。
- 登录Web应用防火墙控制台。
- 在页面右上角,单击“购买WAF实例”,进入购买页面,“WAF模式”选择“云模式”。
- “区域”:根据防护业务的所在区域就近选择购买的WAF区域。
- “版本规格”:选择“标准版”。
- “扩展包”及“购买时长”:根据具体情况进行选择。
- 确认参数配置无误后,在页面右下角单击“立即购买”。
- 确认订单详情无误后,阅读并勾选《Web应用防火墙免责声明》,单击“去支付”,完成购买操作。
- 进入“付款”页面,选择付款方式进行付款。
订单支付成功后,单击“进入Web应用防火墙控制台”,进入WAF“总览”页面。将鼠标悬停在“产品信息”区域,查看已购实例版本及其详细规格。
步骤二:将网站信息添加到WAF
此处以云模式-CNAME接入为例进行介绍。
- 云模式-ELB接入方式请参见将网站接入WAF防护(云模式-ELB接入)。
- 独享模式接入方式请参见将网站接入WAF防护(独享模式)。
- 在左侧导航栏,单击“接入管理”。
在开始添加防护网站前,可单击页面右上角的“流程引导”,了解接入流程。
- 在“接入管理”页面,选择“云模式-CNAME”页签后,单击“添加防护网站”。
若仅开通一种接入模式,则直接单击“添加防护网站”。
- 根据界面提示,配置网站信息,如表3所示。 图2 基础信息配置
表3 重点参数说明 参数
参数说明
取值样例
防护域名
需要添加到WAF中防护的域名。
- 域名已完成备案
- 支持单域名(例如,一级域名example.com,二级域名www.example.com等)和泛域名(例如,*.example.com)。
www.example.com
防护端口
需要防护的域名对应的业务端口。
标准端口
服务器配置
网站服务器地址的配置。包括对外协议、源站协议、源站地址、源站端口和权重。
- 对外协议:客户端请求访问服务器的协议类型。包括“HTTP”、“HTTPS”两种协议类型。
- 源站协议:Web应用防火墙转发客户端请求的协议类型。包括“HTTP”、“HTTPS”两种协议类型。
- 源站地址:客户端访问的网站服务器的公网IP地址(一般对应该域名在DNS服务商处配置的A记录)或者域名(一般对应该域名在DNS服务商处配置的CNAME)。
- 源站端口:WAF转发客户端请求到服务器的业务端口。
- 权重:负载均衡算法将按权重将请求分配给源站。
对外协议:HTTP
源站协议:HTTP
源站地址:IPv4 XXX.XXX.1.1
源站端口:80
IP标记
网站接入WAF后,“已使用七层代理”默认为“是”。该场景下,WAF无法直接获取客户端真实IP,导致基于IP的防护规则失效。选择IP标记后,可指定客户端IP的判定方式,帮助WAF获取客户端真实IP。- $remote_sockaddr:当WAF前无其他代理时,如果报文存在TOA(TCP Option Address),且不希望WAF以TCP Option Address作为客户端IP时,选择该选项。配置后,WAF会以报文的3层源IP作为客户端真实IP。
- $remote_addr:当WAF前存在四层代理时,如果希望WAF以TCP连接IP作为客户端真实IP,选择该选项。
- x-forwarded-for:当WAF前存在七层代理时,选择该选项后,WAF会以X-Forwarded-For(XFF)中的首个IP地址作为客户端真实IP。
- 自定义:当WAF前存在七层代理时,选择该项并配置字段名后,WAF优先从配置的字段中获取客户端真实IP。配置多个字段时,WAF从左到右依次读取客户端真实IP。
如果WAF从自定义字段中未获取到客户端真实IP,将依次从CDN-Src-Ip、X-Real-Ip、X-Forwarded-For、$remote_addr字段获取客户端真实IP。
x-forwarded-for
- 单击“下一步”,完成防护网站基本信息填写。根据“添加防护网站”面板提示,完成如下操作: 图3 添加域名完成
完成上述步骤后,您可以在域名列表,查看已添加的域名“接入状态”。此时,域名“接入状态”为“未接入”,原因为“修改DNS解析”。
步骤三:将防护日志配置到LTS
- 登录Web应用防火墙控制台。
- 在控制台左上角,单击
图标,选择区域或项目。 - (可选) 如果您已开通企业项目,在左侧导航栏上方单击“按企业项目筛选”下拉框,选择您所在的企业项目。完成后,页面将为您展示该企业项目下的相关数据。
- 在左侧导航栏,单击“防护事件”。
- 如果WAF还未对接云日志服务(LTS),需要在“全量日志”页签,单击“对接LTS配置”,完成对接操作。
表4 对接LTS配置参数说明 参数
说明
取值样例
日志类型
选择要转存到LTS的日志类型,支持转存“WAF访问日志”、“WAF攻击日志”。
攻击日志、访问日志的格式不同,如果同时选择两种日志类型,需要配置两个不同的日志流,用于分别记录日志信息。
“WAF访问日志”和“WAF攻击日志”
日志组
选择要转存的日志组。您也可以单击“创建日志组”,新建一个日志组。
日志组(LogGroup)是云日志服务进行日志管理的基本单位,用于对日志流进行分类,一个日志组下面可以创建多个日志流。日志组本身不存储任何日志数据,仅方便您管理日志流,每个账号下可以创建100个日志组。更多信息,请参见管理日志组。
lts-group-waf
WAF访问日志流
“日志类型”选择“WAF访问日志”时,需要选择WAF访问日志流。您也可以单击“创建日志流”,新建一个WAF访问日志流,用于记录每一个HTTP访问的关键信息,包括访问时间、访问客户端IP、访问资源URL等信息。
lts-topic-waf-access
WAF攻击日志流
“日志类型”选择“WAF攻击日志”时,需要选择WAF攻击日志流。您也可以单击“创建日志流”,新建一个WAF攻击日志流,用于记录每一个攻击告警信息,包括攻击事件类型、防护动作、攻击源IP等信息。
lts-topic-waf-attack
配置完成后,不会立即生效,存在10分钟左右的时延。配置生效后,云日志服务LTS会按流量单独计费。有关LTS的计费详情,请参见LTS价格详情。
- 查看或分析日志。
成功对接LTS后,“全量日志”页签会自动显示记录日志的日志组(图4①)、日志流(图4②)(包含的访问日志流、攻击日志流)。您可以单击WAF访问日志流或WAF攻击日志流,查看、搜索或分析WAF日志。更多信息,请参见搜索与分析日志。
- 选择日志流后,在“日志搜索”页签(图4③),选择(图4④),下载日志流中的上报日志。
- 前端直接下载:直接将前端查询的结果保存到本地,下载记录不会出现在日志下载历史中。单次下载支持最大5,000条日志。支持下载“.csv”或“.txt”格式的日志。
- 后台离线下载:通过后台任务将日志文件下载到临时OBS桶中,您的浏览器需要有公网访问权限才能在日志下载历史中下载结果文件。单次下载支持最大2,000万条日志。支持下载“.csv”、“.txt”或“.json”格式的日志。
步骤四方式一:使用OBS配置一次性日志转储
对象存储服务(Object Storage Service,OBS)提供海量、安全、高可靠、低成本的数据存储能力,可供用户存储任意类型和大小的数据。适合企业备份/归档、视频点播、视频监控等多种数据存储场景。日志支持周期性或一次性的转储至对象存储服务OBS中长期保存。本小节以配置一次性日志转储为例进行操作步骤说明。
- 登录云日志服务控制台。
- 左侧导航选择“日志转储”。在“日志转储”页面右上角,单击“配置转储”。
- 在“配置转储”页面,设置转储日志相关参数。 图5 一次性转储
表5 配置转储参数说明 参数名称
说明
示例
转储方式
一次性转储:日志将一次性的转储至对象存储服务(OBS)中长期保存。
一次性转储
转储对象
选择转储的云服务。
OBS
日志组名称
选择已创建的日志组。
-
日志流名称
选择已创建的日志流。已配置过OBS转储的日志流不能重复配置。
请确保所选日志流上传了原始日志,否则转储后文件将没有内容。
-
过滤条件
默认关键词过滤,在输入框填写需要过滤的关键词。
-
转储时间范围
时间范围有三种方式,分别是相对时间、整点时间和自定义。您可以根据自己的实际需求,选择时间范围。
- 相对时间:表示查询距离当前时间1分钟、5分钟、15分钟等时间区间的日志数据。例如当前时间为19:20:31,设置相对时间1小时,表示查询18:20:31~19:20:31的日志数据。
- 整点时间:表示查询最近整点1分钟、15分钟等时间区间的日志数据。例如当前时间为19:20:31,设置整点时间1小时,表示查询18:00:00~19:00:00的日志数据。
- 自定义:表示查询指定时间范围的日志数据。
-
日志总条数
选择的转储时间范围内的日志总条数。
单击日志总条数后面的查询,LTS自动计算并显示转储时间范围内的日志总条数。若没有日志条数,请修改转储时间范围。
-
转储文件个数
单次一次性转储日志条数上限2000万条,转储文件个数上限200个。
-
OBS桶
-
所属桶目录
所属OBS桶目录路径,不要以/开头或结尾,只能由英文字母、数字、中划线、下划线、小数点组成。
您可以参考如下方法获取所属桶目录:
- 在OBS控制台桶列表页面,单击目标桶名称进入对象页面。
- 在“对象”页面,找到需要存放LTS日志的OBS文件名称,单击该文件夹操作列的“更多 > 复制路径”,如图6所示。(以下示例仅供参考,请以实际路径为准)
如果需要将日志存入该文件夹test/yicixing,复制路径结果为“test/yicixing”,复制的路径就是桶目录。
test/yicixing
转储文件名称
自定义转储文件名称,只能由英文字母、数字、中划线、下划线、小数点组成。
-
转储格式
用于配置日志的转储格式,可选择原始日志格式、Json格式、CSV格式。
- 原始日志格式示例:
Sep 30 07:30:01 ecs-bd70 CRON[3459]: (root) CMD (/opt/oss/servicemgr/ICAgent/bin/manual/mstart.sh > /dev/null 2>&1)
- Json格式示例:
{"host_name":"ecs-bd70","ip":"192.168.0.54","line_no":249,"message":"Sep 30 14:40:01 ecs-bd70 CRON[4363]: (root) CMD (/opt/oss/servicemgr/ICAgent/bin/manual/mstart.sh > /dev/null 2>&1)\n","path":"/var/log/syslog","time":1569825602303} - CSV格式:以表格的形式展示日志内容。
Json
- 单击“确定”,完成配置。当转储任务状态为“正常”时,表示转储任务创建成功。
日志转储任务创建成功后无法修改,请确保参数已填写正确。
- 单击“转储对象”列的OBS桶名称,可以跳转至OBS控制台,查看转储的日志文件。
转储到OBS后的日志,支持从OBS下载到本地进行查看。
图7 一次性转储至OBS
修改日志转储、查看转储详情、删除转储任务、查看转储状态、配置周期性日志转储等更多操作详情请参见日志转储至OBS。
步骤四方式二:使用DIS配置日志转储
DIS提供丰富的大数据分析能力,可以将大量日志文件传输到云端做备份,进行离线分析、存储查询及机器学习,还能用于数据丢失或异常后的恢复和故障分析。同时大量小文本文件可合并转储为大文件,提高数据处理性能。您可以根据业务场景选择是否使用DIS进行日志转储。
- 登录云日志服务控制台,进入“日志管理”页面。
- 左侧导航栏中,单击“日志转储”。
- 在“日志转储”页面右上角,单击“配置转储”。
- 在“配置转储”页面,设置转储日志相关参数。
表6 配置转储参数说明 参数名称
说明
示例
日志源
- 当前账号:对用户所在账号下所产生的日志进行转储。
- 其他账号:对委托人账号下所产生的日志进行转储,如需转储其他账号日志,需该账号使用者在IAM中创建委托,创建完成后,请记下委托名称和委托人账号名称。
当前账号
委托名称
当转储其他账号时,需填写委托人在IAM中创建的委托名称。
-
委托人账号名称
当转储其他账号时,需填写委托人的账号名称。
-
是否开启转储
选择开启转储。
开启
转储对象
选择转储的云服务。
DIS
日志组名称
选择已创建的日志组。
-
日志流名称
选择已创建的日志流。已配置过DIS转储的日志流不能重复配置。
-
通道名称
选择已创建的DIS通道。如果没有可选择的通道,单击“查看DIS通道”,进入数据接入服务管理控制台,创建接入通道。
-
转储格式
用于配置日志的转储格式,可选择“原始日志格式”和“JSON格式”。
- 原始日志格式示例:
Sep 30 07:30:01 ecs-bd70 CRON[3459]: (root) CMD (/opt/oss/servicemgr/ICAgent/bin/manual/mstart.sh > /dev/null 2>&1)
- JSON格式示例:
{"host_name":"ecs-bd70","ip":"192.168.0.54","line_no":249,"message":"Sep 30 14:40:01 ecs-bd70 CRON[4363]: (root) CMD (/opt/oss/servicemgr/ICAgent/bin/manual/mstart.sh > /dev/null 2>&1)\n","path":"/var/log/syslog","time":1569825602303}
JSON
转储周期
日志将实时转储至DIS通道中。
实时
是否投递tag
如主机日志,转储时会增加采集器收集的tag字段。
- 不开启:不会投递tag。
- 开启:默认的投递tag有:主机信息(hostIP、hostId、hostName、pathFile、collectTime);kubernetes信息(clusterName、clusterId、nameSpace、podName、appName、containerName)。可选择公共tag有:regionName、projectId、logStreamName、logGroupName。当开启投递tag后,转储格式必须是JSON格式。
- 转储标签:开启后,会将日志流标签添加至转储内容。
开启
- 单击“确定”,完成配置。当转储任务状态为“正常”时,表示转储任务创建成功。
- 单击“转储对象”列的DIS通道名称,可以跳转至DIS控制台,查看转储的日志文件。
转储后的日志,支持下载到本地进行查看。
删除转储任务将不再对日志进行转储,且删除后无法恢复,请谨慎操作。
更多关于日志转储至DIS详情请参见日志转储至DIS。



