阅读量:2
Debian 上 Nginx SSL 安全最佳实践
一 基础安全与系统加固
- 保持系统与软件为最新:执行 sudo apt update && sudo apt full-upgrade -y,及时修补 OpenSSL/Nginx 漏洞。
- 仅开放必要端口:使用 UFW 放行 80/443:sudo ufw allow 80,443/tcp && sudo ufw enable;如使用云厂商安全组,仅放通 80/443。
- 保护私钥与配置:证书与密钥权限建议 600/644,属主 root:root;定期备份 /etc/letsencrypt。
- 隐藏版本信息:在 /etc/nginx/nginx.conf 的 http 块加入 server_tokens off;,降低信息泄露风险。
- 启用基础访问控制:对管理后台等敏感路径使用 allow/deny 做 IP 白名单;对异常请求可结合 limit_conn_zone/limit_conn 限流。
二 证书与自动续期
- 优先使用 Let’s Encrypt 证书:sudo apt install certbot python3-certbot-nginx,获取并自动配置证书:sudo certbot --nginx -d example.com -d www.example.com。
- 自动续期与热重载:配置 systemd timer 或 cron 定期执行 sudo certbot renew --quiet;续期后执行 sudo systemctl reload nginx 生效。
- 预生成强 DH 参数(若不使用 certbot 内置):sudo openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048/4096。
三 推荐的 Nginx SSL 配置片段
- 强制 HTTPS 与 HTTP/2:将 80 端口重定向到 443,并在 443 监听启用 http2。
- 协议与套件:仅启用 TLSv1.2/1.3,使用 ECDHE 实现 Forward Secrecy,禁用不安全套件与压缩。
- 会话与 OCSP:开启 会话缓存 与 OCSP Stapling 提升性能与隐私。
- 安全响应头:启用 HSTS、X-Frame-Options、X-Content-Type-Options、X-XSS-Protection、Referrer-Policy、Content-Security-Policy。
- 方法限制:对非 GET/HEAD/POST 方法返回 405。
示例(按需合并到 server 块):
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf; # 若使用 certbot 提供的统一配置
ssl_dhparam /etc/letsencrypt/ssl-dhparams.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:
DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers on;
ssl_ecdh_curve X25519:P-256:P-384;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 1.1.1.1 8.8.8.8 valid=300s;
resolver_timeout 5s;
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 "no-referrer-when-downgrade" always;
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self' data:; object-src 'none'; frame-ancestors 'self';" always;
if ($request_method !~ ^(GET|HEAD|POST)$) { return 405; }
root /var/www/html;
index index.html;
}
说明:若已包含 /etc/letsencrypt/options-ssl-nginx.conf,其中通常已设置 ssl_protocols/ssl_ciphers 等,可不再重复;证书路径与 DH 参数 请与实际情况一致。
四 验证与运维
- 配置语法与生效:每次修改后执行 sudo nginx -t,无误后 sudo systemctl reload nginx。
- 证书续期演练:定期执行 sudo certbot renew --dry-run 验证自动续期是否正常。
- 安全与性能测试:使用 Qualys SSL Labs SSL Server Test 检查评级(目标 A+);按需调整套件与参数。
- 日志与入侵防护:启用 access/error log,结合 fail2ban 与 logwatch 做异常登录与攻击检测。
五 进阶与注意事项
- 关于 HPKP:现代浏览器已弱化或移除对 HTTP Public Key Pinning 的支持,不建议在生产环境使用,优先依赖 证书透明度 与 自动化续期。
- 关于 OCSP Must-Staple:如需启用,需向 CA 申请带 Must-Staple 扩展的证书,并在 Nginx 正确配置 OCSP Stapling;否则可能导致证书验证失败。
- 关于 HTTP/3/QUIC:如需启用,需 Nginx 支持 QUIC 且按官方模块配置;在多数场景下先确保 TLS 1.2/1.3 + HTTP/2 的安全与性能基线稳固。
以上就是关于“Debian Nginx SSL安全最佳实践”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm