Apache:“标头设置服务器”不起作用

Apache:“标头设置服务器”不起作用

我正在尝试做一些我认为很简单的事情。我只想更改Apache 为每个请求发送的标头。这是我的文件Server中的那一行:httpd.conf

Header always set Server "My Server name"

但是,标题中返回的内容如下Server

Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.10 with Suhosin-Patch mod_ssl/2.2.8 OpenSSL/0.9.8g

顺便说一句,这就是我正在使用的软件(多么方便)。我确实启用了 mod_headers,并且它适用于我的配置文件中的其他指令。

编辑:我在 Ubuntu Server 8.04 LTS x64 上运行它。

这为什么不起作用?

答案1

这是因为 Apache 的政策是不要对服务器标头撒谎,并且始终设置它。您能做的最好的事情就是让它只显示“Apache”:

ServerSignature Off
ServerTokens Prod

正如常问问题和一个错误报告,让 Apache 发送“我的服务器名称”的唯一方法是修改源。

还要注意的是,如果你的服务器没有显示你正在使用 Apache,你不会得到任何好处,通过隐蔽性实现安全嗯,其实并不安全。如果你试图隐藏你的操作系统或 php 或 ssl 版本,以防出现错误,那么这也没什么用,因为人们往往会尝试进入他们遇到的每个服务器。

答案2

下面只隐藏了操作系统版本和 Apache 服务器版本的信息。

    ServerSignature Off
    ServerTokens Prod

要完全混淆服务器信息,请添加使用 mod_headers 模块

    LoadModule headers_module lib64/httpd/modules/mod_headers.so

位于 httpd.conf 末尾(位于所有其他配置之后)

    <IfModule headers_module>
        Header set server "anything"
    </IfModule>

答案3

那里实际上是一个修复删除“Apache”一词:

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

相关内容