本文介绍了如何将Web应用防火墙(WAF)的日志集成到syslog日志系统中,以实现合规、审计等要求,也方便您在安全操作中心统一管理所有相关日志。
概览
该方案的整体集成架构如下图所示:
阿里云日志服务为日志数据提供一站式服务,被广泛应用于阿里巴巴集团的许多大数据场景中。日志服务在无需开发介入的前提下,帮助您快速完成数据采集、消费、投递、查询和分析,提高运维运营效率,建立DT时代海量数据的处理能力。更多信息,请查看什么是日志服务。
Python Program 是运行在ECS上的一段日志投递程序,帮助您将WAF日志投递到syslog服务器。消费库(Consumer Library)是对LogHub消费者提供的高级模式,它使用消费组(Consumer Group)统一处理消费端问题。相比于直接使用SDK读取数据,消费库让您只关注业务逻辑,而无需在意日志服务的实施细节或多消费者间的容错问题。更多信息,请查看消费组消费。
Syslog服务器是一个集中的日志消息管理服务器,它可以从多个syslog源接收数据。
前提条件
进行配置前,请确保满足以下条件:
- 您已购买企业版或旗舰版Web应用防火墙,并为您的网站配置防护。更多信息,请查看购买Web应用防火墙和业务接入WAF配置。
- 您拥有一个Linux ECS服务器,该服务器满足以下推荐配置:
- Ubuntu操作系统
- 8核处理器,2.0Ghz以上主频率
- 32GB内存
- 可用磁盘空间大于2GB(建议在10GB以上)
- 您拥有一个syslog服务器,并开放UDP协议514端口用来接收syslog数据。
操作步骤
- 开启Web应用防火墙日志功能。
参照以下步骤,在Web应用防火墙控制台开启日志功能:
- 登录云盾Web应用防火墙控制台。
- 在左侧导航栏,选择 。
- 在日志服务实时查询分析应用下,单击升级。
- 在变配页面,开通日志服务, 并根据实际需求选择日志存储时长和日志存储容量。
- 开通日志服务后,在日志服务实时查询分析应用下,单击授权。
- 在云资源访问授权页面,单击同意授权。
- 在日志服务实时查询分析应用下,单击配置。
- 在下拉框中选择要配置的域名,并打开功能开关。
- 在ECS中配置Python环境。
参照以下步骤在ECS实例中安装日志服务的Python SDK:
- 通过SSH或控制台登录到ECS。具体操作请参考连接ECS实例。
- 安装Python3、pip和aliyun-log-python-sdk。关于日志服务Python SDK的介绍,请参考用户指南。
apt-get update apt-get install -y python3-pip python3-dev cd /usr/local/bin ln -s /usr/bin/python3 python pip3 install --upgrade pip pip install aliyun-log-python-sdk
- 配置Python Program。
参照以下步骤配置Python Program,投递WAF日志到syslog服务器:
- 从GitHub下载最新的集成示例代码。
wget https://raw.githubusercontent.com/aliyun/aliyun-log-python-sdk/master/tests/consumer_group_examples/sync_data_to_syslog.py
- 替换示例代码Python Program中与日志服务(SLS)、syslog相关的配置参数,具体包括:
参数 释义 描述 SLS Project 日志项目名称 日志项目是日志服务的资源管理单元,用来划分和操作资源。您可以在阿里云日志服务控制台上查看项目名称。 SLS Endpoint 日志服务入口 日志服务入口是访问一个日志项目及其内部日志数据的URL。它和项目所在的阿里云地域及日志项目名称相关。您可以在服务入口中查看服务入口URL。 SLS Logstore 日志库 日志库是日志服务用来采集、存储和查询日志数据的单元。每个日志库归属在一个项目下,每个项目可以拥有多个日志库。您可以在阿里云日志服务控制台,特定日志服务项目下查看日志库的名称。 SLS accessKeyId和accessKey 访问密钥 访问密钥是您在使用API(而非控制台)访问云资源时的“密码”。您需要使用AccessKey为API请求内容签名,使其能够通过日志服务的安全认证。具体请参考访问密钥。您可以在用户信息管理控制台查看您的AccessKey信息。 Syslog Host Syslog主机 Syslog服务器的IP地址或主机名称。 Syslog Port Syslog端口 接收syslog的端口。UDP协议使用514,TCP协议使用1468。 Syslog protocol Syslog协议 指定使用UDP或TCP协议来接收syslog,具体取决于syslog服务器的配置。 Syslog separator Syslog分隔符 指定用于分隔syslog键值对的分隔符。 以下是Python Program的配置示例。
- 日志服务配置
endpoint = os.environ.get('SLS_ENDPOINT', 'http://ap-southeast-1.log.aliyuncs.com') accessKeyId = os.environ.get('SLS_AK_ID', '替换成您自己的AccessKey ID') accessKey = os.environ.get('SLS_AK_KEY', '替换成您自己的AccessKey') project = os.environ.get('SLS_PROJECT', 'waf-project-548613414276****-ap-southeast-1') logstore = os.environ.get('SLS_LOGSTORE', 'waf-logstore') consumer_group = os.environ.get('SLS_CG', 'WAF-SLS')
- Syslog配置
settings = { "host": "1.2.3.4", "port": 514, "protocol": "udp", "sep": ",", "cert_path": None, "timeout": 120, "facility": syslogclient.FAC_USER, "severity": syslogclient.SEV_INFO, "hostname": None, "tag": None }
- 日志服务配置
- 启用Python Program。假设Python program被保存为”sync_data_to_syslog.py”,您可以使用以下命令启用它:
python sync_data_to_syslog.py
启用Python Program后,会显示成功投递日志到syslog服务器。
*** start to consume data... consumer worker "WAF-SLS-1" start heart beat start heart beat result: [] get: [0, 1] Get data from shard 0, log count: 6 Complete send data to remote Get data from shard 0, log count: 2 Complete send data to remote heart beat result: [0, 1] get: [0, 1]
- 从GitHub下载最新的集成示例代码。
完成以上操作后,您可以在syslog服务器中查询WAF日志。
原创文章,作者:网友投稿,如若转载,请注明出处:https://www.cloudads.cn/archives/33634.html