2026-10-25 23:05:41
加固Nginx服务器的详细步骤如下,涵盖配置优化、安全策略及持续防护措施:
1. 隐藏Nginx版本号与服务器标识编辑Nginx主配置文件(通常位于/etc/nginx/nginx.conf)。
在http{}块中添加:server_tokens off;
重启Nginx服务生效:systemctl restart nginx
关闭目录列表功能:检查所有server或location块,确保无autoindex on;,若有则改为off。
禁止访问敏感文件:在配置文件中添加以下规则:location ~* /. { deny all; } # 禁止访问以点开头的隐藏文件location ~* ~$ { deny all; } # 禁止访问vim临时文件
重载配置:nginx -t && systemctl reload nginx
获取证书:使用Let's Encrypt等可信CA签发证书(避免自签名证书)。
配置SSL/TLS:在server块中添加以下内容:listen 443 ssl http2;ssl_certificate /path/to/fullchain.pem;ssl_certificate_key /path/to/privkey.pem;ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512;ssl_prefer_server_ciphers on;
强制HTTP跳转HTTPS:server { listen 80; server_name example.com; return 301 https://$host$request_uri;}
测试配置:nginx -t && systemctl reload nginx
重载配置:systemctl reload nginx
定义限流区域(在http{}块中):limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;
应用限流规则(在需要保护的location中):location /login { limit_req zone=api burst=20 nodelay;}
效果:每个IP每秒最多10个请求,突发允许20个,超出则拒绝。
使用iptables或ufw仅开放必要端口(如80、443)。ufw allow 80/tcpufw allow 443/tcpufw enable
配置Nginx日志(access_log和error_log)至独立目录。
使用工具如fail2ban监控日志,自动封禁恶意IP。# 示例:fail2ban配置监控Nginx的404错误echo "[nginx-noscript]enabled = trueport = http,httpsfilter = nginx-noscriptlogpath = /var/log/nginx/access.logmaxretry = 5bantime = 86400" > /etc/fail2ban/jail.localsystemctl restart fail2ban
通过上述步骤,可显著提升Nginx服务器的安全性,涵盖信息隐藏、访问控制、加密传输、攻击防御及持续监控。安全需持续维护,建议定期审查配置、更新软件,并结合自动化工具(如CI/CD管道)实现安全策略的自动化部署。