3

我正在尝试使我的服务器符合 PCI 标准。我需要解决的最后一个问题是从 Apache ETag 标头中删除 INode。所以我在 httpd.conf 中定义了这一行:“FileETag MTime Size”只返回MTimeSize

<Directory "/var/www/html">
    Options FollowSymLinks

    AllowOverride None

    Order allow,deny
    Allow from all

    FileETag MTime Size
</Directory>

此修复解决了标准端口 80 的问题。

现在,我还在端口 8000 上运行了主机控制面板 (ISPConfig3)。运行 PCI 合规性测试后,我得到了这个错误:

Apache ETag 标头公开 inode 编号 严重性:潜在问题 CVE:CVE-2003-1418 影响:远程攻击者可以确定服务器上的 inode 编号。解决方法 使用 http://httpd.apache.org/docs/2.2/mod/core.html#FileETag FileETag 指令从 ETag 的计算中删除 INode 组件。例如,在 Apache 配置文件中放入以下行,仅根据文件的修改时间和大小计算 ETag: FileETag MTime Size Vulnerability Details: Service: 8000:TCP

我假设我必须在 httpd.conf 中添加一些内容才能将FileETag应用于在端口 8000 上运行的所有应用程序。

请指教应该怎么做。

谢谢!开尔文

4

3 回答 3

3

听起来您的 PCI 合规性测试已过时。你读过CVE-2003-1418吗?

OpenBSD 上的Apache HTTP Server 1.3.22 到 1.3.27允许远程攻击者通过 (1) 显示 inode 编号的 ETag 标头或 (2) 显示子进程 ID (PID) 的多部分 MIME 边界获取敏感信息。

[My Ital ] 这对于使用不同 Etag 算法的 Apache 2.2 来说不是问题。如果您仍在运行 Apache 1.3,那么您将遇到更大的问题,因为它不再受支持。

您正在尝试解决一个非问题。为自己获取当前的 PCI 合规性测试套件。

于 2012-03-08T23:07:55.430 回答
1

将此添加到 /etc/apache2/http.conf 的开头:

#PCI Compliance fix for "Apache ETag header discloses inode numbers"
Header unset ETag
FileETag MTime Size

这适用于我的 PCI 合规性扫描,我不明白为什么它不能在 apache 侦听的所有端口上工作。

于 2013-02-16T00:50:20.863 回答
0

根据Apache 2.4 FileETag 指令文档,用于计算 ETag 的默认值是MTime Size.

对于 Apache 2.3.14 及更早版本,默认设置为INode MTime Size.

所有端口的 ETag 设置并检查 Apache ETag 输出

您可以通过使用 curl 并比较标头中返回的 ETag 值与ls.

例如:

 curl -I https://example.com/file

其中file是由 Apache Web 服务器提供的文件系统上的文件。

将 ETag 设置为MTime Size您可能会看到如下内容:

ETag: "3-24f10051b181e"

您可以使用该FileETag指令更改 ETag 返回的值。将以下内容添加到 Apache 服务器 conf(例如/etc/httpd/conf/httpd.conf)文件的底部:

FileETag INode

重新加载或重新启动 Apache,然后重复 curl 测试。

在我的测试中,在服务器配置文件中包含 FileETag INode 会影响我的 Apache Web 服务器所服务的所有端口上的输出:80 和 443。

将 ETag 设置为INode您应该会收到一个十六进制数字,如下所示:

ETag: "200f8fa"

将 ETag 返回的数字从十六进制转换为十进制,并与 inode 编号进行比较。

如果您运行ls -i /path/to/webroot/example.com/file返回的 inode 应该是通过 ETag 返回的十六进制数的十进制等效值(在本例中为 33618170)。

如果您添加了FileETag Inode,请不要忘记删除它并重新启动/重新加载 Apache。

特定端口的 ETag 设置

您可以使用的上下文FileETag是:

  • 服务器配置
  • 虚拟主机
  • 目录
  • .htaccess

如果FileETag服务器配置中包含您想要的组件关键字,并且您仍然看到 Apache 正在服务的特定端口的不正确 ETag 输出,您应该搜索 vhost 配置文件和 Web 根目录FileETag- 因为那里的任何设置都会覆盖服务器配置。

如果您确实希望在特定端口上具有特定的 ETag 输出,则应为要影响的端口添加FileETag相应的块。VirtualHost如果您在此端口上为多个站点提供服务,则需要添加到指定该端口FileETag的每个块。VirtualHost

于 2019-01-11T00:33:09.380 回答