Nginx可以通过多种方式配置安全策略来防止各种网络攻击。以下是一些常见的安全配置和最佳实践:
更新Nginx: 确保你使用的是最新版本的Nginx,因为新版本通常包含安全修复。
限制请求大小:
通过client_max_body_size指令限制客户端可以上传的最大文件大小,以防止大文件上传攻击。
http {
...
client_max_body_size 50M;
...
}
防止慢速HTTP攻击:
使用limit_req_zone和limit_req指令来限制请求速率,防止慢速HTTP攻击(Slowloris)。
http {
...
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
...
server {
...
location / {
...
limit_req zone=mylimit burst=5;
...
}
}
}
防止DDoS攻击:
使用ngx_http_limit_conn_module模块限制每个IP地址的并发连接数。
http {
...
limit_conn_zone $binary_remote_addr zone=addr:10m;
...
server {
...
location / {
...
limit_conn addr 10;
...
}
}
}
隐藏Nginx版本信息:
在nginx.conf文件中设置server_tokens off;和add_header Server "";来隐藏Nginx的版本信息。
http {
...
server_tokens off;
...
server {
...
add_header Server "";
...
}
}
使用HTTPS: 使用SSL/TLS加密通信,配置HSTS(HTTP Strict Transport Security)来强制浏览器使用HTTPS。
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256...';
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
...
}
配置防火墙: 使用iptables或ufw等工具配置防火墙规则,只允许必要的端口和服务对外开放。
禁止访问敏感文件:
配置location块来禁止访问敏感文件,如.htaccess, .htpasswd, config.php等。
location ~ /\.ht {
deny all;
}
使用安全头:
添加安全相关的HTTP头,如X-Content-Type-Options, X-Frame-Options, Content-Security-Policy等。
add_header X-Content-Type-Options "nosniff";
add_header X-Frame-Options "SAMEORIGIN";
add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://trustedscripts.example.com; object-src 'none';";
日志监控和分析: 定期检查Nginx访问日志和错误日志,以便及时发现异常行为。
请记住,这些只是一些基本的安全配置建议。实际部署时,你可能需要根据你的具体环境和需求进行调整。此外,安全是一个持续的过程,需要定期评估和更新你的安全措施。