Apache 2.0 - 禁用 HTTP TRACE 和 TRACK 方法

Apache 2.0 - 禁用 HTTP TRACE 和 TRACK 方法

我使用 Apache 2.0 作为 HTTP 服务器和特定用途的基于 Perl 的 HTTP 客户端。到目前为止,我使用 httpd.conf 文件中的以下配置禁用 TRACE 和 TRACK 方法:

RewriteEngine 开启

RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)

重写规则 .* - [F]

问题

1)为了提高性能,我可以用以下配置替换以前的配置吗?

跟踪启用关闭

2)“traceEnable off”命令能否确保TRACE和TRACK方法都被禁用?

3) 最后,由于只有基于 Perl 的 HTTP 客户端才能访问 HTTP 服务器,我是否需要在 httpd.conf 文件中添加 TRACE/TRACK 禁用配置?

答案1

  1. 根据文档http://httpd.apache.org/docs/2.0/mod/core.html#traceenableTraceEnable Off 只会禁用 HTTP TRACE 方法。它对 TRACK 方法不起作用。

  2. 见1.

  3. 如果您的服务器是公共的,那么您可能应该禁用这些方法。

此外:由于你似乎有点偏执(这可能是一个好的事情!),我会升级到 Apache 的更高版本,因为 2.0 的最终版本已经发布并且没有新的错误 - 包括安全漏洞将被修复。

答案2

案例A:TRACE指令

使用 httpd.conf 文件中的“traceEnable on”命令并运行以下 curl 命令:

SITE= http://www.server.my; curl $SITE -X痕迹

响应是:

TRACE / HTTP/1.1 User-Agent: curl/7.29.0 Host: http://www.server.my Accept: */*

另一方面,如果“traceEnable off”,则前面的 curl 命令返回:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /
on this server.</p>
<hr>
<address>Apache/2.0.63 (Unix) mod_ssl/2.0.63 OpenSSL/0.9.7d DAV/2 Server at http://www.server.my Port 80</address>
</body></html>

这意味着 TRACE enable 命令被禁用。因此,我认为“traceEnable off”命令工作正常。

案例 B:TRACK 指令

使用 httpd.conf 文件中的“traceEnable on”命令并运行以下 curl 命令:

SITE= http://www.server.my; curl $SITE -X追踪

响应是:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>501 Method Not Implemented</title>
</head><body>
<h1>Method Not Implemented</h1>
<p>TRACK to / not supported.<br />
</p>
<hr>
<address>Apache/2.0.63 (Unix) mod_ssl/2.0.63 OpenSSL/0.9.7d DAV/2 Server at http://www.server.my Port 80</address>
</body></html>

以下是上一个测试用例的结论:501 方法未实现。如果你向 Apache 发送 TRACE 请求,它会返回此方法未实现。所以,我认为我们不必担心……这已由下一个测试用例证实。

如果“traceEnable off”,则先前的 TRACK 请求将返回相同的“未实现”消息。

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>501 Method Not Implemented</title>
</head><body>
<h1>Method Not Implemented</h1>
<p>TRACK to / not supported.<br />
</p>
<hr>
<address>Apache/2.0.63 (Unix) mod_ssl/2.0.63 OpenSSL/0.9.7d DAV/2 Server at http://www.server.my Port 80</address>
</body></html>

根据http://publib.boulder.ibm.com/httpserv/ihsdiag/http_trace.html尽管 Apache 服务器本身并不支持 TRACK 方法,但插件模块还是有可能提供对该方法的支持。要禁用插件模块的此功能,除了禁用 TRACE 方法外,我们可能还必须使用 Rewrite 模块禁用 TRACK 方法。

但是如果你没有在 Apache 中安装 TRACK 插件,就不会有安全问题。这个假设成立吗?

相关内容