从web服务器中移除相关组件的版本信息
2010-03-13 10:46:40 阿炯

Apache

ServerTokens 指令

说明: 配置服务器HTTP回应头
语法: ServerTokens Major|Minor|Minimal|ProductOnly|OS|Full
默认值: ServerTokens Full
上下文: 服务器配置
状态: 核心
模块: core

此指令控制了Server回送给客户端的回应头域是否包含关于服务器OS类型和编译进的模块描述信息。
ServerTokens Prod[uctOnly]
服务器会发送(比如说):Server:Apache

ServerTokens Major
服务器会发送(比如说):Server:Apache/2

ServerTokens Minor
服务器会发送(比如说):Server:Apache/2.0

ServerTokens Min[imal]
服务器会发送(比如说):Server:Apache/2.0.41

ServerTokens OS
服务器会发送(比如说):Server: Apache/2.0.41 (Unix)

ServerTokens Full (or not specified)
服务器会发送(比如说):Server: Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2

此设置将适用于整个服务器,而且不能在虚拟主机的管理层次上予以启用或禁用。

ServerSignature 指令
说明: 配置服务器生成页面的页脚
语法: ServerSignature On|Off|EMail
默认值: ServerSignature Off
上下文: 服务器配置, 虚拟主机, 目录, .htaccess
覆盖项: All
状态: 核心
模块: core

ServerSignature 指令允许您配置服务器端生成文档的页脚(错误信息、mod_proxy的ftp目录列表、mod_info的输出)。您启用这个页脚的原因主要在于处于一个代理服务器链中的时候,用户基本无法辨识出究竟是链中的哪个服务器真正产生了返回的错误信息。

默认的Off设定没有错误行(这样便与Apache 1.2及更旧版本兼容)。采用On会简单的增加一行关于服务器版本和正在伺服的虚拟主机的ServerName,而EMail设置会如文档中说明的那样额外创建一个指向ServerAdmin的"mailto:"部分。


Header always unset X-Powered-By

上面这三种方式阻止了Apache广播其版本号和其他可识别的细节,这使得攻击者很难利用已知的漏洞。

TraceEnable Off

Turning off TRACE protects you against known cross-site tracking vulnerabilities.


Nginx

隐藏前:
Server: nginx/1.15.3

隐藏后:
Server: nginx

在nginx的配置文件的http段
server_tokens off

Syntax:  server_tokens on | off | build | string;

Default:  server_tokens on;

Context:  http, server, location

在主配置文件nginx.conf、虚拟主机的配置文件中配置,选一个配置即可。


如果要对PHP也隐藏掉版本号就需要修改fastcgi.conf这个文件了:去掉后面的 /$nginx_version 或者直接注释掉这一行。

如果是转发给php-fpm ,需要编辑fastcgi.conf,一般在nginx.conf 同层
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
修改为:
fastcgi_param SERVER_SOFTWARE nginx;

重置相关服务后生效。

官方文档地址


PHP

X-Powered-By:"PHP/5.4.16"

隐藏PHP的版本号
expose_php = Off

对于Apache服务器还有另外一个方法可以直接尝试在.htaccess文件中Header unset X-Powered-By,删除X-Powered-By节,不过还是建议改动php.ini的expose_php。

找出加载的 PHP 配置文件中配置,如果你不知道此配置文件在服务器上的位置,请运行以下命令找到它:
php -i | grep "Loaded Configuration File"

PHP 配置文件位置
---在 CentOS/RHEL/Fedora 上---
Loaded Configuration File => /etc/php.ini
---在 Debian/Ubuntu/Linux Mint 上---
Loaded Configuration File => /etc/php/7.0/cli/php.ini

在对 PHP 配置文件进行任何更改之前,建议首先备份 PHP 配置文件。用编辑器以超级用户权限打开文件:
---在 CentOS/RHEL/Fedora 上---
vim /etc/php.ini
---在 Debian/Ubuntu/Linux Mint 上---
vim /etc/php/VER/cli/php.ini

定位到关键词 expose_php,并将值设置成 Off:
expose_php = Off

保存并退出文件并重启 web 服务器使之生效,使用http命令行工具或浏览器来查看其效果。