首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用mod-security保护一个简单的webservice来抵抗蛮力。

用mod-security保护一个简单的webservice来抵抗蛮力。
EN

Security用户
提问于 2013-02-26 15:08:10
回答 1查看 2.8K关注 0票数 4

我想提供一个简单的HTTPS网络服务对蛮力攻击的基本防御。web服务提供了一个login方法(比方说在http://example.org/login上),它以HTTP参数或HTTP提供的JSON对象字段的形式传递用户名和密码。当尝试登录失败时,该服务返回HTTP状态代码403。我可以想到两种可以防范的攻击:

  • 在给定的时间内,来自同一个IP的失败登录尝试太多了。
  • 在给定的时间内,同一个用户名的登录尝试失败太多了。

据我所知,mod-security适合于检测这些攻击--块请求,但我发现的教程非常复杂,语法mod-security令我费解。您能否提供一组规则示例,以防止上述攻击?在伪代码中,我会使用适当数量的nmx,如下所示:

代码语言:javascript
复制
<LocationMatch /login>
  IF response_status == 403 THEN
    user = fetch_user_from_request
    IF  ++fail_count_per_IP[IP] > n  
    OR  ++fail_count_per_USER[USER] > m THEN
       block IP FOR x minutes
</LocationMatch>
EN

回答 1

Security用户

发布于 2013-02-26 16:43:39

ModSecurity CRS中存在速率限制规则集,它不直接关联身份验证尝试是否成功。以下是规则之一

代码语言:javascript
复制
SecRule IP:BRUTE_FORCE_COUNTER "@gt %{tx.brute_force_counter_threshold}" 
"phase:5,id:'981042',t:none,nolog,pass,t:none,
setvar:ip.brute_force_burst_counter=+1, 
expirevar:ip.brute_force_burst_counter=%{tx.brute_force_burst_time_slice},  
setvar:!ip.brute_force_counter"

在上面的规则中,我们针对某个IP维护一个BRUTE_FORCE_COUNTER,这是维护每个IP的,您也可以针对会话维护它。然后,我们将维持一个阈值,即在brute_force_counter_threshold中维护的合法尝试的次数。对于每一个事务,我们增加的计数器是ip.brute_force_burst_counter=+1。在tx.brute_force_burst_time_slice之后,这是刷新计数器的时间间隔。

票数 1
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/31556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档