隐藏服务器信息

本文介绍如何在Apache和JBoss中隐藏服务器和技术版本信息,包括修改httpd.conf中的ServerTokens设置及禁用X-Powered-By头部。

在一般情况下,我们可以在http header里看到服务器构建的信息,如:

 

Server : Apache/2.0.61 (Unix) X-Powered-By : Servlet 2.4; JBoss-4.0.4.GA (build: CVSTag=JBoss_4_0_4_GA date=200605151000)/Tomcat-5.5

 

这可能存在一些麻烦,如果让人知道软件版本,特别是在软件有bug的情况下会比较危险,所以我们可以把这些信息屏蔽,不给客户端用户知道.

 

Server信息这是在apache里控制的,

 

在httpd.conf里加入一行

 

ServerTokens Prod

 

这样,http header里的显示最简单的server信息,当然也可以设置其他的级别,

 

以下设置的级别和输出信息对照情况:

 

 ServerTokens Prod[uctOnly] Server sends (e.g.):

Server: Apache ServerTokens Major Server sends (e.g.):

 Server: Apache/2 ServerTokens Minor Server sends (e.g.):

Server: Apache/2.0 ServerTokens Min[imal] Server sends (e.g.):

 Server: Apache/2.0.41 ServerTokens OS Server sends (e.g.):

Server: Apache/2.0.41 (Unix) ServerTokens Full (or not specified) Server sends (e.g.):

Server: Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2

 

 

X-Powered-By信息这个一般是有应用服务器提供的

 

如jboss下,他是由一个filter提供的,你可以定义你所需要的信息,具体是在jboss的server/default/deploy/jbossweb-tomcat55.sar/conf/web.xml 这个文件中定义,有这样的几句:

 

 <!-- ================== Common filter Configuration ==================== -->

<filter>

<filter-name>CommonHeadersFilter</filter-name>

<filter-class>org.jboss.web.tomcat.filters.ReplyHeaderFilter</filter-class>

<init-param>

<param-name>X-Powered-By</param-name>

<param-value>Servlet 2.4; JBoss-4.0.4.GA (build: CVSTag=JBoss_4_0_4_GA date=200605151000)/Tomcat-5.5</param-value>

</init-param>

</filter>

<filter-mapping><filter-name>CommonHeadersFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>

 

这可以在param-value中修改你想要显示的信息,如JBoss等

 通过看ReplyHeaderFilter的源代码得知,其实这个filter没有做其他的事情,只是把X-Powered-By信息放到http header中,所以可以全部注释掉,这样http header中就不会有任何X-Powered-By的信息了

### 隐藏 Web 服务器 Banner 信息的方法 为了增强 Web 服务器的安全性,隐藏服务器的 banner 信息是一种常见的做法。以下是一些主流 Web 服务器(如 Apache、Nginx 和 Tomcat)中隐藏 banner 信息的具体方法: #### Apache Web 服务器Apache 的配置文件 `httpd.conf` 或 `apache2.conf` 中添加或修改以下两条指令即可隐藏 banner 信息[^2]: ```apache ServerSignature Off ServerTokens Prod ``` - `ServerSignature Off`:禁用在错误页面上显示服务器版本和其他信息。 - `ServerTokens Prod`:仅输出 `Server: Apache`,而不显示详细的版本号和模块信息。 #### Nginx Web 服务器 对于 Nginx,可以通过以下方法隐藏 banner 信息[^4]: 1. **隐藏版本号**: 在 Nginx 的配置文件中添加以下指令: ```nginx server_tokens off; ``` 这将阻止 Nginx 在响应头中显示版本号。 2. **修改或隐藏 Server 字段**: 如果需要进一步隐藏或更改 `Server` 字段,可以使用第三方模块 `headers-more-nginx-module`。编译时需要添加该模块的支持,例如: ```bash ./configure --prefix=/application/nginx-1.23.3 --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --add-module=/application/headers-more-nginx-module-0.34 ``` 安装完成后,在配置文件中添加以下指令以修改 `Server` 字段: ```nginx add_header Server "CustomName"; ``` 或者完全移除 `Server` 字段: ```nginx more_clear_headers "Server"; ``` #### Tomcat Web 服务器 Tomcat 默认会在错误页面中显示版本信息,这可能成为潜在的安全隐患。可以通过以下方式隐藏这些信息[^3]: 1. 修改 `server.xml` 文件中的连接器部分,添加以下属性: ```xml <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" server="HiddenServer" securityConstraints="true"/> ``` - `server="HiddenServer"`:将默认的 Tomcat 信息替换为自定义字符串。 2. 禁用默认错误页面: 在 `web.xml` 文件中定义自定义错误页面,覆盖默认的 404、403 等错误页面,避免泄露版本信息。 #### PHP 配置 如果 Web 服务器运行了 PHP 应用程序,还需要确保 PHP 不会泄露版本信息。在 `php.ini` 文件中设置以下参数[^2]: ```ini expose_php = Off ``` 这将防止 PHP 在 HTTP 响应头中暴露其版本号。 ### 检查隐藏效果 可以使用以下命令检查隐藏效果[^4]: ```bash curl -I http://your-server-address ``` 观察返回的响应头是否仍然包含敏感信息。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值