wp博客 婚庆网站模板,百度安全网站检测,开发一款app需要投入多少钱,衡水php网站建设免责声明 本教程仅为合法的教学目的而准备#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为#xff0c;在使用本教程前#xff0c;您应确保该行为符合当地的法律法规#xff0c;继续阅读即表示您需自行承担所有操作的后果#xff0c;如有异议#xff0c;请立即停…免责声明 本教程仅为合法的教学目的而准备严禁用于任何形式的违法犯罪活动及其他商业行为在使用本教程前您应确保该行为符合当地的法律法规继续阅读即表示您需自行承担所有操作的后果如有异议请立即停止本文章阅读。
背景 作为一个小型网站的站长往往面临资源有限(没有RMB)、人手不足的情况(没人就自己)基本都是1个人负责运营一个或多个网站。
为了提升运维效率及网站的安全性我们需要解决以下问题
避免频繁的切换安全系统查看日志 避免人工封禁IP的傻瓜式操作 将供给详情及告警处置及时通知给网站管理者 减少因网络安全产生的运维问题 本文主要介绍雷池WAF、钉钉联动的场景但是实际情况下可能会产生更多的联动效果比如雷池自动化拦截通知告警、蜜罐捕获告警通知等。
前言 在上一期雷池WAF自动化安全运营实操案例中我们通过日志文本的方式记录WAF告警并结合inotify-tools监控日志文件的变化来触发钉钉告警通知。然而这种方法可能会引发一些问题例如日志提取异常、日志内容截断等。此外我更希望直接获取完整的攻击payload以便复现攻击并验证其是否成功。
雷池WAF还提供了频率限制的黑名单功能例如通过限制频繁访问或攻击来封禁IP。为了提高运营效率我希望能够通过钉钉、飞书等工具实时获取封禁IP的通知而不是手动登录WEB页面查看。
上篇实操案例中我们使用了多个shell脚本流程略显繁琐。因此我开发了一套自动化程序直接从雷池WAF数据库提取数据不再依赖日志存储。同时该程序能够自动推送攻击告警和频繁限制的黑名单告警简化了整个安全运营过程。
软件介绍
雷池社区版 雷池SafeLine是长亭科技耗时近 10 年倾情打造的WAF核心检测能力由智能语义分析算法驱动目前分为社区版、专业版和企业版。
SafeLine_Push 雷池WAF推送小助手可以自动化实现WAF告警日志推送、频繁限制告警IP推送(相当于解开了付费版的部分封印)
预计实现效果 原本的效果
想要实现的效果
要想能够实现将完整的请求包截取到的情况那么就需要对WAF数据库的另外一个表下手这个表为PUBLIC.MGT_DETECT_LOG_DETAIL
原本我只是对PUBLIC.MGT_DETECT_LOG_BASIC这个表进行查询操作上篇中已经提到了此时有2个方法一种为在原有数据库中进行查询或者是将数据库的这两个表进行迁移迁移到新的数据库中来进行操作。
雷池WAF中频繁限制的告警效果预计如下 前置工作 映射雷池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.yamlcp 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开发环境哟!
目前已实现效果 攻击告警推送
频繁限制处理推送 设置开机自启动 在/etc/rc.local中追加nohup /var/scripts/SafeLine_Push_linux_amd64 /dev/null 21
后记 在测试中发现频繁的告警有些烦人比如:我为了产生短时间内同一IP大量攻击进入频繁限制的封禁告警推送开始频繁攻击后收到了大量的攻击告警推送以及其他一些问题待修复!
互相探讨及待修复 短时间大量的攻击告警推送如何处理 IP归属地的优化 频繁告警推送中触发规则及拦截结果优化 自动化保留频繁攻击的IP并上传威胁情报