IIS / PHP暴力安全模块 - 建议?

时间:2011-09-16 13:37:43

标签: php asp.net wordpress iis-7

我在IIS 7.5上运行Wordpress - 我今天正在审查我的日志,并注意到我的网站上有很多强力企图,寻找可能危及其安全性的文件。特别是寻找安装文件,phpMyAdmin,其他mysql等等 - 所有这些都是404.

根据这些信息,我可以通过哪些方式创建安全模块A)阻止连续数量超过[n]个404的人。 B)阻止匹配某些关键字的人,例如寻找phpMyAdmin。 C)这是可选的,但如果我想硬编码/添加一些,理想的解决方案也会阻止IP地址。

我有一些想法,但我也在寻找其他建议。由于服务器是IIS,我希望解决方案是使用C#ASP.NET或以某种方式嵌入IIS。

2 个答案:

答案 0 :(得分:1)

实施HttpHandler以拦截所有请求。如果他们正在寻找这些模块,请记录他们的IP并停止攻击,将ip添加到被阻止的主机列表中。

是的 - 有人可以伪造一个IP(在DoS攻击中更多的关注,在这里不可行),但是他们不能伪造整个会话(大致是一个数据包),所以他们不能继续在那个IP上获得一个响应,并知道文件是否仍然存在。

如果您想以特殊方式处理ips,例如立即阻止所有进一步访问,将使用此方法。

如果您不需要这种类型的控件,并且只是想阻止考虑自定义URLScan规则立即阻止它,因为UrlScan现在已内置到IIS中。 看到: http://www.hanselman.com/blog/HackedAndIDidntLikeItURLScanIsStepZero.aspx

答案 1 :(得分:0)

  

A)阻止连续超过[n]个404的人。

有一个名为“Better WP Security”的wordpress插件,它具有404检测功能,可以完全实现此功能。我现在正在使用它并且它运行良好。

  

B)阻止某些与某些关键字匹配的人,例如寻找phpMyAdmin。

你不想只阻止任何试图访问phpMyAdmin的人,因为那也包括你自己。您希望按IP过滤请求 - 不允许任何不在白名单中的IP访问phpMyAdmin。您将在我对下面第3个问题的回答中找到解决方法。

  

C)这是可选的,但如果我想

,理想的解决方案也会阻止IP地址

您可以按照以下步骤禁止在IIS 7.5上访问不在白名单中的IP的wp-login.php和wp-admin。你可以模仿这个例子,在你的wordpress文件夹中包含你想要的任何文件(例如phpMyAdmin),方法是在步骤4的代码中复制(包含)标签之间的代码并更改“path”属性。

1,打开wordpress根文件夹中的web.config文件,如果在那里找不到,请创建一个

2,按照[本文] [1]

启用“IP和域限制”角色

3,打开IIS管理器,单击根节点,在右侧面板中选择“功能委派”,找到“IPv4地址和域限制”项,授予“读/写”权限

4,打开web.config文件,如果你自己创建了文件并且它是空的,那么添加以下代码(参见底部的注释以获得解释):

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
 <location path="wp-login.php">
        <system.webServer>
        <security>
            <ipSecurity allowUnlisted="false">    
                <clear/>
                <add ipAddress="100.100.100.29" allowed="true"/>
                <add ipAddress="111.111.111.0" subnetMask="255.255.255.0" allowed="true"/>
            </ipSecurity>
        </security>
        <modules runAllManagedModulesForAllRequests="true"/>
        </system.webServer>
  </location>

  <location path="wp-admin">
        <system.webServer>
        <security>
            <ipSecurity allowUnlisted="false">    
                <clear/>
                <add ipAddress="100.100.100.29" allowed="true"/>
                <add ipAddress="111.111.111.0" subnetMask="255.255.255.0" allowed="true"/>
            </ipSecurity>
        </security>
        <modules runAllManagedModulesForAllRequests="true"/>
        </system.webServer>
  </location>
</configuration>

如果您正在处理现有的web.config文件,那么您只需要将标记之间的代码添加到web.config中的现有标记中。

说明:此代码阻止所有IP访问wp-login.php或wp-admin,例外是IP 100.100.100.29和111.111.111.1-255。请将这些IP替换为您自己的列表。

5,现在尝试从不在列表中的IP访问wp-login.php或wp-admin,您应该被给予403 - 拒绝访问错误。