我想提供一个简单的HTTPS网络服务对蛮力攻击的基本防御。web服务提供了一个login方法(比方说在http://example.org/login上),它以HTTP参数或HTTP提供的JSON对象字段的形式传递用户名和密码。当尝试登录失败时,该服务返回HTTP状态代码403。我可以想到两种可以防范的攻击:
据我所知,mod-security适合于检测这些攻击--块请求,但我发现的教程非常复杂,语法mod-security令我费解。您能否提供一组规则示例,以防止上述攻击?在伪代码中,我会使用适当数量的n、m和x,如下所示:
<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>发布于 2013-02-26 16:43:39
ModSecurity CRS中存在速率限制规则集,它不直接关联身份验证尝试是否成功。以下是规则之一
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之后,这是刷新计数器的时间间隔。
https://security.stackexchange.com/questions/31556
复制相似问题