伙计们,我们都知道IP黑名单不起作用 - 垃圾邮件发送者可以通过代理进入,而且,合法用户可能会受到影响......也就是说,黑名单在我看来是一种有效的机制来阻止持久性攻击者,鉴于IP的实际列表是根据应用程序的反馈和用户行为动态确定的。
例如: - 有人试图暴力破解您的登录屏幕 - 写得不好的机器人会向您的网站发出非常奇怪的HTTP请求 - 脚本小子使用扫描程序查找应用程序中的漏洞
我想知道以下机制是否有效,如果有,你知道是否有任何工具可以做到这一点:
谢谢!
额外注意:如果解决方案在PHP中运行会很棒,但我很想听听您对该方法的看法,对于任何语言/平台
答案 0 :(得分:5)
看看fail2ban。一个python框架,允许您从拖尾日志文件中提取IP表块以查找错误行为的模式。
答案 1 :(得分:2)
编辑:
回应评论,是(有点)。但是,我的想法是iptables可以独立工作。您可以设置一个特定的阈值来限制(例如,阻止端口80 TCP上的请求超过x个请求/分钟),这一切都是透明处理的(即,您的应用程序实际上不需要知道任何关于它的信息,动态阻塞发生。)
如果你完全控制了盒子,我会建议iptables方法,并且宁愿让你的防火墙处理限制(优点是,你不需要在你的web应用程序中构建这个逻辑,它可以节省资源请求在它们到达您的网络服务器之前被删除了)否则,如果您希望阻止不是一个巨大的组件,(或者您的应用程序是可移植的,并且不能保证对iptables的访问),那么将该逻辑构建到您的应用程序中会更有意义。
答案 2 :(得分:0)
我认为它应该是用户名加IP块的组合。不只是IP。
答案 3 :(得分:0)
您正在查看自定义锁定代码。开源世界中的应用程序包含各种类型的代码。也许你应该看看其中的一些,虽然你的要求非常简单,所以标记一个IP /用户名组合,并利用它来阻止IP一段时间。 (注意我说阻止IP,而不是用户。用户可以尝试通过有效的IP /用户名/ pw组合上网。)
事实上,您甚至可以保留用户登录的痕迹,并且当使用3次打击错误的用户名/ pw组合从未知IP登录时,将该IP锁定为您喜欢的用户名。 (请注意,许多ISP共享IP,因此......)
您可能还希望在身份验证中设置延迟,以便IP每隔“y”秒左右不能尝试多次登录。
答案 4 :(得分:0)
我已经开发了一个客户端系统,它可以跟踪Web服务器的命中,并在操作系统/防火墙级别动态禁止IP地址,以便在某些时间内执行某些攻击,所以,是的,这绝对是可能的。正如Owen所说,防火墙规则是比Web服务器更好的地方。 (不幸的是,客户选择对此代码保留严格的版权,因此我不能自由分享它。)
我通常使用Perl而不是PHP,但是,只要你有一个防火墙规则引擎的命令行界面(比如说,/ sbin / iptables),你应该可以很容易地从任何能够执行系统命令的语言。
答案 5 :(得分:0)
错误这种系统很容易和常见,我可以很容易地给你我的
简单而简要地解释了http://www.alandoherty.net/info/webservers/
所写的脚本不能下载{因为目前没有添加任何commentry}但是从上面的网站上给我发了一封电子邮件,我会把代码扔给你,很乐意帮助你调试/转发它服务器