找回密码
 立即注册

QQ登录

只需一步,快速开始

Nginx 安全配置建议(2023-5-5更新)

1.nginx.conf

  1. http
  2.     {
复制代码

内添加
  1. add_header X-Frame-Options "SAMEORIGIN";
  2. add_header X-XSS-Protection "1; mode=block";
  3. add_header X-Content-Type-Options "nosniff";
复制代码


X-Frame-Options
X-Frame-Options 响应头有三个可选的值:
DENY:页面不能被嵌入到任何iframe或frame中;
SAMEORIGIN:页面只能被本站页面嵌入到iframe或者frame中;
ALLOW-FROM:页面允许frame或frame加载。

X-XSS-Protection
顾名思义,这个响应头是用来防范XSS的。最早我是在介绍IE8的文章里看到这个,现在主流浏览器都支持,并且默认都开启了XSS保护,用这个header可以关闭它。它有几种配置:

0:禁用XSS保护;
1:启用XSS保护;
1; mode=block:启用XSS保护,并在检查到XSS攻击时,停止渲染页面(例如IE8中,检查到攻击时,整个页面会被一个#替换);
X-Content-Type-Options
互联网上的资源有各种类型,通常浏览器会根据响应头的Content-Type字段来分辨它们的类型。例如:"text/html"代表html文档,"image/png"是PNG图片,"text/css"是CSS样式文档。然而,有些资源的Content-Type是错的或者未定义。这时,某些浏览器会启用MIME-sniffing来猜测该资源的类型,解析内容并执行。

例如,我们即使给一个html文档指定Content-Type为"text/plain",在IE8-中这个文档依然会被当做html来解析。利用浏览器的这个特性,攻击者甚至可以让原本应该解析为图片的请求被解析为JavaScript。通过下面这个响应头可以禁用浏览器的类型猜测行为
此标头防止基于“MIME”的攻击。此标头防止InternetExplorer从声明的内容类型之外嗅探响应,因为标头指示浏览器不要覆盖响应内容类型。使用nosniff选项,如果服务器说内容是text/html,浏览器将将其呈现为text/html。

2.禁止非蜘蛛访问robots.txt
nginx站点配置中加入
  1. location = /robots.txt {
  2.     if ($http_user_agent !~* "spider|bot|yahoo|sogou") {
  3.         return 404;
  4.     }
  5. }
复制代码


3.Nginx后端服务指定的Header隐藏状态
隐藏Nginx后端服务X-Powered-By头
隐藏Nginx后端服务指定Header的状态: 1、打开conf/nginx.conf配置文件(或主配置文件中的inlude文件); 2、在http下配置proxy_hide_header项; 增加或修改为
  1. proxy_hide_header X-Powered-By;
  2. proxy_hide_header Server;
复制代码


4.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)联合复现
若存在以下类似的配置建议删除

  1. location ~ [^/]\.php(/|$) {
  2.         fastcgi_split_path_info ^(.+?\.php)(/.*)$;
  3.         fastcgi_param PATH_INFO       $fastcgi_path_info;
  4.         fastcgi_pass   php_ip:9000;
  5.         ...
  6.   }
  7. }
复制代码

删除前评估风险,请确保业务连续性,建议备份后删除

5.任意文件读取
缺少斜杠可能导致目录穿越
  1. location /path {
  2. alias /home/;
  3. }
  4. location /files{
  5. root /;
  6. }
复制代码


如上配置

建议

把location /path改为location /path/的格式,以/结尾 把root /;改为root /path/; 的格式

6.隐藏Nginx服务的Banner
Nginx服务的Banner隐藏状态
Nginx后端服务指定的Header隐藏状态隐藏Nginx服务Banner的状态: 1、打开conf/nginx.conf配置文件; 2、在server栏目下,配置server_tokens项
  1. server_tokens off;
复制代码


7.Nginx/OpenResty在特殊配置下存在内存泄漏或目录穿越漏洞

Nginx 的 rewrite 指令在没有检查用户输入的情况下,会导致目录穿越
升级版本至 最新版本 或禁用类似配置

  1. location ~ /memleak {
  2.     rewrite_by_lua_block {
  3.         ngx.req.read_body();
  4.         local args, err = ngx.req.get_post_args();
  5.         ngx.req.set_uri( args["url"], true );
  6.     }
  7. }

  8. location ~ /rewrite {
  9.     rewrite ^.*$ $arg_x;
  10. }
复制代码



nginx 至 1.13.2 Range Filter Request 整数溢出漏洞
描述
在Nginx标准模块中,如果攻击者从缓存返回响应,则可以获取缓存文件头。黑客可以通过缓存文件头获取后端服务器的IP地址或其他敏感信息,从而导致信息泄露。

检查提示
1.8.1

加固建议
Nginx以下版本存在漏洞,容易被入侵 1.13.2之前版本 Nginx范围过滤器模块中存在整数溢出漏洞,允许远程攻击者利用漏洞提交特殊的请求,获取敏感信息或使应用程序崩溃。 如当前版本不方便升级,建议在配置文件server段新增,max_ranges 1(禁用multipart range分片功能,注意评估风险) 或直接升级到最新版本以确保安全性

本教程由无限星辰工作室CRX349独家整理和提供,转载请注明地址,谢谢。本文地址:https://www.xmspace.net/thread-891-1-1.html
无限星辰工作室  好集导航 Discuz全集下载  星辰站长网  集热爱361  一品文学  手机小游戏合集   海外空间网 星辰api  星辰支付二维码管理平台 阿里云服务器 腾讯云服务器
服务Discuz!建站|DiscuzQ配置|二开|小程序|APP|搬家|挂马清理|防护|Win/Linux环境搭建|优化|运维|
服务理念:专业 诚信 友好QQ842062626 服务项目 Q群315524225

发表于 2022-2-27 22:43:55 | 显示全部楼层 |阅读模式

回复 | 使用道具 举报

该帖共收到 0 条回复!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

美图秀

    • fastadmin 后台界面使用字段数组类型
    • Discuz!x3.5 修改标题高亮颜色
    • Discuz!x3.5 应用中心 下载应用一直下载中
    • 帖子定时显示
    • 论坛辅助审核
拖动客服框
Online Service
点击这里给我发消息
点击这里联系我们
微信扫一扫
在线客服
快速回复 返回顶部 返回列表