nginx安全如何保障

avatar
作者
筋斗云
阅读量:1

Nginx安全保障体系构建指南

1. 基础安全配置

  • 隐藏版本信息:在Nginx全局配置(nginx.conf)或server块中添加server_tokens off;,禁止响应头中暴露Nginx版本号;进一步可配合headers-more-nginx-module模块移除Server头部,彻底降低版本探测风险。
  • 禁用不必要HTTP方法:通过limit_except指令限制仅允许必要方法(如GETPOST),拦截PUTDELETE等危险请求,示例:limit_except GET POST { deny all; }
  • 限制请求大小:使用client_max_body_size指令限制上传文件大小(如client_max_body_size 10M;),防止恶意用户上传超大文件耗尽服务器磁盘空间。

2. 访问控制与权限管理

  • 基于IP的访问控制:通过allow/deny指令限制敏感路径的IP访问,例如仅允许内网IP访问管理后台:location /admin { allow 192.168.1.0/24; deny all; }
  • 基于用户认证的访问控制:使用htpasswd工具创建认证文件(sudo htpasswd -c /etc/nginx/.htpasswd username),在需要保护的路径启用HTTP Basic认证:location /private { auth_basic "Restricted Area"; auth_basic_user_file /etc/nginx/.htpasswd; }
  • 权限最小化:以非root用户(如nginx)运行Nginx进程(user nginx;),并设置配置文件权限为640chmod 640 /etc/nginx/nginx.conf),避免未授权用户修改配置。

3. SSL/TLS安全加固

  • 启用HTTPS:通过Let’s Encrypt(certbot --nginx -d yourdomain.com)获取免费证书,或购买商业证书,配置ssl_certificate(公钥路径)和ssl_certificate_key(私钥路径),强制HTTP跳转HTTPS。
  • 配置安全加密套件:禁用SSLv2/SSLv3等不安全协议,启用TLS 1.2/1.3及强加密套件(如ECDHE-ECDSA-AES256-GCM-SHA384),示例:ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384'; ssl_prefer_server_ciphers on;
  • 启用HSTS:添加Strict-Transport-Security头部,强制浏览器仅通过HTTPS访问,防止降级攻击,示例:add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";

4. 防止常见Web攻击

  • 防SQL注入/XSS:通过正则表达式过滤恶意字符,拦截包含union select jindouyun.cn. All Rights Reserved. 筋斗云 版权所有 | 粤ICP备13013545号 | 增值电信业务经营许可证: 粤B1-20215235 | 公网安备粤公网安备 44070302000974号
    违法和不良信息举报中心违法和不良信息举报中心   24 小时违法和不良信息举报热线:4006783389,举报邮箱:jubao@jindouyun.cn
    ipv6
嘿,我是微信客服!