首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从同一个IP地址向同一个文件发送多个POST请求

从同一个IP地址向同一个文件发送多个POST请求
EN

Server Fault用户
提问于 2013-08-30 21:07:43
回答 2查看 2.5K关注 0票数 0

我定期检查我的apache以检查GET和POST请求中的异常。今天早些时候,我注意到同一个登录php的POST请求在同一个IP地址中每秒发生两次,有时三次,每次2-3小时。我猜是有人想要黑进一个账户。

防止这种情况的最好方法是什么?我可以将IP列入黑名单,但他们当然可以使用代理或交换IP地址。有更好的方法来做这个服务器端吗?

此服务器正在运行CentOS 6.4

EN

回答 2

Server Fault用户

发布于 2013-08-30 21:17:11

您可以使用像fail2ban这样的工具,在一定数量的失败登录后自动将主机列入黑名单。这意味着,即使攻击者切换了他们的ip地址,他们也会在一小部分尝试后再次被阻止。

fail2ban在可配置的时间之后解锁地址,所以这不会导致地址无限期地被阻塞。

如果您拥有PHP代码,您显然可以在web应用程序中完成类似的任务(基本上,限制来自同一个客户端ip地址的失败登录)。

票数 2
EN

Server Fault用户

发布于 2013-08-31 00:03:05

您可以使用模数安全来定义任何您想要的规则,通过计数请求、黑名单、运行外部应用程序(即防火墙阻塞)、转发到代理、丢弃数据包、拒绝连接、重置连接、重定向、显示404错误(ir可能您喜欢错误666)、处理变量等方法来阻止密集请求。它可以做很多事情:https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual

示例:http://halfelf.org/2013/wp-login-protection-modsec/

代码语言:javascript
复制
SecAction phase:1,nolog,pass,initcol:ip=%{REMOTE_ADDR},initcol:user=%{REMOTE_ADDR},id:5000134
<Locationmatch "/login.php">
    # deny status and log, 401 to client
    SecRule user:bf_block "@gt 0" "deny,status:401,log,id:5000135,msg:'ip address blocked for 5 minutes, more than 10 login attempts in 3 minutes.'"

    # Tracking:  On a successful login, a 302 redirect is performed, a 200 indicates login failed.
    SecRule RESPONSE_STATUS "^302" "phase:5,t:none,nolog,pass,setvar:ip.bf_counter=0,id:5000136"

    # count last 3 minutes
    SecRule RESPONSE_STATUS "^200" "phase:5,chain,t:none,nolog,pass,setvar:ip.bf_counter=+1,deprecatevar:ip.bf_counter=1/180,id:5000137"

    # if matched 10 times, block for 5 minutes
    SecRule ip:bf_counter "@gt 10" "t:none,setvar:user.bf_block=1,expirevar:user.bf_block=300,setvar:ip.bf_counter=0"
</locationmatch>
票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/535248

复制
相关文章

相似问题

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