基于openresty waf二次开发多次匹配到的ip再做拉黑

news2024/11/23 15:14:26

我们想在openresty waf的基础上做二次开发,比如再精确一些。比如我们先匹配到了select的url我们先打分10分,匹配到cc 1000/s我们再给这个ip打10分…直到100分我们就拉黑这个ip。

[openresty waf][1]

#cat reids_w.lua
require 'lib'
local redis = require "resty.redis"
function redis_hash_ip(white)
  local red = redis:new()
  local ok, err = red:connect("192.168.14.66", 6379)
  if not ok then
    ngx.log(ngx.ERR, "Failed to connect to Redis: ", err)
    return false, "Failed to connect to Redis"
  end

  -- 认证Redis
  -- local res, err = red:auth("123456lzx")
  -- if not res then
  --   ngx.log(ngx.ERR, "Failed to authenticate Redis: ", err)
  --   return false, "Failed to authenticate Redis"
  -- end

  -- 检查列表中是否已存在要添加的值
  local exists, err = red:lrange(get_client_ip(), 0, -1)
  if exists then
    for _, v in ipairs(exists) do
      if v == white then
        -- 如果要添加的值已经存在于列表中,则直接返回
        red:set_keepalive(10000, 100)
        return true, nil
      end
    end
  end

  -- 如果要添加的值不存在于列表中,则将其添加到列表头部
  local res, err = red:lrem(get_client_ip(), 0, white)
  if res < 0 then
    ngx.log(ngx.ERR, "Failed to remove value from Redis list: ", err)
    return false, "Failed to remove value from Redis list"
  end

  local success, err = red:lpush(get_client_ip(), white)
  if not success then
    ngx.log(ngx.ERR, "Failed to set value in Redis lpush: ", err)
    return false, "Failed to set value in Redis lpush"
  end

  -- 关闭Redis连接
  red:set_keepalive(10000, 100)

  return true, nil
end


function redis_select()
  local red = redis:new()
  local ok, err = red:connect("192.168.14.66", 6379)
  if not ok then
      ngx.log(ngx.ERR, "Failed to connect to Redis: ", err)
      return ngx.exit(500)
  end

  local res, err = red:lrange(get_client_ip(), 0, -1)
  if not res then
    return nil, "Failed to query Redis list: " .. err
  else
    for _, v in ipairs(res) do
      ngx.log(ngx.INFO, "List value: ", v)
    end
  end
  -- 关闭 Redis 连接(重用连接池中的连接)
  red:set_keepalive(10000, 100)
  return res, nil

end

![2023-11-03T08:07:54.png][2]

![2023-11-03T08:08:20.png][3]

![2023-11-03T09:17:30.png][4]

请求url触犯代码

http://192.168.14.66 一分钟多访问一些,触发cc
http://192.168.14.66/.bash_history/ 触发url
...

查看redis里面是否写入数据,这是存得list数据,用ip做的name,然后那些触发得规则放在一个list里面。

![2023-11-03T09:12:30.png][5]

查看日志查出来的结果

![2023-11-03T09:15:45.png][6]

然后我们就可以根据redis里面的客户ip做打分机制,当然这只是一个基础版本

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Zookeeper安装及配置

Zookeeper官网:Apache ZooKeeper 一般作为服务注册中心 无论在Windows下还是Linux下,Zookeeper的安装步骤是一样的,用的包也是同一个包 Window下安装及配置Zookeeper 下载后解压 linux安装 window及Linux安装及配置zookeeper_访问windos上的zookeeper-CSDN博客

用Python写了13个小游戏,上班摸鱼我能玩一天

分享13个Python小游戏&#xff0c;本内容来源于网络。 用Python写个魂斗罗&#xff0c;另附30个Python小游戏源码​segmentfault.com/a/1190000041782623 1、吃金币 源码分享&#xff1a; import os import cfg import sys import pygame import random from modules import …

【框架篇】统一用户登录权限验证

✅作者简介&#xff1a;大家好&#xff0c;我是小杨 &#x1f4c3;个人主页&#xff1a;「小杨」的csdn博客 &#x1f433;希望大家多多支持&#x1f970;一起进步呀&#xff01; 统一用户登录权限验证 1&#xff0c;自定义拦截器 对于统一用户登录权限验证的问题&#xff0c…

照片拼图软件 CollageIt Pro mac中文版功能特色

CollageIt Pro mac是一款拼图软件&#xff0c;CollageIt Pro for mac不仅支持多种模式的拼贴风格&#xff0c;还能够完美满足您对自己图片的美化需要&#xff0c;以一种全新的方式来呈现您收藏的图片&#xff0c;并且只需短短的几秒&#xff0c;便可以轻松实现将一组照片编程一…

黑色木工板覆膜板:耐用防水的建筑模板选择

黑色木工板覆膜板是一种耐用的建筑模板材料&#xff0c;以其优异的防水性能和稳定性成为建筑行业的理想选择。本文将重点介绍黑色木工板覆膜板的特点以及其在建筑模板领域的应用。 黑色木工板覆膜板采用杨木芯&#xff0c;并在表面覆盖一层黑色防水膜。杨木芯的选择使得木工板具…

多模块项目的搭建以及Nacos服务的发现与调用

这里写目录标题 多模块项目的搭建父项目的构建子模块的创建父子模块的意义 将注册服务引入到父子模块中创建子模块用于发现服务和调用供调用的服务接口创建调用子模块 测试一些小问题 在前文中我们实现了微服务的注册参考此文&#xff1a; Spring Cloud Alibaba中Nacos的安装&a…

3.表格-常用属性:th、align、valign布局方式

常用属性:th/align/valign 1、th 标签 定义表格内的表头单元格。 HTML 表单中有两种类型的单元格&#xff1a; 表头单元格 - 包含表头信息&#xff08;由 th 元素创建&#xff09; 标准单元格 - 包含数据&#xff08;由 td 元素创建&#xff09; th 定义表头内容&#xff0c;元…

年底赶项目?买核心板送开发板!T113核心板2款芯片6种配置选择

全志T113系列芯片是目前比较受欢迎的国产入门级嵌入式工业芯片。米尔是基于T113芯片开发较早、提供配置最全的厂家&#xff0c;是目前唯一一家提供T113-S和T113-i两种芯片核心板的厂家。更好的消息是&#xff0c;T113-i的核心板兼容T113-S的核心板&#xff0c;同一个硬件设计&a…

BUUCTF FLAG 1

BUUCTF:https://buuoj.cn/challenges 题目描述&#xff1a; 注意&#xff1a;请将 hctf 替换为 flag 提交&#xff0c;格式 flag{} 密文&#xff1a; 下载附件&#xff0c;得到一张.png图片。 解题思路&#xff1a; 1、因为附件是一张图片&#xff0c;先放到StegSolve中&…

Dual Personalization on Federated Recommendation

联合推荐的双重个性化 代码链接 论文链接 主要创新 文章的主要创新是提出了一种双重个性化机制&#xff0c;用于增强联邦推荐系统的性能。这种机制能够在联邦学习框架中为每个本地模型学习用户特定的物品嵌入&#xff0c;从而显著提升推荐系统的效果。通过在四个数据集上进行…

搜维尔科技:网球运动员使用Xsens寻求精确的动作捕捉

就像其他一些运动一样,近年来网球迷们没有机会去参加许多真正优秀的模拟游戏,所以当一个人出现并承诺有这种体验时,很难不激动。开发者圆环游戏 匹配点:网球锦标赛 现在,我们承诺在单一支付者和多人组成部分的球场上有一个坚实的经验,我们对游戏和游戏的内部和外部都很好奇,我…

C#知识总结 基础篇(上)

本篇内容参考C#图解教程 本篇内容偏向基础&#xff0c;适合0基础的朋友快速上手&#xff0c;也适合有一定C语言&#xff08;或其他语言如C,java&#xff09;基础的人快速上手C#。同时适合unity引擎的初学者&#xff0c;更加详细的了解C#语言。 本文内容基本涵盖C#基础内容&am…

UG\NX二次开发 超长的对象属性值,怎么设置

文章作者:里海 来源网站:里海NX二次开发3000例专栏 感谢粉丝订阅 感谢 Dr. Lin 订阅本专栏,非常感谢。 简介 使用UF_ATTR_assign设置对象属性,如果属性值超过UF_ATTR_MAX_STRING_LEN则会报错。 #define UF_ATTR_MAX_STRING_LEN 132 怎么办呢?下面这种方法可以解决: 效果 …

从 Java 到 Rust,Substrate 优秀学员亲述 Web3 入门之路

你知道如何从 0 到 1 转行 Web3&#xff0c;找到技术开发岗位的一席之地吗&#xff1f;从后端核心开发到 Web3 测试&#xff0c;Substrate 课程优秀学员的区块链探索之路有哪些心得体会&#xff1f;10 月 26 日晚 20:00&#xff0c;第二期 Block Space 成长路径系列主题 AMA 活…

【el-cascader-panel】组件el-cascader-panel使用踩坑

需求背景&#xff1a;角色管理资源&#xff0c;资源返回树形结构数据&#xff0c;左侧树形展示列表可查询&#xff0c;右侧勾选资源权限平铺。 本身组件不支持全选&#xff0c;所以增加了全选按钮。覆写了级联面板宽度。可传只勾选code或者顺序当前节点二维数组列表。 效果 因…

Web测试是什么,有何特点?

Web测试是指对Web应用程序进行验证和评估的过程&#xff0c;以确保其功能、性能和安全性符合预期。 Web测试具体包括以下几个方面的内容&#xff1a; 功能测试&#xff1a;验证Web应用程序是否按照需求规格说明书中定义的功能正常工作。功能测试包括输入验证、表单提交、页面导…

【Jmeter】自动化测试实施

前言&#xff1a; Jmeter是目前最流行的一种测试工具&#xff0c;基于此工具我们搭建了一整套的自动化方案&#xff0c;包括了脚本添加配置、本地配置和运行、服务器配置等内容&#xff0c;完成了自动化测试闭环&#xff0c;通过这种快捷简便高效的方式&#xff0c;希望可以解…

【算法 | 哈希表 No.2】leetcode 219. 存在重复元素II

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&#xff0c;希望…

聊聊我对AI Agents技术的一些看法

小伙伴们&#xff01;我来兑现承诺啦&#xff5e; ps&#xff1a;接下来期待什么内容&#xff0c;欢迎在评论区留言&#xff01; 今天&#xff0c;我们就来聊聊大模型 Agent。 最近这几个月&#xff0c;Agent 这一概念可谓火出天际&#xff0c;从 AutoGPT 一周 6 万 star 刷新…