nginx 防止各种攻击
参考资料
以下是Nginx防御常见攻击的综合配置方案,结合访问控制、流量限制、协议优化等多维度安全策略:
Nginx 防止攻击及安全配置
防止DDoS攻击
限制连接速率:
limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_conn addr 10;
限制请求速率:
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
limit_req zone=one burst=20;
防止暴力破解
限制登录尝试:
limit_req_zone $binary_remote_addr zone=auth:10m rate=3r/m;
limit_req zone=auth burst=5;
防止SQL注入/XSS
过滤特殊字符:
if ($query_string ~* "union.*select.*\(") { return 403; }
if ($args ~* "alert\(.*\)") { return 403; }
目录遍历防护
禁止访问隐藏文件:
location ~ /\. { deny all; }
限制敏感目录:
location ^~ /admin/ { deny all; }
文件上传防护
限制上传类型:
location ~* \.(php|pl|py|jsp|asp|sh|cgi)$ { deny all; }
限制上传大小:
client_max_body_size 10m;
信息泄露防护
隐藏版本号:
server_tokens off;
禁用目录列表:
autoindex off;
SSL安全配置
禁用不安全的协议:
ssl_protocols TLSv1.2 TLSv1.3;
禁用弱加密套件:
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
HTTP安全头设置
添加安全头:
add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Content-Type-Options "nosniff"; add_header Content-Security-Policy "default-src 'self'";
IP访问控制
白名单设置:
allow 192.168.1.0/24; deny all;
黑名单设置:
deny 10.0.0.1;
日志监控
记录可疑请求:
log_format security '$remote_addr - $request - $status - $http_user_agent';
access_log /var/log/nginx/security.log security;
实际案例:
某电商网站通过限制请求速率成功抵御了CC攻击
某论坛通过过滤特殊字符阻止了XSS攻击
某企业官网通过隐藏版本号减少了针对性攻击
注意:配置后需使用nginx -t
测试配置,然后nginx -s reload
重载配置。
以下是Nginx防御常见攻击的综合配置方案,结合访问控制、流量限制、协议优化等多维度安全策略: 一、访问控制与身份验证 IP访问限制 使用allow/deny指令限制特定IP或网段访问敏感路径(如管理后台): nginx Copy Code location /admin { deny all; allow 192.168.1.0/24; } 适用场景:保护后台、API接口等关键资源。 基础认证 启用HTTP Basic认证,要求用户提供用户名和密码: nginx Copy Code auth_basic "Restricted Area"; auth_basic_user_file /etc/nginx/conf.d/.htpasswd; 适用场景:临时性访问控制或内部系统。 二、DDoS/CC攻击防护 请求速率限制 限制单个IP的请求频率(如每秒1次): nginx Copy Code http { limit_req_zone $binary_remote_addr zone=req_limit:10m rate=1r/s; } location / { limit_req zone=req_limit burst=5; } 通过burst参数允许突发流量缓冲。 连接数限制 限制单个IP的并发连接数: nginx Copy Code limit_conn_zone $binary_remote_addr zone=conn_limit:10m; location / { limit_conn conn_limit 10; } 防止资源耗尽型攻击。 慢连接防御 缩短超时时间以减少资源占用: nginx Copy Code client_body_timeout 5s; client_header_timeout 5s; 避免攻击者通过长连接消耗服务器资源。 三、应用层攻击防护 XSS/点击劫持防御 通过响应头强制浏览器安全策略: nginx Copy Code add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header Content-Security-Policy "default-src 'self'"; 限制外部脚本加载和iframe嵌套。 SQL注入/恶意参数过滤 拦截包含敏感字符的请求: nginx Copy Code if ($args ~* "union|select|sleep\(\)") { return 403; } 需结合业务逻辑调整过滤规则。 四、信息泄露防护 隐藏版本号 禁用Nginx版本信息暴露: nginx Copy Code server_tokens off; 防止攻击者利用版本漏洞。 禁用目录列表 关闭自动目录索引: nginx Copy Code autoindex off; 避免敏感文件被遍历。 五、增强型安全措施 HTTPS加密传输 启用TLS并强制HTTP重定向: nginx Copy Code server { listen 80; server_name example.com; return 301 https://$host$request_uri; } server { listen 443 ssl http2; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; } 支持HTTP/2提升性能与安全性。 防盗链配置 限制资源被外部站点引用: nginx Copy Code location ~* \.(jpg|mp4)$ { valid_referers none blocked example.com; if ($invalid_referer) { return 403; } } 保护图片、视频等静态资源。 六、动态防御策略 黑名单动态更新 结合ngx_http_geo_module动态封禁恶意IP: nginx Copy Code geo $blocked_ip { default 0; 1.2.3.4 1; include /etc/nginx/blocked_ips.conf; } server { if ($blocked_ip) { return 444; } } 需定期更新IP库。 人机验证 通过Cookie验证区分正常用户与机器人: nginx Copy Code if ($cookie_auth != "valid") { add_header Set-Cookie "auth=valid"; return 302 /verify; } 适用于防御自动化CC攻击。 以上配置需根据实际业务场景调整参数,建议定期审查日志并更新规则,结合Web应用防火墙(WAF)实现多层防护。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。