在Ubuntu下配置Nginx以实现安全防护是一个复杂但至关重要的过程。以下是一些关键步骤和建议,可以帮助你提高Nginx的安全防护能力:
限制访问:
设置用户和组:
nginx),以减少权限滥用和提升安全性。限制并发连接:
limit_req_zone和limit_conn指令限制并发连接数,防止DDoS攻击。防止常见攻击:
X-XSS-Protection和Content-Security-Policy。SSL/TLS配置:
ssl_protocols、ssl_ciphers、ssl_prefer_server_ciphers等。启用HSTS:
Strict-Transport-Security头,强制浏览器使用HTTPS访问网站。防火墙配置:
ufw允许必要的端口(如HTTP的80端口和HTTPS的443端口)。安装和配置WAF(Web应用防火墙):
监控和日志记录:
fail2ban防止暴力破解攻击。以下是一个具体的Nginx配置示例,展示了如何实现上述安全措施:
server { listen 80; server_name example.com www.example.com; # 隐藏Nginx版本信息 server_tokens off; # 限制HTTP方法 if ($request_method !~ ^(GET|HEAD|POST)$ ) { return 444; } # 限制并发连接数 limit_conn_zone $binary_remote_addr zone=addr:10m; server { limit_conn addr 10; limit_rate 100k; } # 防止点击劫持 add_header X-Frame-Options "SAMEORIGIN"; # 防止XSS攻击 add_header X-XSS-Protection "1; mode=block"; # 强制HTTPS return 301 https://$host$request_uri; } server { listen 443 ssl; server_name example.com www.example.com; ssl_certificate /path/to/your/certificate.crt; ssl_certificate_key /path/to/your/private.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256'; ssl_prefer_server_ciphers off; # 启用HSTS add_header Strict-Transport-Security "max-age=31536000; includeSubDomains"; location / { root /var/www/html; index index.html index.htm; } } 通过以上配置,可以显著提高Nginx的安全防护能力,保护网站免受各种常见攻击和数据泄露威胁。