黑帽联盟

 找回密码
 会员注册
查看: 285|回复: 0
打印 上一主题 下一主题

[资源教程] 分享个Nginx安全配置

[复制链接]

852

主题

38

听众

3175

积分

白金VIP

Rank: 8Rank: 8

  • TA的每日心情
    开心
    2024-3-7 12:52
  • 签到天数: 1538 天

    [LV.Master]伴坛终老

    Nginx 是最流行的 Web 服务器,可以只占用 2.5 MB 的内存,却可以轻松处理 1w 的 http 请求。做网站的入口,Nginx 的安全设置重要性不言而喻。下面带你一起去了解一下

    这些安全配置吧!

    nginx.conf 是 Nginx 的配置文件,大部分的安全配置都在这个文件上进行隐藏。nginx

    131.png

    版本信息
    在 nginx.conf 中配置

    http {

      ...



      # 隐藏版本信息

      server_tokens off;



      ...

    }

    就可以去掉nginx版本信息了

    132.png

    隐藏powered-by
    输出的x-powered-by也可能网站泄露信息,通过proxy_hide_header指令隐藏它。
    ···

    location / {

    ...

    # 隐藏powered-by

    proxy_hide_header X-Powered-By;

    ...

    }

    ···

    相关安全设置
    CSP通过指定允许浏览器加载并执行这些资源,使服务器管理员有能力减少或消除XSS攻击的可能性
    add_header 内容安全策略“default-src 'self'; img-src '自我' *.alicdn.com; 对象-src'无';script-src 'self' *.alicdn.com; style-src 'self ' *.alicdn.com;frame-ancestors 'self';base-uri 'self';form-action 'self'";

    X-Content-Type-Options 响应头对应一个提示标志,被提示服务器浏览器一定要按照 Content-Type 头中 MIME 类型的设置,而不能进行修改。
    add_header X-Content-Type-Options nosniff;

    Strict-Transport-Security(HSTS)`获知浏览器该站点只能通过 HTTPS 访问,如果使用了子域,也建议对任何该站点的子域强制执行此操作。
    add_header 严格传输安全“max-age=31536000;includeSubDomains”;

    给浏览器指示允许一个页面可否在帧嵌入
    DENY 表示该页面不允许在帧中显示,提升为在相同域名的页面中显示也不允许
    SAMEORIGIN 表示该页面可以在相同域名的帧中显示
    ALLOW- FROM uri表示该页面可以在指定来源的框架中显示。
    add_header X-Frame-Options SAMEORIGIN;

    跨域访问
    add_header 访问控制允许来源 *;

    add_header Access-Control-Allow-Origin *.xx.com;

    xss攻击防护
    add_header X-XSS-保护“1;模式=阻止”;

    cookie读取设置
    add_header Set-Cookie "Path=/; HttpOnly; 安全";

    反向代理时要设置参数解决Cookie跨域丢失
    proxy_cookie_path / "/; httponly; secure; SameSite=None";

    跨域请求设置
    通过配置Access-Control-Allow-Origin参数可以指定哪些域可以访问你的服务器,这个值或者是或者是带协议端口号确定的值,.xx.com都是错误的值。
    设置$cors“”;

      if ($http_origin ~* (.*\.atpool.com)) {

        设置 $cors $http_origin;

      add_header

      访问控制允许来源 $cors;

      add_header 访问控制允许方法“GET、POST、OPTIONS、DELETE、PUT”;

      add_header Access-Control-Allow-Credentials true;

      add_header 访问控制允许标头 *;

      if ($request_method = "选项") {

        返回 204;

      }

    完整配置如下
    服务器{

      听80;

      服务器名称 test.xx.com;

      

      # 证书设置

      ssl_certificate cert/xx.com.pem;

      ssl_certificate_key cert/xx.com.key;

      ssl_session_timeout 5m;

      ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE -RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;

      # 只启用TLS1.2以上

      ssl_protocols TLSv1.2 TLSv1.3;

      ssl_prefer_server_ciphers 开启;

      

      # 安全相关设置

      add_header Content-Security-Policy "default-src 'self' *.xx.com data: 'unsafe-inline';";

      add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" 始终;

      add_header X-Frame-Options SAMEORIGIN;

      add_header X-Content-Type-Options nosniff;

      add_header X-XSS-保护“1;模式=阻止”;

      add_header Set-Cookie "Path=/; HttpOnly; 安全";

      add_header 缓存控制 max-age=86400;

      

      # 跨域设置

      set $cors "";

      if ($http_origin ~* (.*\.xx.com)) {

        设置 $cors $http_origin;

      add_header

      访问控制允许来源 $cors;

      add_header 访问控制允许方法“GET、POST、OPTIONS、DELETE、PUT”;

      add_header Access-Control-Allow-Credentials true;

      add_header 访问控制允许标头 *;

      if ($request_method = "选项") {

        返回 204;

      }



      位置/{

        gzip 打开;

        gzip_comp_level 6;

        gzip_min_length 1k;

        gzip_buffers 4 16k;

        gzip_types 文本/普通应用程序/x-javascript 文本/css 应用程序/xml 应用程序/javascript 应用程序/json 应用程序/vnd.ms-fontobject 字体/ttf 字体/opentype 字体/x-woff 图像/svg+xml;



        proxy_pass    http://127.0.0.1:8000;

        proxy_hide_header X-Powered-By;# 隐藏由 proxy_cookie_path 提供支持的

        / "/; httponly; secure; SameSite=None";

        proxy_set_header X-真实IP $remote_addr;

        proxy_set_header X-Forwarded-For $remote_addr;

        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_set_header 主机 $http_host;

        proxy_redirect 默认值;

      }



    }

    服务器 {

      监听 80;

      服务器名称 test.xx.com;

      

      # 证书设置

      ssl_certificate cert/xx.com.pem;

      ssl_certificate_key cert/xx.com.key;

      ssl_session_timeout 5m;

      ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE -RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;

      # 只启用TLS1.2以上

      ssl_protocols TLSv1.2 TLSv1.3;

      ssl_prefer_server_ciphers 开启;

      

      # 安全相关设置

      add_header Content-Security-Policy "default-src 'self' *.xx.com data:

      '不安全内联';"; add_header 严格传输安全 "max-age=31536000; 始终包含子域”;

      add_header X-Frame-Options SAMEORIGIN;

      add_header X-Content-Type-Options nosniff;

      add_header X-XSS-保护“1;模式=阻止”;

      add_header Set-Cookie "Path=/; HttpOnly; 安全";

      add_header 缓存控制 max-age=86400;

      

      # 跨域设置

      set $cors "";

      if ($http_origin ~* (.*\.xx.com)) {

        设置 $cors $http_origin;

      add_header

      访问控制允许来源 $cors;

      add_header 访问控制允许方法“GET、POST、OPTIONS、DELETE、PUT”;

      add_header Access-Control-Allow-Credentials true;

      add_header 访问控制允许标头 *;

      if ($request_method = "选项") {

        返回 204;

      }



      位置/{

        gzip 打开;

        gzip_comp_level 6;

        gzip_min_length 1k;

        gzip_buffers 4 16k;

        gzip_types 文本/普通应用程序/x-javascript 文本/css 应用程序/xml 应用程序/javascript 应用程序/json 应用程序/vnd.ms-fontobject 字体/ttf 字体/opentype 字体/x-woff 图像/svg+xml;



        proxy_pass    http://127.0.0.1:8000;

        proxy_hide_header X-Powered-By;# 隐藏由 proxy_cookie_path 提供支持的

        / "/; httponly; secure; SameSite=None";

        proxy_set_header X-真实IP $remote_addr;

        proxy_set_header X-Forwarded-For $remote_addr;

        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_set_header 主机 $http_host;

        proxy_redirect默认值;

      }



    }

    帖子永久地址: 

    黑帽联盟 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与黑帽联盟享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和黑帽联盟的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、黑帽联盟管理员和版主有权不事先通知发贴者而删除本文

    勿忘初心,方得始终!
    您需要登录后才可以回帖 登录 | 会员注册

    发布主题 !fastreply! 收藏帖子 返回列表 搜索
    回顶部