【问题标题】:Apache configuration settings for specific port (PCI Compliance)特定端口的 Apache 配置设置(PCI 合规性)
【发布时间】:2012-03-26 04:34:25
【问题描述】:

我正在尝试使我的服务器符合 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 指令从计算中删除 INode 组件 电子标签。例如,将以下行放在 Apache 配置文件以仅基于文件的计算 ETag 修改时间和大小:FileETag MTime Size 漏洞详情: 服务:8000:TCP

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

请建议应该怎么做。

谢谢! 开尔文

【问题讨论】:

    标签: apache security httpd.conf pci-compliance


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

        根据Apache 2.4 FileETag directive documentation,用于计算ETag 的默认值是MTime Size

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

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

        您可以通过使用 curl 并比较标头中返回的 ETag 值与 ls 返回的 inode 值来自行检查。

        例如:

         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 块。

        【讨论】:

          猜你喜欢
          • 2017-05-26
          • 1970-01-01
          • 1970-01-01
          • 2014-10-18
          • 2011-05-12
          • 2013-10-02
          • 2015-08-22
          • 2015-07-29
          • 1970-01-01
          相关资源
          最近更新 更多