基于动态IP的黑名单

Ale*_*ein 6 apache security .htaccess email-spam

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

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

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

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

谢谢!

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

Dav*_*ney 5

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


Owe*_*wen 2

你在 *nix 机器上吗?这种事情可能最好留给操作系统级别,使用iptables之类的东西

编辑:

作为对评论的回应,是的(某种程度上)。然而,我们的想法是 iptables 可以独立工作。您可以设置一定的阈值来限制(例如,阻止端口 80 TCP 上超过 x 个请求/分钟的请求),并且这一切都是透明处理的(即,您的应用程序实际上不需要了解任何有关它的信息,发生动态阻塞)。

如果您可以完全控制该框,并且更愿意让您的防火墙处理节流,我建议使用 iptables 方法(优点是,您不需要将此逻辑构建到您的 Web 应用程序中,并且它可以根据请求节省资源在它们到达您的网络服务器之前就被删除了)

否则,如果您预计阻塞不会成为一个巨大的组件(或者您的应用程序是可移植的并且无法保证对 iptables 的访问),那么将该逻辑构建到您的应用程序中会更有意义。