我在IIS 7.5上运行Wordpress - 我今天正在审查我的日志,并注意到我的网站上有很多强力企图,寻找可能危及其安全性的文件。特别是寻找安装文件,phpMyAdmin,其他mysql等等 - 所有这些都是404.
根据这些信息,我可以通过哪些方式创建安全模块A)阻止连续数量超过[n]个404的人。 B)阻止匹配某些关键字的人,例如寻找phpMyAdmin。 C)这是可选的,但如果我想硬编码/添加一些,理想的解决方案也会阻止IP地址。
我有一些想法,但我也在寻找其他建议。由于服务器是IIS,我希望解决方案是使用C#ASP.NET或以某种方式嵌入IIS。
答案 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 - 拒绝访问错误。