根据访问的文件自动阻止IP

时间:2015-05-02 06:06:57

标签: php apache security

所以我有一个Laravel支持的网站,只是推出,我有一个电子邮件设置,只要在网站上触发404错误就给我发电子邮件(作为第1阶段的措施) ,以确保网站上没有损坏的链接。)

最近,我收到了大量的电子邮件,报告了多个网址的404:

  • / WordPress的/可湿性粉剂管理员
  • /可湿性粉剂管理员
  • /wp-admin/images/wordpress-logo.png
  • /manager/media/script/mootools/mootools.js
  • /templates/system/style.css
  • /modules/system/system.css

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

现在,我知道这意味着什么:一些黑客/机器人正在试图猜测网站的构建方式,可能是为了进行适当的攻击。<​​/ p>

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

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

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

2 个答案:

答案 0 :(得分:1)

选项一 - 手动编辑.htaccess

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

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

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

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

  1. 已被点击的网址。
  2. 击中该网址的人的IP地址。
  3. 每次用户点击404时,您都会使用$_SERVER['SERVER_ADDR']记录其IP并尝试访问该网址。每次,检查表中是否已存在该IP,并运行一些逻辑以检查是否需要将它们添加到.htaccess文件中:

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

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

    选项三 - fail2ban

    最后,作为另一种选择,你也可以使用fail2ban来完成所有这些。

    祝你好运! :)

答案 1 :(得分:-1)

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