本文主要介绍了有关使用Nginx防御CC攻击的一些配置。CC攻击针对的是服务器上面的内存和CPU资源,因此通常会找到一些比较高消耗的接口,例如search.php之类的需要大量sql查询的接口。因此,明白了这一点,我们就很好防御了,主要是针对单个ip地址的连接数和请求php文件的密度来控制的。
我们主要用到的是Nginx中提供的两个limit模块:
ngx_http_limit_conn_module
ngx_http_limit_req_module
一、白名单
首先这两个模块是支持白名单的,就是可能有某些IP地址,我们是不需要进行限制的,比如可能会是搜索引擎啦什么的或者自己的IP,因此需要设置一个白名单,不需要的可跳过本步。具体方法:
在HTTP段中插入如下格式内容,声明白名单IP
http{
.......
geo $limited{
default 1;
#公司
119.123.5.0/24 0;
}
.........
}
geo指令定义了一个白名单$limited变量,默认值为1,如果客户端IP在上面的范围内,$limited的值为0。
然后紧跟在上面内容后使用map指令映射搜索引擎客户端的ip为空串,如果不是白名单IP就显示本身真实的IP,这样搜索引擎iIP就不能存到limit模块的内存session中,所以不会限制白名单的IP访问。
map $limited $limit {
1 $binary_remote_addr;
0 "";
}
二、访问频率限制
访问频率限制使用到的是ngx_http_limit_req_module,需要在两个地方配置,首先在HTTP段中,声明好这个模块一些参数,如果有设置白名单,设置如下
http{
...
limit_req_zone $limit zone=one:10m rate=20r/m; ##平均20r/m 每分钟20个请求
...
}
如果没有配置白名单,所有来访IP都会限制,配置如下
http{
...
limit_req_zone $binary_remote_addr zone=one:10m rate=20r/m; ##平均20r/m 每分钟20个请求
...
}
解释一下上面的参数,第一个代表的是需要限制的ip群,这个很好理解,第二个zone=one表示这个limit_zone的名字叫做one,后面的使用中可以用这个one来进行指代,后面的15m,代表为这个zone分配10m的内存,1m可以保存16000的$binary_remote_addr。最后一个是频率,如果要按秒来算可以设置20r/s这样。
最后是配置到Nginx的php的解析段
location ~ \.php$ {
...
limit_req zone=one burst=5 nodelay;
...
}
指定了使用名字为one的zone,然后缓冲队列为5,无延迟,如果不设置无延迟,访问会卡住。
三、访问连接限制
访问连接限制使用到的是ngx_http_limit_conn_module,也是需要在两个地方配置,首先在HTTP段中,声明好这个模块一些参数,如果有设置白名单,设置如下
http{
...
limit_conn_zone $limit zone=addr:10m;
...
}
如果没有配置白名单,所有来访IP都会限制,配置如下
view sourceprint?http{
...
limit_conn_zone $binary_remote_addr zone=addr:10m;
...
}
参数的意思跟上面的差不多也就不多解释了。
后面的就是在server段中进行设置了,可以具体到某个目录什么的了
server {
location /download/ {
limit_conn addr 5;
}
大功告成,打完收工,记得要nginx -s reload一下哦~
转自:http://netsecurity.51cto.com/art/201306/400210.htm
分享到:
相关推荐
通过Nginx的limit_req指令,可以限制每个客户端在指定时间内的连接数,从而有效防御CC攻击。比如,可以设置一个客户端每秒最多只能发起一次请求,或每分钟只能请求某个页面一次。如果超过限制,Nginx将返回错误信息...
**问题二:防御CC攻击(HTTP GET FLOOD)** CC攻击是一种利用大量合法请求占用服务器资源的攻击方式。应对措施包括: 1. **封禁IP地址**:对连接数异常的IP进行封锁,可以通过在`blockip.conf`中添加IP,或使用...
Nginx作为应用服务器,主要关注七层防御,特别是针对HTTP请求的CC(Challenge Collapsar)攻击。Nginx提供了两个核心模块用于防御此类攻击:ngx_http_limit_conn_module和ngx_http_limit_req_module。 1. **限制每...
总结来说,基于Nginx的Web服务器在面对CC攻击时,需要结合多种防御手段,结合Nginx的特性,构建多层次、全方位的防护体系,以确保服务的稳定性和安全性。同时,持续关注网络安全研究的最新进展,及时更新防御策略,...
IP请求速度和频率限制是Nginx WAF的另一关键功能,用于防止分布式拒绝服务(DDoS)攻击和CC(Challenge Collapsar)攻击。通过监控每个IP地址在一定时间内的请求数量和频率,Nginx WAF可以设置阈值,一旦超过这个...
通过以上配置,Nginx可以有效地防御流量攻击,保护服务器资源,确保大部分合法请求能正常处理。在实际部署中,需要根据服务器性能和业务需求调整限流参数,以达到最佳的防护效果。同时,结合iptables等防火墙工具,...
总的来说,虽然提供的PHP代码提供了一种基础的防CC策略,但要全面防御CC攻击,还需要结合多种技术和策略,并且定期评估和调整防护措施,以适应不断变化的攻击手段。同时,服务器硬件性能的提升和合理的资源分配也是...
3. **使用Web应用防火墙(WAF)**:部署WAF可以检测并阻止CC攻击,如Nginx的ModSecurity模块。 4. **优化代码**:减少不必要的资源消耗,例如合理设置`set_time_limit`以限制脚本执行时间。 5. **服务器配置**:...
5. **Cloudflare**:如果可能,考虑使用CDN服务如Cloudflare,它们提供高级的DDoS防护功能,包括CC攻击防护。 6. **Web应用防火墙(WAF)**:如ModSecurity,可以检测并阻止恶意HTTP请求。 7. **定期更新和安全...
1. **并发连接(CC)攻击**:CC攻击全称Challenge Collapsar,是一种针对Web服务器的拒绝服务攻击。攻击者通过大量模拟合法用户的并发请求,使服务器资源耗尽,导致正常用户无法访问。该压力测试系统可帮助开发者...
13. CC攻击:CC攻击是一种DDOS攻击方式,攻击者可以使用多个僵尸机器同时攻击目标主机,导致目标主机瘫痪。 14. PHP随机数生成:在PHP中,使用当前时间作为随机数种子产生随机数是不安全的,可能会导致随机数被预测...
此外,我们还可以看到CC攻击的防御也主要是从客户端获取IP,也可以伪造客户端IP轻易绕过限制。在blackip.rule里面,把8.8.8.8放置在黑名单里面,但这并没有什么用,IP白名单已经跳出多条件判断,不会再进行IP黑名单...
对于七层负载均衡,Tengine成为首选,它基于Nginx并提供了高可用性、CC攻击防御、会话保持和一致性哈希调度等功能。 在运维层面,负载均衡的容灾和应急预案至关重要。可以考虑软硬件结合的方案,如使用F5硬件负载...
6. **安全措施**:包括输入验证、SQL注入防护、XSS攻击防御等,确保网站的安全性。 7. **用户认证**:可能包含注册、登录、权限管理等功能,允许用户创建账户并进行个性化设置。 8. **API接口**:如果有的话,可能会...
集成了DDOS攻击检测和防御系统、CC攻击防护、Ftp/SSH防暴力破解、SSH远程登录保护、流量统计、帐户监控和设置、登录监控、系统参数快速设置、系统运行状态直观展示、系统状态实时监控、网页木马扫描功能,全方位防护...
同时,应用层的CC攻击(一种复杂的DDoS攻击)仍然是防护的难点。此外,有组织的黑客发动的超过300G的大流量攻击也变得越来越常见。这些趋势突出了DDoS防护的紧迫性和挑战性。 3. 网易DDoS防护建设: 网易在DDoS防护...
ngx_lua_rate 功能 针对不同的url, 采用不同的过滤控制频率 针对不同的url参数, 采用不同的过滤控制频率 采用两级灰度机制, 针对不同的频率做出不同的React 有白名单/黑名单机制 ...防御cc攻击 进入灰1阶段次数统计