当前位置: 首页 > news >正文

Nginx安全防护与HTTPS部署实战

目录

一、基础安全防护配置

二、HTTPS部署实战

三、高级安全与性能优化


一、基础安全防护配置

1. 隐藏Nginx版本号

攻击者可能利用特定版本的漏洞发起攻击。通过修改配置文件隐藏版本号:

server {

    server_tokens off;  # httpserver块中添加

}

验证方法:curl -I http://your-domain,响应头中不再显示版本信息1

2. 限制危险HTTP方法

禁用不安全的请求方法(如TRACEPUTDELETE):

if ($request_method !~ ^(GET|POST|HEAD)$) {

    return 444;  # 非白名单方法直接关闭连接

}

日志验证:检查access.log中是否有被拦截的请求1

3. 防御CC攻击

使用limit_req模块限制请求速率:

http {

    limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s;

    server {

        limit_req zone=req_limit burst=20 nodelay;

    }

}

参数说明:

  • rate=10r/s:每秒允许10个请求。
  • burst=20:允许突发20个请求排队,超限返回5031

4. 防盗链配置

防止其他站点盗用静态资源:

location ~* \.(jpg|gif|png)$ {

    valid_referers none blocked your-domain.com *.your-domain.com;

    if ($invalid_referer) {

        return 403;

    }

}

需在服务器上配置域名解析和资源访问权限1

5. 动态IP黑名单

实时封禁恶意IP

http {

    geo $block_ip {

        default 0;

        include /usr/local/nginx/conf/blockips.conf;  # 黑名单文件

    }

    server {

        if ($block_ip) { return 403; }

    }

}

黑名单文件示例:

192.168.1.0/24 1;  # 封禁整个网段

192.168.10.102 1;  # 封禁单个IP

支持按需动态更新黑名单19


二、HTTPS部署实战

1. 获取SSL证书

  • 免费证书:推荐使用Let's Encrypt,通过Certbot自动化工具申请:

sudo apt install certbot python3-certbot-nginx

sudo certbot --nginx -d your-domain.com

  • 商业证书:从阿里云、DigiCert等平台申请37

2. 基础HTTPS配置

server {

    listen 443 ssl http2;  # 启用HTTP/2

    server_name your-domain.com;

    ssl_certificate /etc/nginx/cert/fullchain.pem;

    ssl_certificate_key /etc/nginx/cert/privkey.pem;

    # 强制TLS 1.2及以上,禁用不安全协议

    ssl_protocols TLSv1.2 TLSv1.3;

    ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH;

    ssl_prefer_server_ciphers on;

    # 自动重定向HTTPHTTPS

    location / {

        proxy_pass http://backend;

    }

}

server {

    listen 80;

    server_name your-domain.com;

    return 301 https://$host$request_uri;

}

关键优化点:

  • HTTP/2:提升并发性能,减少延迟810
  • TLS 1.3:减少握手时间(需OpenSSL 1.1.1+)26

三、高级安全与性能优化

1. OCSP Stapling

减少证书验证延迟:

ssl_stapling on;

ssl_stapling_verify on;

ssl_trusted_certificate /etc/nginx/cert/chain.pem;

验证命令:openssl s_client -connect your-domain:443 -status810

2. Brotli压缩

减少传输体积(需编译Nginx时添加模块):

brotli on;

brotli_comp_level 6;

brotli_types text/plain text/css application/json application/javascript;

压缩效果比Gzip提升15%-25%26

3. 会话复用与缓存

ssl_session_cache shared:SSL:10m;

ssl_session_timeout 10m;

ssl_buffer_size 4k;  # 减少首次响应延迟

调整ssl_buffer_size4k可优化小文件传输10

4. HSTS强制HTTPS

添加HTTP头强制浏览器使用HTTPS

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

防止SSL剥离攻击39


四、验证与监控

  1. 证书有效性检查
    • 使用curl -vI https://your-domain检查协议版本。
    • 通过SSL Labs测试评估配置安全性37
  2. 日志分析
    • 监控access.log和error.log,识别异常请求。
    • 使用工具如fail2ban自动封禁攻击IP9

http://www.xdnf.cn/news/296857.html

相关文章:

  • STM32--GPIO
  • 【MCP Node.js SDK 全栈进阶指南】专家篇(2):MCP多模型支持架构
  • 破解工业3D可视化困局,HOOPS Visualize助力高效跨平台协作与交互!
  • 免费轻量化办公pdf修改软件 一键格式转换基础修改到高级加密
  • React Native【详解】搭建开发环境,创建项目,启动项目
  • 【FPGA开发】什么是Streaming流式传输?流式传输的最主要的设计思想是什么?
  • Kotlin重构Android项目实践
  • RAG_Techniques:探索GitHub热门RAG技术开源项目
  • pcl对应点聚类算法
  • OpenAI大变革!继续与微软等,以非营利模式冲击AGI
  • Spring Security鉴权:文件上传需要携带token
  • 【开源深度解析】从零打造AI暗棋对战系统:Python实现中国象棋暗棋全攻略
  • 昇腾Atlas 200I DK A2 开发者套件无法上网问题的解决
  • 【JVM】从零开始深度解析JVM
  • 【Java学习】反射
  • Kubernetes排错(九)-节点排错
  • 测试因strcpy执行拷贝引起的内存溢出
  • 五一假期集训【补题】
  • Python cv2图像几何变换全攻略:从理论到实战
  • Python 函数装饰器和闭包(闭包)
  • 人工智能在心理健康领域的创新应用:从诊断到干预
  • Tensorrt 基础入门
  • 民主与民族主义作为暴力时代的财政策略
  • Python小酷库系列:bidict,可以双向查询的dict
  • 代码随想录第33天:动态规划6(完全背包基础)
  • RHCSA笔记2
  • 2025年PMP 学习五
  • 关于麒麟服务器实现docker-compose服务开机自启
  • 浔川AI测试版内测报告
  • DeepWiki 是什么,怎么使用