业务系统经常定期做渗透测试,对外提供Web服务,时常因版本信息泄露,导致过时版本存在安全漏洞,因此要做些基础安全加固。
编译安装Ningx前提条件,是需要安装GCC编译环境
1 安装编译环境
koevn@localhost:~$ sudo apt updatekoevn@localhost:~$ sudo apt install gcc g++ make wget # 安装编译环境koevn@localhost:~$ sudo wget https://nginx.org/download/nginx-1.20.2.tar.gzkoevn@localhost:~$ tar -xvf nginx-1.20.2.tar.gzkoevn@localhost:~$ cd nginx-1.20.22 修改Nginx源码包
2.1.0 修改ngx_http_header_filter_module.c文件
vim src/http/ngx_http_header_filter_module.c
修改文件49行左右
static u_char ngx_http_server_string[] = "Server: nginx" CRLF;
改为
static u_char ngx_http_server_string[] = "Server: " CRLF;
2.2.0 修改ngx_http_special_response.c文件
vim src/http/ngx_http_special_response.c
修改文件36行左右
"<hr><center>nginx</center>" CRLF
改为
"<hr><center></center>" CRLF
2.3.0 修改nginx.h文件
vim src/core/nginx.h
修改文件13和14行
#define NGINX_VERSION "1.28.0"
#define NGINX_VER "nginx/" NGINX_VERSION
改为
#define NGINX_VERSION ""
#define NGINX_VER "/" NGINX_VERSION
3 添加headers-more-nginx模块
这是第三方模块,作用是把Response Headers里的Server字段移除掉,上面第二步骤只是隐藏了Nginx信息,但是Server字段值显示为空,看着还是有点奇怪,干脆直接移除该字段。
koevn@localhost:~$ sudo wget https://github.com/openresty/headers-more-nginx-module/archive/refs/tags/v0.38.tar.gz \ -O headers-more-nginx-module.tar.gzkoevn@localhost:~$ sudo tar -xvf headers-more-nginx-module.tar.gz编译安装Nginx时,添加--add-module=../headers-more-nginx-module参数即可。
4 编辑Nginx配置文件
编辑nginx.conf配置文件
http {
#------ 其他配置省略 ------#
more_clear_headers Server; #添加这段即可
#------ 其他配置省略 ------#
}编辑主机配置文件conf.d/site.conf
server {
#------ 其他配置省略 ------#
proxy_hide_header X-Powered-By; #添加这段即可
#------ 其他配置省略 ------#
}5 测试结果
