1.Nginx后端服务指定的Header隐藏状态
隐藏Nginx后端服务X-Powered-By头
加固建议
隐藏Nginx后端服务指定Header的状态: 1、打开conf/nginx.conf 配置文件(或主配置文件中的inlude文件); 2、在http下配置proxy_hide_header 项; 增加或修改为
proxy_hide_header X-Powered-By;
proxy_hide_header Server;
2.Nginx的WEB访问日志记录状态
应为每个核心站点启用access_log 指令。默认情况下启用。
加固建议
开启Nginx的WEB访问日志记录: 1、打开conf/nginx.conf配置文件(或主配置文件中的inlude文件); 2、在http下配置access_log项 access_log logs/host.access.log main; 3、并在主配置文件,及主配置文件下的include文件中 删除off项或配置为适当值
3.检查是否配置Nginx账号锁定策略
1.执行系统命令passwd -S nginx 来查看锁定状态 出现Password locked证明锁定成功 如:nginx LK … (Password locked.)或nginx L …
2.默认符合,修改后才有(默认已符合)
3.执行系统命令passwd -l nginx 进行锁定
加固建议
配置Nginx账号登录锁定策略:
Nginx服务建议使用非root用户(如nginx,nobody)启动,并且确保启动用户的状态为锁定状态。可执行passwd -l <Nginx启动用户> 如passwd -l nginx 来锁定Nginx服务的启动用户。命令 passwd -S <用户> 如passwd -S nginx 可查看用户状态。 修改配置文件中的nginx启动用户修改为nginx或nobody 如:user nobody;
4.检查Nginx进程启动账号
Nginx进程启动账号状态,降低被攻击概率
加固建议
修改Nginx进程启动账号: 1、打开conf/nginx.conf配置文件; 2、查看配置文件的user配置项,确认是非root启动的; 3、如果是root启动,修改成nobody或者nginx账号; 备注: 4、修改完配置文件之后需要重新启动Nginx。
5.确保NGINX配置文件权限为644
把控配置文件权限以抵御外来攻击
加固建议
修改Nginx配置文件权限: 执行chmod 644 <conf_path> 来限制Nginx配置文件的权限;(<conf_path>为配置文件的路径,如默认/安装目录/conf/nginx.conf或者/etc/nginx/nginx.conf,或用户自定义,请 自行查找)
6.针对Nginx SSL协议进行安全加固
Nginx SSL协议的加密策略进行加固
加固建议
Nginx SSL协议采用TLSv1.2 : 1、打开conf/nginx.conf 配置文件(or include file in the main configuration file); 2、配置
server {
...
ssl_protocols TLSv1.2;
...
}
备注:配置此项请确认nginx支持OpenSSL,运行nginxv -V 如果返回中包含built with OpenSSL则表示支持OpenSSL。如果不支持,请重新编译nginx
7.Nginx/OpenResty在特殊配置下存在内存泄漏或目录穿越漏洞
Nginx 的 rewrite 指令在没有检查用户输入的情况下,会导致目录穿越 Nginx 的 rewrite 指令在没有检查用户输入的情况下,会导致内存泄漏
加固建议
升级版本至 最新版本 或禁用类似配置
location ~ /memleak {
rewrite_by_lua_block {
ngx.req.read_body();
local args, err = ngx.req.get_post_args();
ngx.req.set_uri( args["url"], true );
}
}
location ~ /rewrite {
rewrite ^.*$ $arg_x;
}
8.任意文件读取
缺少斜杠可能导致目录穿越
加固建议
不建议存在
location /files {
alias /home/;
}
如上配置 建议 把/files改为/files/的格式,以/结尾
9.隐藏Nginx服务的Banner
Nginx服务的Banner隐藏状态
加固建议
Nginx后端服务指定的Header隐藏状态隐藏Nginx服务Banner的状态: 1、打开conf/nginx.conf配置文件; 2、在server栏目下,配置server_tokens项 server_tokens off;
10.nginx 至 1.13.2 Range Filter Request 整数溢出漏洞
在Nginx标准模块中,如果攻击者从缓存返回响应,则可以获取缓存文件头。黑客可以通过缓存文件头获取后端服务器的IP地址或其他敏感信息,从而导致信息泄露。
加固建议
Nginx以下版本存在漏洞,容易被入侵 1.132之前版本 Nginx范围过滤器模块中存在整数溢出漏洞,允许远程攻击者利用漏洞提交特殊的请求,获取敏感信息或使应用程序崩溃。 如当前版本不方便升级,建议在配置文件server段新增,max_ranges 1 (禁用multipart range分片功能,注意评估风险) 或直接升级到最新版本以确保安全性
11.PHP-fpm 远程代码执行漏洞
攻击者可以使用换行符(编码格式为%0a)来破坏fastcgi_split_path_info 指令中的regexp,regexp损坏将导致空PATH_INFO,从而触发该漏洞 另外该漏洞为漏洞链条中的一环,属脆弱性,需与php(PHP 5.6,PHP 7.0 、PHP 7.1 、PHP 7.2 、PHP 7.3)联合复现
加固建议
Nginx 0.7.31前的版本存在配置风险, 若存在以下类似的配置建议删除
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php_ip:9000;
...
}
}
删除前评估风险,请确保业务连续性,建议备份后删除,或升级到最新版本
12.proxy_pass反向代理导致的SSRF
确保proxy_pass的参数不为用户所控制,可以有效抵御ssrf
加固建议
反向代理未过滤内网ip导致的ssrf漏洞
proxy_pass参数应尽量不为变量,否则一旦正则被绕过,则触发ssrf漏洞
|