在启用永久链接的情况下访问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服务使更改生效。