在 CentOS 上系统化加固 Nginx 的安全防护
一 系统与网络基线
- 保持系统与软件为最新:执行 yum update -y,及时修补内核与 Nginx 漏洞。
- 仅开放必要端口:使用 firewalld 放行 80/443,并保留 22(SSH)以便维护。
- 安装入侵防护:部署 fail2ban 监控 Nginx 日志并自动封禁暴力请求来源。
- 自动化与安全更新:启用 yum-cron 的自动安全更新,降低暴露窗口。
- 建议:生产环境保持 SELinux 为 enforcing,并通过策略与最小权限配合使用,而非直接关闭。
二 Nginx 基础加固
- 隐藏版本信息:在 /etc/nginx/nginx.conf 的 http 块设置 server_tokens off;,减少信息泄露。
- 限制可用方法:仅允许 GET/HEAD/POST,其余返回 405 或 444(立即关闭连接)。
- 安全响应头:统一添加 Strict-Transport-Security、X-Frame-Options、X-Content-Type-Options、X-XSS-Protection、Referrer-Policy、Content-Security-Policy。
- 强制 HTTPS:将 HTTP→HTTPS 301 重定向,并在 443 监听启用 HTTP/2。
- 超时与资源控制:设置 client_body_timeout、client_header_timeout、keepalive_timeout、send_timeout;使用 limit_req/limit_conn 抑制暴力请求与连接耗尽。
- 示例片段:
- 方法限制与头部
if ($request_method !~ ^(GET|HEAD|POST)$) { return 405; } add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; 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 Referrer-Policy "strict-origin-when-cross-origin"; add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://trustedscripts.example.com; object-src 'none';""; - 超时与限流
client_body_timeout 12; client_header_timeout 12; keepalive_timeout 15; send_timeout 10; limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s; limit_req zone=one burst=5 nodelay; limit_conn_zone $binary_remote_addr zone=addr:10m; limit_conn addr 100;
- 方法限制与头部
三 加密与证书部署
- 证书获取与自动续期:安装 EPEL 后使用 certbot 一键获取 Let’s Encrypt 证书并自动配置 Nginx:
- 安装与签发:sudo yum install -y epel-release certbot python3-certbot-nginx
- 签发并自动配置:sudo certbot –nginx -d yourdomain.com -d www.yourdomain.com
- 手动自签名(仅测试):生成 2048 位私钥与证书,路径建议 /etc/nginx/ssl/。
- 强加密配置:仅启用 TLSv1.2/TLSv1.3,使用 ECDHE 与高强套件,开启 HTTP/2。
- 示例片段:
server { listen 443 ssl http2; server_name yourdomain.com www.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 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; ssl_prefer_server_ciphers off; # 可选:启用 OCSP Stapling ssl_stapling on; ssl_stapling_verify on; resolver 1.1.1.1 8.8.8.8 valid=300s; } server { listen 80; server_name yourdomain.com www.yourdomain.com; return 301 https://$host$request_uri; }
四 访问控制与请求防护
- 敏感路径白名单:对 /admin 等管理路径限制来源 IP,并叠加 HTTP Basic 认证。
- 上传与写入目录隔离:禁止脚本执行,仅赋予必要读写权限,避免上传目录被当作代码执行。
- 目录遍历与别名坑:使用 alias 时务必保证 location 路径与目录路径结尾斜杠一致,否则可能被绕过导致目录遍历。
- 防盗链:对静态资源校验 Referer,非法来源返回 403 或替换图片。
- 示例片段:
- 管理路径白名单与认证
location /admin/ { allow 192.168.1.0/24; deny all; auth_basic "Restricted Access"; auth_basic_user_file /etc/nginx/.htpasswd; } - 上传目录禁止脚本执行
location /uploads/ { location ~ \.php$ { deny all; } } - 防盗链(示例)
location ~* \.(jpg|jpeg|png|gif|webp)$ { valid_referers none blocked yourdomain.com www.yourdomain.com; if ($invalid_referer) { return 403; # 或 rewrite ^ /static/error.png last; } }
- 管理路径白名单与认证
五 日志监控 备份与应急响应
- 结构化日志与级别:定义 log_format main 并输出 $http_x_forwarded_for,错误日志设为 warn 级别以便告警。
- 日志轮转与权限:使用 logrotate 按日轮转,限制非必要人员读取,集中到 SIEM 或 ELK 做异常检测。
- 入侵防护联动:配置 fail2ban 监控 /var/log/nginx/access.log,对高频 4xx/5xx、爆破路径等触发封禁。
- 备份与恢复:定期打包 /etc/nginx 与 /var/log/nginx,变更前先 nginx -t 校验,出现异常按流程回滚。
- 自动更新与演练:启用 yum-cron 自动安全更新,定期做配置审计与应急演练(隔离、取证、恢复、复盘)。
- 示例片段:
- 日志格式
http { 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; } - 备份与恢复
# 备份 tar -czvf nginx-backup-$(date +%F).tar.gz /etc/nginx /var/log/nginx # 恢复 tar -xzvf nginx-backup-*.tar.gz -C / nginx -t && systemctl restart nginx
- 日志格式
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/1464638.html