Skip to content

毛俊的博客

WEB应用自定义错误页面及去除版本信息

web1 min read

服务器使用了系统默认的错误页面, 攻击者可以通过默认错误页面获取应用的版本信息、 从应用的错误信息中提取敏感信息等。

解决方案

为应用自定义 40x、 50x 错误页面。

Tomcat

修改tomcat的默认conf/web.xml或应用的web.xml文件, 添加如下内容:

1<error-page>
2<error-code>403</error-code>
3<location>/error.html</location>
4</error-page>
5<error-page>
6<error-code>404</error-code>
7<location>/error.html</location>
8</error-page>
9<error-page>
10<error-code>500</error-code>
11<location>/error.html</location>
12</error-page>

Apache

1ErrorDocument 500 /errorhtml
2ErrorDocument 404 /error.html
3ErrorDocument 403 /error.html

Nginx

conf/nginx.conf配置文件里增加server_tokens off;作用域是http,server,location语句块

通过页面自定义错误页面,这种只会去除html页面版本信息,但是软件版本依旧可以通过探针获取到。可以在软件层面配置隐藏版本信息:

Nginx

  • Nginx修改源码编译隐藏
  1. 修改src/core/nginx.h(Nginx内部名称的)
1#define NGINX_VERSION "1.12.0"
2#define NGINX_VER "nginx/" NGINX_VERSION

去掉版本号并把nginx修改成大写(可以任意)

1#define NGINX_VERSION ""
2#define NGINX_VER "NGINX/" NGINX_VERSION
  1. 修改src/http/ngx_http_header_filter_module.c(HTTP ResponseHeader)
1static char ngx_http_server_string[] = "Server: nginx" CRLF;
1static char ngx_http_server_string[] = "Server: NGINX" CRLF;
  1. 修改src/http/ngx_http_special_response.c(修改错误页的底部Footer)

static u_char ngx_http_error_tail[] = 下的nginx信息(可以任意)

1static u_char ngx_http_error_tail[] =
2"<hr><center>nginx</center>" CRLF
3"</body>" CRLF
4"</html>" CRLF
5;

同样改成大写(可以任意)

1static u_char ngx_http_error_tail[] =
2"<hr><center>NGINX</center>" CRLF
3"</body>" CRLF
4"</html>" CRLF
5;

添加 server_tokens off; 参数的时候,调用的是 src/http/ngx_http_header_filter_module.c 里的值 不添加的时候,显示版本号调用的是 src/core/nginx.h 里的值

  • 修改错误信息
  1. fastcgi_intercept_errors 配置方式 这是做正向代理的配置:
1# 定义错误页面码,如果出现相应的错误页面码,转发到那里。
2fastcgi_intercept_errors on;
3error_page 404 403 500 502 503 504 /404.html;
4
5# 承接上面的location。
6
7location = /404.html {
8
9# 放错误页面的目录路径。
10
11root /usr/share/nginx/html;
12
13}
  1. proxy_intercept_errors配置方式 适合反向代理的配置:
1proxy_intercept_errors on;
2error_page 404 /404.html;
3
4location = /404.html {
5
6root /usr/share/nginx/html;
7
8}

(完)

© 2020 by 毛俊的博客. All rights reserved.
Theme by LekoArts