【问题标题】:Remove "Server: Apache" from response headers从响应标头中删除“服务器:Apache”
【发布时间】:2014-11-06 10:24:14
【问题描述】:

我想知道如何完全删除 apache 在响应中发送的 Server 标头。

最初,它在响应标头中显示完整的服务器信息,例如 Server: Apache (Ubuntu 14.04)。 但我在某个地方读到了将其添加到 apache2.conf 中

ServerTokens ProductOnly

ServerSignature Off

它没有删除标题,只是将其更改为Server: Apache

我什至尝试从 PHP 中删除带有 header_remove('Server'); 的标头。但仍然没有运气。

所以,我想完全删除它。

谢谢,

PS:如果可以将标头值更改为例如:Server: Microsoft-IIS/8.0(假值);那么它也可以。

【问题讨论】:

标签: apache ubuntu http-headers


【解决方案1】:

服务器 ID/令牌标头由“ServerTokens”指令(由 mod_core 提供)控制。除了修改 Apache HTTPD 源代码,或者使用 mod_security 模块之外,没有其他方法可以完全抑制服务器 ID 标头。

使用 mod_security 方法,您可以在 modsecurity.conf 文件中禁用所有模块的指令/功能,并仅利用服务器标头 ID 指令而无需任何额外的“包袱”。 (c) 芯片人

【讨论】:

    【解决方案2】:

    2020 年更新:

    要在@Maxym 使用mod_security 模块的上述答案的基础上构建 - 请注意,您不能使用此模块完全删除服务器标头(这只能通过源代码编辑/重新编译),但是您可以重命名公共服务器签名 - 通过这个说“NinjaServer” mod_security模块!

    这样做;

    我们必须(在 httpd.conf 或同等文件中)保持/设置;

    ServerTokens Full
    

    然后通过 mod_security2.conf;

    SecServerSignature "NinjaServer"
    

    另外,最好最后加载 mod_security 模块,以避免 apache 错误日志中的通知。

    对于 OpenSuse 15.x / Apache 2.4.x 安装程序,实际步骤如下:

     zypper -v in apache2-mod_security2 // install mod_security
     a2enmod security2                  // enable the module
     a2enmod unique_id                  // this was needed too...
     a2enmod -l                         // verify loaded
    

    接下来,编辑httpd.conf.local(在/etc/apache2下)并设置;

     ServerTokens Full
    

    接下来,编辑 mod_security2.conf(在 /etc/apache2 下)并设置;

     SecRuleEngine DetectionOnly         // only remove apache server name
     SecServerSignature "NinjaServer"    // some name other than Apache
    

    同时注释掉(本例仅用于修改公共服务器签名);

    # Include /usr/share/apache2-mod_security2/rules/modsecurity_crs_10_setup.conf
    
     
    

    然后通过重启apache

    systemctl restart apache2
    

    如果你现在检查你的标题(浏览器的开发工具),你会看到 服务器名称显示为 NinjaServer :-)

    【讨论】:

      【解决方案3】:

      This 是我找到的最佳方式:

      sudo apt-get install libapache2-mod-security2
      

      然后将这个添加到/etc/apache2/apache.conf(你可以使用任何名字,这里我用了空格):

      <IfModule security2_module>
          SecRuleEngine on
          ServerTokens Min
          SecServerSignature " "
      </IfModule> 
      

      然后重启 Apache:

      sudo service apache2 restart
      

      现在当你运行类似的东西时:

      curl -v http://localhost:80/ | head
      

      你应该得到:

      < HTTP/1.1 200 OK
      < Date: Mon, 25 Jan 2021 09:31:11 GMT
      * Server  is not blacklisted
      < Server:
      

      详情请见here

      【讨论】:

        【解决方案4】:

        在 Raspberry Pi 操作系统上测试:Raspbian Buster(发布日期:2021 年 3 月 4 日 内核版本:5.10)

        Apache 版本:2.4.38

        安装 mod-security

        sudo apt-get install libapache2-mod-security2 -y
        

        修改security.conf

        sudo nano /etc/apache2/conf-available/security.conf
        

        如下

        ServerTokens Prod
        

        复制模板

        sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
        

        修改 modsecurity.conf

        sudo nano /etc/modsecurity/modsecurity.conf
        

        如下

        SecRuleEngine DetectionOnly
        SecServerSignature "Noop"
        

        重启服务器

        sudo service apache2 restart
        

        来源

        【讨论】:

          猜你喜欢
          • 2017-07-11
          • 2014-06-19
          • 2016-05-09
          • 1970-01-01
          • 2010-11-13
          • 2021-06-22
          • 1970-01-01
          • 2017-09-17
          • 2016-05-23
          相关资源
          最近更新 更多