【问题标题】:Blocking IP automatically based on accessed files根据访问的文件自动阻止 IP
【发布时间】:2015-05-02 06:06:56
【问题描述】:

所以我有一个由 Laravel 提供支持的网站即将启动,并且我设置了一个电子邮件发送器,每当网站上触发 404 错误时都会向我发送电子邮件(作为第 1 阶段的措施,以确保没有损坏链接在网站上)。

最近我收到大量电子邮件,报告多个 URL 出现 404:

  • /wordpress/wp-admin
  • /wp-admin
  • /wp-admin/images/wordpress-logo.png
  • /manager/media/script/mootools/mootools.js
  • /templates/system/style.css
  • /modules/system/system.css

所有都来自同一个远程 IP,我发现它属于俄罗斯。

现在,我知道这意味着什么:一些黑客/机器人正在尝试猜测网站的构建基础,然后进行适当的攻击。

我的问题是,我是否可以自动化以下过程:

  1. 跟踪被 ping 的 404-URL(可以说这已经完成了)
  2. 如果正在尝试某种组合(例如 WP 徽标和 Joomla 系统 CSS)URL,请阻止此 IP 地址。

补充说明:

  • 我的服务器正在运行 Ubuntu (Apache)
  • 我有完整的 sudo 访问权限

【问题讨论】:

    标签: php apache security


    【解决方案1】:

    选项一 - 手动编辑 .htaccess

    最简单的是,您可以使用以下行手动将 IP 添加到 .htaccess 文件:

    Order Deny,Allow
    Deny from 
    192.168.0.1, 
    192.168.0.2
    . . .
    

    选项二 - 使用应用程序逻辑和数据库表

    基于某些规则的更复杂的解决方案可以通过在数据库中保留一个表来实现 - 或者您可以使用 JSON 文件或类似的文件 - 这将有一个列用于:

    1. 已点击的网址。
    2. 点击该网址的人的 IP 地址。

    每次用户点击 404 时,您都会使用 $_SERVER['SERVER_ADDR'] 记录他们的 ip 和尝试访问的 url。每次,您检查该 IP 是否已存在于表中,并运行一些逻辑来检查是否需要将它们添加到 .htaccess 文件中:

    $f = fopen(".htaccess", "w+");
    fwrite($f, "192.168.0.1");
    fclose($f);
    

    您的 404 错误必须由您的应用程序而不是 apache 处理。

    选项三 - fail2ban

    最后,作为另一种选择,您还可以使用fail2ban,它会为您完成所有这些工作。

    祝你好运! :)

    【讨论】:

      【解决方案2】:

      fail2ban 或 mod_security 将是您自己的服务器的最佳解决方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-17
        • 1970-01-01
        • 1970-01-01
        • 2013-03-19
        • 2012-12-05
        • 2011-04-09
        • 2018-05-02
        • 1970-01-01
        相关资源
        最近更新 更多