插件窝 干货文章 Nginx操作系统安全姿势

Nginx操作系统安全姿势

Nginx 安全 配置 监控 585    来源:    2025-04-20

Nginx操作系统安全最佳实践

1. 操作系统层面安全配置

1.1 最小化安装原则

  • 仅安装必要的软件包和服务
  • 移除不必要的用户账户和组
  • 禁用不需要的服务和守护进程

1.2 系统用户权限控制

  • 为Nginx创建专用用户和组(通常为nginxwww-data
  • 确保Nginx进程以非root用户运行
user nginx nginx;

1.3 文件系统权限

  • 设置严格的目录和文件权限: chown -R root:root /etc/nginx/ chmod -R 644 /etc/nginx/ chmod 755 /etc/nginx/
  • Web目录权限: chown -R nginx:nginx /var/www/ chmod -R 750 /var/www/

1.4 系统加固

  • 启用SELinux或AppArmor
  • 配置防火墙规则(iptables/nftables/firewalld): # 允许HTTP/HTTPS iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT
  • 定期更新操作系统和Nginx软件包

2. Nginx配置安全

2.1 基础安全配置

  • 隐藏Nginx版本信息: server_tokens off;
  • 禁用不必要的HTTP方法: if ($request_method !~ ^(GET|HEAD|POST)$ ) { return 405; }
  • 限制HTTP协议版本: if ($server_protocol ~* "HTTP/1.0") { return 444; }

2.2 SSL/TLS安全配置

  • 使用强加密套件: ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384...'; ssl_prefer_server_ciphers on;
  • 启用HSTS: add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";

2.3 访问控制

  • IP访问限制: location /admin { allow 192.168.1.0/24; deny all; }
  • 速率限制:

    limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
    
    location / {
      limit_req zone=one burst=5;
    }
    

2.4 内容安全策略

  • 设置安全头: add_header X-Frame-Options "SAMEORIGIN"; add_header X-Content-Type-Options "nosniff"; add_header X-XSS-Protection "1; mode=block"; add_header Content-Security-Policy "default-src 'self';";

3. 日志与监控

3.1 日志配置

  • 启用访问日志和错误日志: access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log;
  • 日志轮转(使用logrotate)

3.2 监控与告警

  • 设置异常请求监控(如大量404错误)
  • 监控Nginx进程状态
  • 实施文件完整性监控(如AIDE)

4. 其他安全措施

4.1 Web应用防火墙

  • 考虑使用ModSecurity等WAF解决方案

4.2 定期安全审计

  • 使用工具扫描配置漏洞(如Nginx Amplify, OpenVAS)
  • 定期进行渗透测试

4.3 备份策略

  • 定期备份Nginx配置和网站数据
  • 测试备份恢复流程

通过实施以上安全措施,可以显著提高Nginx服务器的安全性,降低被攻击的风险。