通常,软件的漏洞信息和特定版本是相关的,因此,版本号对黑客来说是最有价值的。
在默认情况下,系统会把Apache版本模块都显示出来(http返回头)。如果列举目录的话,会显示域名信息(文件列表正文),去除Apache版本号的方法是修改配置文件/etc/httpd.conf。找到关键字ServerSignature,将其设定为:
ServerSignature Off
ServerTokens Prod
然后重新启动Apache服务器。
通过分析Web服务器的类型,大致可以推测出操作系统的类型,比如,Windows使用IIS来提供HTTP服务,而Linux中最常见的是Apache。
默认的Apache配置里没有任何信息保护机制,并且允许目录浏览。通过目录浏览,通常可以获得类似“Apache/1.3.27 Server at apache.linuxforum.net Port 80”或“Apache/2.0.49 (Unix) PHP/4.3.8”的信息。
通过修改配置文件中的ServerTokens参数,可以将Apache的相关信息隐藏起来。但是,Red Hat Linux运行的Apache是编译好的程序,提示信息被编译在程序里,要隐藏这些信息需要修改Apache的源代码,然后,重新编译安装程序,以替换里面的提示内容。
以Apache 2.0.50为例,编辑ap_release.h文件,修改“#define AP_SERVER_BASEPRODUCT /"Apache/"”为“#define AP_SERVER_BASEPRODUCT /"Microsoft-IIS/5.0/"”。编辑os/unix/os.h文件,修改“#define PLATFORM /"Unix/"”为“#define PLATFORM /"Win32/"”。修改完毕后,重新编译、安装Apache。
Apache安装完成后,修改httpd.conf配置文件,将“ServerTokens Full”改为“ServerTokens Prod”;将“ServerSignature On”改为“ServerSignature Off”,然后存盘退出。重新启动Apache后,用工具进行扫描,发现提示信息中已经显示操作系统为Windows。
解决方法:修改/usr/local/apache2.2.XX/conf/extra/httpd-default.conf或/usr/local/apache2.0.X/conf/httpd.conf
#ServerTokens Full 1:将此行前面加#注解掉
ServerTokens Prod 2:加上此行
#ServerSignature On 4:将此行前面加#注解掉
ServerSignature Off 3:加上此行
修改后重起apache,再看看。
隐藏之前测试结果:
[root@getway ~]# telnet www.huanbohainews.com.cn 80
Trying 60.2.236.163...
Connected to www.huanbohainews.com.cn (60.2.236.163).
Escape character is '^]'.
HEAD / HTTP/1.0
HTTP/1.1 200 OK
Date: Wed, 06 Jan 2010 09:47:02 GMT
Server: Apache/2.2.11 (Unix) DAV/2
Accept-Ranges: bytes
Connection: close
Content-Type: text/html
Connection closed by foreign host.
隐藏之后测试结果:
[root@getway ~]# telnet www.yysjh.org 80
Trying 61.136.60.68...
Connected to www.yysjh.org (61.136.60.68).
Escape character is '^]'.
HEAD / HTTP/1.0
HTTP/1.1 403 Forbidden
Date: Wed, 06 Jan 2010 09:11:48 GMT
Server: Apache
Connection: close
Content-Type: text/html; charset=iso-8859-1
Connection closed by foreign host.