如何使用 ModSecurity 按基于时间的逻辑解锁用户代理

问题描述 投票:0回答:1

情况是这样的:

  1. 如果特定用户代理在 5 分钟内向域发送超过 10 个请求,则规则必须使用代码 429 进行响应。

  2. 429响应的持续时间为1小时。无论代理在该小时内继续发出请求,该小时后都会被解锁(代码 200)。

  3. 随后,该过程返回到点1并重复。

我的规则是

SecAction "id:13576460, phase:1, nolog, pass, initcol:resource=%{REQUEST_HEADERS.User-Agent}_%{REQUEST_HEADERS.Host}"

SecRule REQUEST_HEADERS:User-Agent "@contains facebookexternalhit" \
    "id:13576461,\
    phase:2,\
    t:none,\
    setvar:resource.counter=+1_%{REQUEST_HEADERS.Host},\
    expirevar:resource.counter=300_%{REQUEST_HEADERS.Host},\
    setvar:resource.blocked=+1_%{REQUEST_HEADERS.Host},\
    expirevar:resource.blocked=3600_%{REQUEST_HEADERS.Host},\
    nolog"

SecRule RESOURCE:blocked "@ge 10" \
    "id:13576462,\
    phase:2,\
    t:none,\
    deny,\
    status:429,\
    log,\
    msg:'Excessive requests from user agent'"

不幸的是,这只是部分有效。请允许我详细说明:

  1. 是的,5分钟内第10次尝试后成功拦截。
  2. 是的,1小时后就会解锁代理。
  3. 但是,为了解除封锁,代理必须在封锁期间避免提出任何请求。

问题来了:只关注1小时标准,无论Agent是否继续发送请求,是否都可以实现解封?

谢谢你。

mod-security
1个回答
0
投票

通过在家做非常简单的在线工作,每月赚取超过 22,000 美元。我在兼职做这份工作,上个月我已经赚到并收到了 22,365 美元。我现在是一个很好的在线赚钱者,赚到了足够的现金来满足我的需要。每个人都可以在这个网站上找到这个在线工作......

这里——≻≻≻≻≻earn54.com

© www.soinside.com 2019 - 2024. All rights reserved.