在 Microsoft IIS 上使用 .htaccess 重写规则

在 Microsoft IIS 上使用 .htaccess 重写规则

过去几天有报道称[1][2] 针对 WordPress 网站的攻击。在这篇博文它描述了如何使用.htaccess以下内容来缓解自动登录尝试:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_METHOD} =POST
RewriteCond %{HTTP_REFERER} !^http://(.*)?.example.com [NC]
RewriteCond %{REQUEST_URI} ^/wp-login\.php(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^/wp-admin$
RewriteRule ^(.*)$ - [R=403,L]
</IfModule>

如何使它与 Microsoft IIS 配合使用?可以.htaccess按原样与 IIS 配合使用,还是必须进行转换?如果是,最快的方法是什么?

答案1

.htaccess 可以按原样与 IIS 一起使用吗,还是必须进行转换?

是的,IIS 的 .htaccess 对应部分是 web.config 文件,您应该能够在 wordpress 根文件夹下找到它。

如何使其与 Microsoft IIS 协同工作?

在我看来,您提供的 .htaccess 片段试图阻止对 wp-admin 和 wp-login.php 的访问,并向请求者发出 403(拒绝访问)。您可以按照以下步骤实现此目的:

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

2,按照以下步骤启用“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 - 访问被拒绝错误。

相关内容