1.调整参数隐藏 Nginx软件版本号信息
编辑 nginx.conf 配置文件增加参数,实现隐藏 Nginx 版本号。 在 Nginx 配置文件 nginx.conf 中的 http标签段内加入 “server_tokens off;”参数,具体如下:http
{
server_tokens off;
}
配置完毕后,重新加载配置文件。
官方资料地址:http://nginx.org/en/docs/http/ngx_http_core_module.html
2.更改源码隐藏 Nginx 软件名及版本号
**第一步是一次修改3个 Nginx 源码文件。 **修改的第一个文件为 nginx-1.18.0/src/core/nginx.h,代码如下**:**
#define nginx_version 1019008
#define NGINX_VERSION "1.18.0" #修改为想要显示的版本号,如2.2.21
#define NGINX_VER "nginx/" NGINX_VERSION #将 Nginx 修改为想要修改的软件名称,如OWS
#ifdef NGX_BUILD
#define NGINX_VER_BUILD NGINX_VER " (" NGX_BUILD ")"
#else
#define NGINX_VER_BUILD NGINX_VER
#endif
#define NGINX_VAR "NGINX" #将 Nginx 修改为想要修改的软件名称,如OWS
#define NGX_OLDPID_EXT ".oldbin"
修改第二个文件是 nginx-1.18.0/src/http/ngx_http_header_filter_module.c的第49行,需要修改的字符串如下:
static u_char ngx_http_server_string[] = "Server: nginx" CRLF; #将本行nginx 替换为OWS
static u_char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;
static u_char ngx_http_server_build_string[] = "Server: " NGINX_VER_BUILD CRLF;
修改的第三个文件是 nginx-1.18.0/src/http/ngx_http_special_response.c,对外页面报错时,它会控制是否战士敏感信息。修改第21~30行,代码如下:
static u_char ngx_http_error_full_tail[] =
"<hr><center>" NGINX_VER "</center>" CRLF #修改为"<hr><center>" NGINX_VER "(www.baidu.com)</center>" CRLF
"</body>" CRLF
"</html>" CRLF
;
static u_char ngx_http_error_build_tail[] =
"<hr><center>" NGINX_VER_BUILD "</center>" CRLF #修改为"<hr><center>" OWS "</center>" CRLF
"</body>" CRLF
第二步是修改后编译软件,使其生效。
修改后再编译安装软件,如果是已安装好的服务,则需要重新编译 Nginx,配好配置,启动服务。
3.更改 Nginx 服务的默认用户
一般情况下,Nginx 服务启动后,默认使用的用户是 nobody。为了防止黑客猜到这个Web服务的用户,我们需要将其改成特殊的用户名,例如 nginx 或特殊点的 inca,但是这个用户必须是系统里事先存在的,下面以 nginx用户为例进行说明。 (1)为Nginx 服务建立新用户。useradd nginx -s /sbin/nologin -M #不需要有登录系统的能力
id nginx #检查用户
(2)为Nginx 服务,让其使用刚建立的nginx用户。
更改配置文件参数。
user nginx nginx;
(3)检查更改用户的效果。
重新加载配置后,检查 Nginx 服务进程的对应用户,代码如下:
# ps -ef|grep nginx|grep -v grep
参考书籍:运维前线