在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的安全防护能力,保护网站免受各种常见攻击和数据泄露威胁。