首页主机资讯centos下nginx安全设置指南

centos下nginx安全设置指南

时间2025-11-26 16:45:04发布访客分类主机资讯浏览832
导读:CentOS 下 Nginx 安全设置指南 一 基础加固 系统与软件更新:保持系统与 Nginx 为最新稳定版,及时修补漏洞。 执行:sudo yum update -y 最小权限运行:创建专用低权限用户(如 nginx/nobod...

CentOS 下 Nginx 安全设置指南

一 基础加固

  • 系统与软件更新:保持系统与 Nginx 为最新稳定版,及时修补漏洞。
    • 执行:sudo yum update -y
  • 最小权限运行:创建专用低权限用户(如 nginx/nobody),禁止登录,用该用户启动 worker。
    • 示例:user nobody; (在 /etc/nginx/nginx.conf 的顶层配置)
  • 隐藏版本信息:在 httpserver 块关闭版本暴露。
    • 配置:server_tokens off;
  • 禁用目录浏览:避免泄露目录结构。
    • 配置:autoindex off; (或编译期不启用 autoindex 模块)
  • 隐藏后端与敏感响应头:
    • 配置:proxy_hide_header X-Powered-By; proxy_hide_header Server;
  • 访问控制示例:对管理路径限制来源 IP。
    • 配置:
      location /admin {
          
          allow 192.168.1.0/24;
          
          deny all;
      
      }
          
      
  • 日志与监控:启用结构化日志,便于审计与告警。
    • 示例:
      log_format main '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent '
                     '"$http_referer" "$http_user_agent" "$http_x_forwarded_for"';
          
      access_log /var/log/nginx/access.log main;
          
      error_log  /var/log/nginx/error.log warn;
      
      

以上措施能显著降低信息泄露与滥用风险,并提升可运维性与可观测性。

二 传输加密与 HTTPS

  • 防火墙放行:仅开放 80/443
    • 执行:
      sudo firewall-cmd --permanent --zone=public --add-service=http
      sudo firewall-cmd --permanent --zone=public --add-service=https
      sudo firewall-cmd --reload
      
  • 获取证书:优先使用 Let’s Encrypt 自动化签发并自动配置 Nginx。
    • 执行(CentOS 7+):
      sudo yum install -y epel-release
      sudo yum install -y certbot python3-certbot-nginx
      sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
      
  • 强制 HTTPS 与 HSTS:将所有 HTTP 重定向到 HTTPS,并启用 HSTS
    server {
        
        listen 80;
        
        server_name yourdomain.com;
        
        return 301 https://$host$request_uri;
    
    }
    
    
    server {
        
        listen 443 ssl http2;
        
        server_name yourdomain.com;
        
    
        ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
        
        ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
        
    
        ssl_protocols TLSv1.2 TLSv1.3;
        
        ssl_ciphers HIGH:!aNULL:!MD5;
        
        ssl_prefer_server_ciphers on;
        
    
        add_header Strict-Transport-Security "max-age=31536000;
         includeSubDomains" always;
    
    }
    
    
  • 自签名证书仅用于测试环境,生产环境务必使用受信任 CA 签发证书。

三 请求限制与资源防护

  • 限制请求速率:缓解暴力扫描与简单 DoS。
    http {
        
        limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
    
        server {
    
            location / {
        
                limit_req zone=one burst=5 nodelay;
    
            }
    
        }
    
    }
        
    
  • 合理超时与连接控制:降低慢速攻击与连接耗尽风险。
    client_body_timeout 12;
        
    client_header_timeout 12;
        
    keepalive_timeout 15;
        
    send_timeout 10;
        
    
  • 限制请求体大小:防止超大上传导致资源被占满。
    • 示例:client_max_body_size 10m; (按业务调整)
  • 禁用危险与不必要的 HTTP 方法:仅允许业务所需方法。
    if ($request_method !~ ^(GET|HEAD|POST)$ ) {
        
        return 444;
       # 直接关闭连接
    }
    
    
  • 目录与文件执行限制:对上传/临时目录禁止脚本执行。
    location ~* ^/(uploads|templets|data)/.*\.(php|php5)$ {
        
        return 444;
    
    }
        
    
  • 可选 WAF:部署 ModSecurity 等 WAF 模块增强对 SQLi/XSS 等攻击的防护能力。

四 安全响应头与内容防护

  • 推荐安全头(按站点策略微调):
    add_header X-Frame-Options "SAMEORIGIN" always;
        
    add_header X-Content-Type-Options "nosniff" always;
        
    add_header X-XSS-Protection "1;
         mode=block" always;
        
    add_header Content-Security-Policy "default-src 'self';
         script-src 'self' https://trustedscripts.example.com;
         object-src 'none';
        " always;
        
    add_header Strict-Transport-Security "max-age=31536000;
         includeSubDomains" always;
        
    
  • 说明:
    • X-Frame-Options 防点击劫持;X-Content-Type-Options 防 MIME 嗅探;X-XSS-Protection 为旧浏览器提供 XSS 过滤;CSP 大幅降低 XSS/数据注入风险;HSTS 强制浏览器使用 HTTPS。

五 运维与持续安全

  • 配置语法检查与热重载:变更前先校验,再平滑生效。
    • 执行:
      sudo nginx -t
      sudo systemctl reload nginx
      
  • 服务与开机自启:
    • 执行:
      sudo systemctl enable --now nginx
      sudo systemctl status nginx
      
  • 入侵防护:使用 fail2ban 对暴力访问进行自动封禁。
    • 执行:
      sudo yum install -y fail2ban
      sudo systemctl enable --now fail2ban
      
  • 日志轮转与留存:配置 logrotate 定期压缩归档,避免磁盘被占满。
  • 定期更新与漏洞监测:持续更新 Nginx 与依赖组件,关注官方安全公告与 CVE。
  • 配置审计:上线前用 Gixy 等工具检查常见错误配置与安全隐患。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: centos下nginx安全设置指南
本文地址: https://pptw.com/jishu/756835.html
centos中如何排查tomcat启动慢问题 centos上tomcat如何配置JVM参数

游客 回复需填写必要信息