在Apache - PHP的部署中,Apache响应消息header中的Server带有Apache的版本信息,如下:
这在生产环境中是有潜在危险的,可以被扫描出所使用的版本,如果这个版本具有已知的漏洞,别人很容易进行攻击,因此要隐藏Apache的相关信息。
同样在Apache的错误返回页面中,也包含同样的信息。除了Apache的信息外,还包括ip地址和端口,对于通过Nginx或者代理的生产环境,这会暴露内部的组网,如果使用的是其他人也用的云端部署,暴露内部情况就可能有隐患。
因此,我们需要在Apache的配置中将有关显示给隐藏。在配置文件,无论是apache2.conf还是httpd.conf,加上下面配置:
# 解决问题1
ServerTokens ProductOnly
# 解决问题2:隐藏最下的一栏,该栏信息中Apache信息显示情况将根据ServerTockens的配置
ServerSignature Off
参考网上资料
http://www.jb51.net/Article/34536.htm ,相关说明摘要如下。这里需要补充的是下面讲的缺省配置是利用直接从Apache网站下载和安装的情况,对于ubuntu server通过apt-get方式安装,则不一定,可能是ServerSignature On,ServerTokens OS。
---------
ServerTokens指令
语法:ServerTokens Major | Minor | Min[imal] | Prod[uctOnly] | OS | Full
默认:ServerTokens Full
这个指令用来控制服务器回应给客户端的“Server:”应答头是否包含关于服务器操作系统类型和编译进的模块描述信息。
ServerTokens Prod[uctOnly]:服务器会发送(比如):Apache
Apache Server at 192.168.120.240 Port 80
ServerTokens Major:服务器会发送(比如):Apache/2
Apache/2 Server at 192.168.120.240 Port 80
ServerTokens Minor:服务器会发送(比如):Apache/2.2
Apache/2.2 Server at 192.168.120.240 Port 80
ServerTokens Min[imal]:服务器会发送(比如):Apache/2.2.11
Apache/2.2.11 Server at 192.168.120.240 Port 80
ServerTokens OS:服务器会发送(比如):Apache/2.2.11(Unix)
Apache/2.2.11 (Unix) Server at 192.168.120.240 Port 80
ServerTokens Full:服务器会发送(比如):Apache/2.2.11(Unix)PHP/5.2.8
Apache/2.2.11 (Unix) PHP/5.2.8 Server at 192.168.120.240 Port 80
ServerSignature指令
语法:ServerSignature . | Off | Email
默认:ServerSignature Off
这个指令用来配置服务器端生成文档的页脚(错误信息、mod_proxy的FTP目录列表、mod_info的输出)。使用该指令来启用这个页脚主要在于处于一个代理服务器链中的时候,用户基本无法辨识出究竟是链中的哪个服务器真正产生了返回的错误信息。