Tag Archives: Header

如何修改Apache返回的头部信息

问题分析:当客户端连接到Apache服务器的时候,Apache一般会返回服务器版本、非缺省模块等信息,例如:
Server: Apache/1.3.26 (Unix) mod_perl/1.26
解决:
你可以在Apache的配置文件里面作如下设置让它返回的关于服务器的信息减少到最少:
ServerTokens Prod
注意:
这样设置以后Apache还会返回一定的服务器信息,比如:
Server: Apache
但是这个不会对服务器安全产生太多的影响,因为很多扫描软件是扫描的时候是不顾你服务器返回的头部信息的。你如果想把服务器返回的相关信息变成:
Server: It iS a nOnE-aPaCHe Server
那么你就要去修改源码了。
方法:
代码:
修改几个Apache的几个源代码文件,然后自己编译

操作:
一、文件操作
file:srcdir/include/ap_release.h

#define AP_SERVER_BASEVENDOR"这里填写开发组织名,例如:Microsoft Corp."
#defineAP_SERVER_BASEPRODUCT"这里填写服务器软件名,例如:Microsoft-IIS"
#defineAP_SERVER_MAJORVERSION "主版本,例如:5"
#defineAP_SERVER_MINORVERSION "次版本,例如:0"
#defineAP_SERVER_PATCHLEVEL "修正版本,例如:1"

file:srcdir/include/os.h

#definePLATFORM "这里填写操作系统的名称,例如:Win32"

file:srcdir/os/PLATFORM/os.h

#definePLATFORM "这里填写操作系统的名称,例如:Win32"

file:srcdir/modules/generators/mod_info.c

Search "Apache Server Information" replace with"这里填写在查看server-info现实的页面标题,例如:Microsoft-IISInformation"

file:srcdir/modules/generators/mod_status.c
Search "Apache Server Status" replace with"这里填写在查看server-status现实的页面标题,例如:Microsoft-IISStatus"

file:path/to/filename 表示要对这个文件进行操作
Search"A" replace with "B"表示在文件之中搜索A,然后使用B替换

二、编译操作
代码:
按照一般正常步骤编译安装

结果:
/server-info:

Microsoft-IIS Information
...
Server Version:Microsoft-IIS/5.0/5.0.1 (Win32)

/server-status:
Apache Server Status for 127.0.0.1
Server Version:Microsoft-IIS/5.0/5.0.1 (Win32)
Server Built: Apr 3 2004 18:20:54

页面底部显示:(例如在以上两个测试和indexes情况之下)

Microsoft-IIS/5.0/5.0.1 (Win32) Server at 127.0.0.1 Port80

Windows下直接用十六进制器编辑Apache2inlibhttpd.dll文件,用ASCII搜索,找到第2个"Win32"处就是你要改的地方了。