1. 养乐多|杨城的个人博客首页
  2. 技术杂谈
  3. Other

Nginx安全优化小技巧

工作中,难免遇到要求“苛刻”的客户,客户不想让人看到服务名称或服务版本相关信息,对于此合理要求,我们可以这样做。
1. 编辑nginx.conf 配置文件,新增参数隐藏Nginx软件版本号信息:

http{
server_tokens off;
}

重启Nginx服务后,效果如图示(已看不到版本号信息了):
Nginx安全优化小技巧
Nginx安全优化小技巧
参数的作用:启用或禁用Nginx的版本信息显示在报错信息和server的响应首部位置中,未配置此参数时,Nginx默认此参数是启用状态。
官网描述:http://nginx.org/en/docs/http/ngx_http_core_module.html#server_tokens

2. 更改源码隐藏Nginx软件名及版本号
软件名称的修改一般情况下不会有配置参数和入口,Nginx也不例外,因此需要更改Nginx源码来实现隐藏Nginx软件名称。方法如下:
1)依次修改3个Nginx源码文件
a. 修改的第一个文件是 /nginx-1.10.1/src/core/nginx.h 修改如图中红框部分
Nginx安全优化小技巧
将 #define NGINX_VERSION 值修改为 “XXX”,#define NGINX_VER 值修改为 “AAA/”,#define NGINX_VAR 值修改为 “AAA”。
b. 修改的第二个文件是 nginx-1.10.1/src/http/ngx_http_header_filter_module.c 修改如图中红框部分,将 nginx 修改为 “AAA”。
Nginx安全优化小技巧
2)修改后编译软件,使其生效
修改后再编译安装软件,如果是已安装好的服务,需要重新编译Nginx,配好配置,启动服务。

关于账号使用方面
3. 更改Nginx服务的默认用户
1)为Nginx服务建立新用户

useradd nginx -s /sbin/nologin -M
# 这里不需要有系统登录权限,应当禁止其登录能力,相当于Apache里的用户

2)配置Nginx服务,让其使用刚建立的nginx用户。更改Nginx服务默认使用的用户,方法有两种:
a. 第一种方法为直接更改配置文件参数,将默认的#user nobody。改为如下的内容:

user nginx nginx

b. 第二种方法为直接在编译Nginx软件时指定编译的用户和组,命令如下:

./configure --user=nginx --group=nginx --prefix=/application/nginx1.10.0 --with-http_stub_status_module --with-http_ssl_module
# 前面在编译Nginx时,就是这么处理的,因此无论配置文件中是否加参数,默认都是Nginx用户。

c. 检查更改用户的效果,查看Nginx服务进程的对应用户,如下:
Nginx安全优化小技巧
Nginx的主进程master仍然是以root身份运行的,worker进程是以nginx用户运行的。

原创文章,作者:iConan,如若转载,请注明出处:https://www.aspyc.com/archives/254.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据