在启用永久链接的情况下访问Apache服务器状态

时间:2020-01-09 10:38:54  来源:igfitidea点击:

分析HTACCESS规则

查看用于处理永久链接的HTACCESS规则,无论是在.htaccess文件中还是在Apache配置中,我们都会注意到两件事。首先,如果现有文件与请求匹配,则忽略该规则。其次,如果现有目录与请求匹配,则忽略该规则。所有其他请求将通过index.php文件进行漏斗。

# WordPress Permalink rewrites
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/ [L]

现在,当尝试访问Apache虚拟目录时,这成为一个巨大的问题。由于该目录实际上不在服务器上,因此HTACCESS会将请求重定向到index.php文件,从而永远将我们锁定在服务器状态页面之外。除非我们指示重写规则忽略服务器状态页面请求。

允许访问服务器状态

为了防止htaccess阻止我们访问服务器状态页面,我们需要添加一个新的重写条件。

RewriteCond %{REQUEST_URI} !-/server-status

我们将在HTACCESS文件中的其他两个重写条件旁边添加该规则,如以下示例所示。

# WordPress Permalink rewrites
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !-/server-status
RewriteRule ^(.*)$ /index.php/ [L]

要使更改生效,请重新启动Apache服务,除非我们使用的是.htaccess文件,该文件将自动应用。

启用并保护服务器状态页面

现在,服务器状态页面同时显示了安全风险和隐私问题。通过授予所有人访问权限,黑客和那些有好奇心的人就可以识别有关服务器的敏感信息。他们还可以监视谁在访问服务器以及他们发送的任何请求。

为了防止未经授权访问状态页面,我们需要在Apache配置文件中为其修改Location块。在下面的示例中,我们仅允许来自IP地址10.200.0.24的个人使用。根据需要,也可以定义一个子网或者域名。

<Location /server-status>
     SetHandler server-status
	 Order deny,allow
	 Deny from all
	 Allow from 10.200.0.24
</Location>

重新启动Apache服务使更改生效。