天天看点

【Developer Log】部署安全:隐藏Apache的版本信息

在Apache - PHP的部署中,Apache响应消息header中的Server带有Apache的版本信息,如下:

【Developer Log】部署安全:隐藏Apache的版本信息

这在生产环境中是有潜在危险的,可以被扫描出所使用的版本,如果这个版本具有已知的漏洞,别人很容易进行攻击,因此要隐藏Apache的相关信息。

同样在Apache的错误返回页面中,也包含同样的信息。除了Apache的信息外,还包括ip地址和端口,对于通过Nginx或者代理的生产环境,这会暴露内部的组网,如果使用的是其他人也用的云端部署,暴露内部情况就可能有隐患。

【Developer Log】部署安全:隐藏Apache的版本信息

因此,我们需要在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的输出)。使用该指令来启用这个页脚主要在于处于一个代理服务器链中的时候,用户基本无法辨识出究竟是链中的哪个服务器真正产生了返回的错误信息。

相关链接:开发日志

继续阅读