雷池WAF自动化实现安全运营实操案例终极篇

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章阅读。

背景 作为一个小型网站的站长,往往面临资源有限(没有RMB)、人手不足的情况(没人就自己),基本都是1个人负责运营一个或多个网站。

为了提升运维效率及网站的安全性,我们需要解决以下问题:

避免频繁的切换安全系统查看日志 避免人工封禁IP的傻瓜式操作 将供给详情及告警处置及时通知给网站管理者 减少因网络安全产生的运维问题 本文主要介绍雷池WAF、钉钉联动的场景,但是实际情况下,可能会产生更多的联动效果,比如:雷池自动化拦截通知告警、蜜罐捕获告警通知等。

前言 在上一期雷池WAF自动化安全运营实操案例中,我们通过日志文本的方式记录WAF告警,并结合inotify-tools监控日志文件的变化来触发钉钉告警通知。然而,这种方法可能会引发一些问题,例如日志提取异常、日志内容截断等。此外,我更希望直接获取完整的攻击payload,以便复现攻击并验证其是否成功。

雷池WAF还提供了频率限制的黑名单功能,例如通过限制频繁访问或攻击来封禁IP。为了提高运营效率,我希望能够通过钉钉、飞书等工具实时获取封禁IP的通知,而不是手动登录WEB页面查看。

上篇实操案例中,我们使用了多个shell脚本,流程略显繁琐。因此,我开发了一套自动化程序,直接从雷池WAF数据库提取数据,不再依赖日志存储。同时,该程序能够自动推送攻击告警和频繁限制的黑名单告警,简化了整个安全运营过程。

软件介绍

雷池社区版 雷池(SafeLine)是长亭科技耗时近 10 年倾情打造的WAF,核心检测能力由智能语义分析算法驱动,目前分为社区版、专业版和企业版。

SafeLine_Push 雷池WAF推送小助手,可以自动化实现WAF告警日志推送、频繁限制告警IP推送(相当于解开了付费版的部分封印)

预计实现效果 原本的效果 image.png

想要实现的效果 image.png

要想能够实现将完整的请求包截取到的情况,那么就需要对WAF数据库的另外一个表下手,这个表为PUBLIC.MGT_DETECT_LOG_DETAIL

原本我只是对PUBLIC.MGT_DETECT_LOG_BASIC这个表进行查询操作,上篇中已经提到了,此时有2个方法,一种为在原有数据库中进行查询,或者是将数据库的这两个表进行迁移,迁移到新的数据库中来进行操作。

雷池WAF中频繁限制的告警效果预计如下:

image.png

前置工作 映射雷池WAF数据库端口

#!/bin/bash# 运行安装/更新脚本
bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/upgrade.sh)"# 进入 /data/safeline 目录
cd /data/safeline || { echo "/data/safeline not found!"; exit 1; }# 检查 compose.yaml 是否存在并备份
if [ -f compose.yaml ]; thenecho "Backing up the current compose.yaml"cp compose.yaml compose.yaml.bak
elseecho "compose.yaml not found in /data/safeline!"exit 1
fi# 检查是否已经存在端口映射
if grep -q "5433:5432" compose.yaml; thenecho "PostgreSQL port mapping already exists."
else# 使用 sed 插入 ports 字段到 postgres 服务中sed -i '/container_name: safeline-pg/a\    ports:\n      - 5433:5432' compose.yamlecho "PostgreSQL port mapping added to 5433:5432."
fi# 重新启动容器,应用更改
docker compose down --remove-orphans && docker compose up -decho "Containers restarted with the updated compose.yaml"

这个脚本适用于每次更新时,重新映射数据库端口,如果已经最新版,可以注释掉更新脚本命令。

配置数据库配置文件 通过cat /data/safeline/.env | grep POSTGRES_PASSWORD | tail -n 1 | awk -F ‘=’ ‘{print $2}‘查看数据库密码

然后在/var/scripts/.pgpass中写入如下代码,然后给这个文件添加600的权限。

localhost:5433:safeline-ce:safeline-ce:abcd #把abcd替换成第2步中获取到的密码

消息推送配置 从GitHub中下载文件

git clone https://github.com/Fiary-Tale/SafeLine_Push

从上述下载的为源代码及已编译的版本(存放于mark文件夹中)。

配置文件 VulConfig.json 该配置文件映射了雷池WAF数据库中部分字段数据,用于告警推送中的触发规则,这个配置文件可按照需求自行填写,目前并未完全覆盖全部触发规则(本人在数据库中没有找到与之相对应的中文触发规则)

注意:这个文件一定要放入到/var/scripts/VulConfig.json

{ “replacements”: { “m_sqli”: “SQL注入”, “m_xss”: “跨站脚本攻击”, “m_csrf”: “跨站请求伪造”, “m_cmd_injection”: “命令执行” } } config.yaml 该配置文件为消息推送时使用的token及推送方法,目前只编写了钉钉和Server酱,其他可自行补充!

注意:这个文件一定要放入到/var/scripts/config.yaml

token: “xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx” method: “dingtalk” # 可以是 “dingtalk” 或 “serverchan”

GeoLite2-City.mmdb 该文件非配置文件,为开源的Geo数据库,但为必须文件,这个文件用于查询IP的归属地,某些方面无法与雷池WAF数据库自身的归属地相比,但查询数据库中的归属地有些繁琐,因此采用Geo查询归属地。

注意:归属地GeoLite2-City.mmdb文件一定要与程序在同一目录

注意:在钉钉推送的安全设置中,我设置的是自定义关键词:入侵检测事件

build.bat 我是于Windows的环境中开发的,因此我编写了一个bat文件,如果有需要大家可以自行编译,记得安装golang开发环境哟!

目前已实现效果 攻击告警推送 image.png

频繁限制处理推送

image.png

设置开机自启动 在/etc/rc.local中追加nohup /var/scripts/SafeLine_Push_linux_amd64 > /dev/null 2>&1 &

后记 在测试中发现,频繁的告警有些烦人,比如:我为了产生短时间内同一IP大量攻击,进入频繁限制的封禁告警推送,开始频繁攻击后,收到了大量的攻击告警推送以及其他一些问题待修复!

互相探讨及待修复 短时间大量的攻击,告警推送如何处理? IP归属地的优化 频繁告警推送中触发规则及拦截结果优化 自动化保留频繁攻击的IP并上传威胁情报

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/453576.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity DOTS中的Archetype与Chunk

Unity DOTS中的Archetype与Chunk 在Unity中,archetype(原型)用来表示一个world里具有相同component类型组合的entity。也就是说,相同component类型的entity在Unity内部会存储到一起,共享同一个archetype。 使用这样的设…

React是如何工作的?

从编写组件到最后屏幕生成界面,如上图所示,我们现在需要知道的就是后面几步是如何运行的。 概述 这张图解释了 React 渲染过程的几个阶段: 渲染触发:通过更新某处的状态来触发渲染。渲染阶段:React 调用组件函数&…

智能优化算法-生物地理学算法(BBO)(附源码)

目录 1.内容介绍 2.部分代码 3.实验结果 4.内容获取 1.内容介绍 生物地理学优化算法 (Biogeography-Based Optimization, BBO) 是一种基于生物地理学原理的元启发式优化算法,由Dan Simon于2008年提出。BBO通过模拟物种在不同栖息地之间的迁移过程来搜索最优解&…

Dongle Sentinal在Jenkins下访问不了的问题

背景: 工作站部署的jenkins的脚本无法正常打包,定位后发现是本地获取不了license,但是使用usb over network的远程license都能获取并正常打包 分析: 获取不了license的原因是本地无法识别dongle。根据提供信息,之前…

卡特兰数解释相关的样例以及补充例题

目录 拓展的场景分析 1.圆上连接线段 2.二叉树问题 3.多边形划分三角形问题 补充的例题 P1976 鸡蛋饼 P1722 矩阵 II 通过取模处理判断选择用哪个式子​编辑 P2532 [AHOI2012] 树屋阶梯 P3978 [TJOI2015] 概率论 拓展的场景分析 1.圆上连接线段 一个圆上有2*n个点&am…

nginx中的HTTP 负载均衡

HTTP 负载均衡:如何实现多台服务器的高效分发 为了让流量均匀分配到两台或多台 HTTP 服务器上,我们可以通过 NGINX 的 upstream 代码块实现负载均衡。 方法 在 NGINX 的 HTTP 模块内使用 upstream 代码块对 HTTP 服务器实施负载均衡: upstr…

基于微博评论的自然语言处理情感分析

目录 一、项目概述 二、需要解决的问题 三、数据预处理 1、词汇表构建(vocab_creat.py) 2、数据集加载(load_dataset.py) 四、模型构建(TextRNN.py) 1、嵌入层(Embedding Layer&#xff…

Unity通过高德开放平台获取天气信息

一、注册高德开放平台账号&#xff0c;获取天气接口Key 1、构建自己的应用 网址&#xff1a;https://lbs.amap.com/api/webservice/guide/api/weatherinfo 最终调用api的地址形式&#xff1a; https://restapi.amap.com/v3/weather/weatherInfo?city110101&key<用户…

ionic Capacitor 生成 Android 应用

官方文档 https://ionic.nodejs.cn/developing/android/ https://capacitorjs.com/docs/getting-started 1、创建新的 Capacitor 应用程序 空目录下面 npm init capacitor/app2、install Capacitor npm install npm start在这里插入图片描述 3、生成dist目录 npm run buil…

华为eNSP:MAC地址漂移防止与检测

一、什么是MAC地址漂移&#xff1f; MAC地址漂移是指在计算机网络中&#xff0c;MAC&#xff08;Media Access Control&#xff09;地址被动态更改的现象。每个网络接口设备都有一个唯一的MAC地址&#xff0c;用来标识该设备在网络中的身份。然而&#xff0c;有些恶意软件或网…

15.JVM垃圾收集算法

一、垃圾收集算法 1.分代收集理论 分代收集理论是JAVA虚拟机进行垃圾回收的一种思想&#xff0c;根据对象存活周期的不同将内存分成不同的几个区域&#xff1b;一般将JAVA堆内存分为新生代和老年代&#xff1b;根据每个分代特点选择不同的垃圾收集器&#xff1b; 在新生代中&am…

深入理解 TypeScript 中的 as 关键字

在TypeScript中&#xff0c;as 关键字是一种类型断言&#xff08;Type Assertion&#xff09;的语法&#xff0c;用于告诉编译器如何理解某个变量的类型。这在开发过程中非常有用&#xff0c;尤其是当你知道比编译器更多的类型信息时 基本用法 类型断言允许你在编译时更改变量的…

InnoDB引擎(架构,事务原理,MVCC详细解读)

目录 架构分析 逻辑存储结构​ 内存结构​ Buffer Pool​ ChaneBuffer 自适应哈希​ LogBuffer​ 磁盘结构​ 后台线程​ 事务原理​ redolog日志 undolog日志​ MVCC​ 三个隐藏字段​ undolog版本链 readview​ RC(读已提交原理分析)​ RR(可重复读原理分析…

动态规划之斐波那契数列

文章目录 第 N 个泰波那契数三步问题使用最小花费爬楼梯解码方法 动态规划的基本思想是利用之前已经计算过的结果&#xff0c;通过递推关系式来计算当前问题的解。 整体思路 状态表示状态转移方程初始化填表顺序返回值 第 N 个泰波那契数 题目&#xff1a; 第 N 个泰波那契数 思…

云网络验证系统云验证+卡密生成+多应用多用户管理

云网络验证系统云验证&#xff0c;多样化应用管理方式&#xff0c;多种项目任你开发&#xff0c;分布式应用开关&#xff0c;让您的应用开发更简单&#xff0c;本系统借鉴于易如意API写法及思路&#xff0c;完美实现多用户多应用管理。 源码特色 1&#xff0c;对接&#xff1…

013_django基于大数据的高血压人群分析系统2024_dcb7986h_055

目录 系统展示 开发背景 代码实现 项目案例 获取源码 博主介绍&#xff1a;CodeMentor毕业设计领航者、全网关注者30W群落&#xff0c;InfoQ特邀专栏作家、技术博客领航者、InfoQ新星培育计划导师、Web开发领域杰出贡献者&#xff0c;博客领航之星、开发者头条/腾讯云/AW…

MarkDownload 剪裁网页插件配置使用全流程

前言 写在前面&#xff0c;大家有什么问题和需要可以跟我交流 需求 之前一直使用 Joplin 的剪裁网页功能&#xff0c;但是剪裁下来后不可避免的需要使用 Joplin 对剪裁下来的内容做处理&#xff0c;Joplin 用起来不是很习惯&#xff0c;所以在想可不可以用 Obsidian 来实现网…

图的最小生成树算法--普里姆(Prim)算法和克鲁斯克尔(Kruskal)算法

一、图的最小生成树 最小生成树&#xff08;Minimum spanning tree&#xff0c;MST&#xff09;是最小权重生成树&#xff08;Minimum weight spanning tree&#xff09;的简称&#xff0c;是一个连通加权无向图中一棵权值最小的生成树。 在一给定的无向图 G ( V , E ) G …

探索 Jupyter 笔记本转换的无限可能:nbconvert 库的神秘面纱

文章目录 探索 Jupyter 笔记本转换的无限可能&#xff1a;nbconvert 库的神秘面纱背景&#xff1a;为何选择 nbconvert&#xff1f;库简介&#xff1a;nbconvert 是什么&#xff1f;安装指南&#xff1a;如何安装 nbconvert&#xff1f;函数用法&#xff1a;简单函数示例应用场…

MySQL企业常见架构与调优经验分享

文章目录 一、选择 PerconaServer、MariaDB 还是 MYSQL二、常用的 MYSQL 调优策略三、MYSOL 常见的应用架构分享四、MYSOL 经典应用架构 观看学习课程的笔记&#xff0c;分享于此~ 课程&#xff1a;MySQL企业常见架构与调优经验分享 mysql官方优化文档 一、选择 PerconaServer、…