基于动态IP的黑名单

时间:2008-09-22 03:53:04

标签: security apache .htaccess email-spam

伙计们,我们都知道IP黑名单不起作用 - 垃圾邮件发送者可以通过代理进入,而且,合法用户可能会受到影响......也就是说,黑名单在我看来是一种有效的机制来阻止持久性攻击者,鉴于IP的实际列表是根据应用程序的反馈和用户行为动态确定的。

例如: - 有人试图暴力破解您的登录屏幕 - 写得不好的机器人会向您的网站发出非常奇怪的HTTP请求 - 脚本小子使用扫描程序查找应用程序中的漏洞

我想知道以下机制是否有效,如果有,你知道是否有任何工具可以做到这一点:

  • 在Web应用程序中,开发人员有一个钩子来报告“攻击”。犯罪可能是轻微的(密码无效),并且需要将数十种此类犯罪列入黑名单;或者它可能是主要的,并且在24小时内发生的一些此类攻击会将你踢出局。
  • 在加载每个页面之前,某种形式的Web服务器级块会启动,并确定用户是否来自“坏”IP。
  • 内置了“宽恕”机制:一段时间后,攻击不再计入IP。

谢谢!

额外注意:如果解决方案在PHP中运行会很棒,但我很想听听您对该方法的看法,对于任何语言/平台

6 个答案:

答案 0 :(得分:5)

看看fail2ban。一个python框架,允许您从拖尾日志文件中提取IP表块以查找错误行为的模式。

答案 1 :(得分:2)

你是在* nix机器上吗?使用像iptables

这样的东西,可能最好留给操作系统级别

编辑:

回应评论,是(有点)。但是,我的想法是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}但是从上面的网站上给我发了一封电子邮件,我会把代码扔给你,很乐意帮助你调试/转发它服务器