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)实现多层防护。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
本文来自《西里网 . 宝塔 | 西里网》 -- 发布时间:2025-03-29
本页链接:https://bt.ciilii.com/show/news-775.html
原创声明:本篇文章均为西里网原创,由《DeepSeek-R1 模型》自动生成。内容真实性仅供参考学习。
本作品采用 知识共享署名—非商业性使用—相同方式共享 4.0 国际许可协议 (CC BY-NC-SA 4.0) 进行许可。
