本人服务器前段时间受到了DDos和CC攻击,DDoS流量型攻击只能靠带宽来扛住,但CC攻击可以从服务器和应用层面防御和减轻影响。本文介绍受到攻击后,本人在服务器上采取的简易防CC攻击设置。

Nginx防CC设置

不同于DDoS靠流量蛮力攻击,CC攻击模拟正常用户与服务器交互。CC攻击一般需找到网站/应用的薄弱处,然后通过大量连接/请求消耗服务器资源,让CPU、带宽能资源占用飙升。

并发请求和请求速率

防护CC攻击的主要手段是限制并发请求数量和请求速率。并发请求数量指的是单ip可以与服务器建立多少个连接,请求速率指的是单位时间内的请求数。两者有共同部分但意义不同,例如建立十个连接每个连接请求一次,也可以建立一个连接请求十次。前者是并发连接多,后者是请求速率高。

Nginx既支持并发请求的限制,也支持按限制请求速率。防御CC攻击主要是限制速率,理论上速率限制得好就够了。实践中建议两者结合,既防止太多连接消耗服务器资源,也防止请求速率过快。

Nginx防CC设置步骤

Nginx 防CC详细设置步骤如下:

1.  编辑Nginx配置文件,例如 /etc/nginx/nginx.conf , 在

limit_conn_zone $binary_remote_addr zone=limit_conn:10m;

limit_req_zone $binary_remote_addr zone=limit_req:10m rate=10r/s;

上述配置分配了 limit_conn 和 limit_req 两个10M大小的内存块(1M内存可记录16000个会话),并设置每秒最大请求速率是10次。

2, 打开网站配置文件,例如 /etc/nginx/conf.d/tlanyan.conf,在 server 或者 location 段中开启限制:

server {

limit_conn limit_conn 5; # 并发连接数不超过5

limit_req zone=limit_req burst=10 nodelay;

# 其他设置

http中设置每秒允许10个请求,即100毫秒一个,如果突然来10个连接,后面9个直接返回503错误,这是我们不愿意看到的。limit_req中的 burst 参数用来处理突发请求,此时10个请求都会被接受以应对突发流量。如果再来10个,那就超出了允许的突发限制,Nginx直接返回503错误。

nodelay 表示在允许突发请求的情况下,直接处理所有请求,而不是每100毫秒处理一个。

实践中请根据具体情况设置并发连接数和请求速率。数值过大会影响防御效果,太小则会影响正常用户使用。此外,建议总是启用 burst 和 nodelay 以应对突发流量。

3. 保存配置文件,nginx -t 检查有无语法错误,然后 systemctl reload nginx 重新加载配置。

其他事项

1. 可以将某些ip放入白名单,避免受到速率限制。操作是在 http 段新增开启变量:

geo $whitelist {

default 1;

10.0.0.17 0; # 按照这个格式添加白名单ip

}

map $whitelist $limit {

0 "";

1 $binary_remote_addr;

}

# limit_conn_zone 和 limit_req_zone更改为:

limit_conn_zone $limit zone=limit_conn:10m;

limit_req_zone $limit zone=limit_req:10 rate=10r/s;

#其他配置无需改变

2. limit_conn 和 limit_req 指令可以放置在 http、server、location 中使用,分别表示对所有站点、特点站点、特定url使用限制;

3. 可以同时使用多个 limit_conn 和 limit_req 应付复杂场景。WordPress 的搜索页面最消耗服务器资源,因此可以单独限制,例如每秒最多一次请求;

4. 超过允许速率后,服务器直接返回503错误,

firewalld/iptables防CC设置

Nginx可以限制并发请求数量,防火墙(iptables / firewalld)也可以做到,并且性能更好。

防火墙限制主要是两方面:

1. 将某个ip拉黑:

#iptables

iptables -I INPUt -p tcp -s 黑名单ip -j DROP

# firewalld

firewall-cmd --add-rich-rule="rule family='ipv4' source address='黑名单ip' reject"

2. 限制ip的并发连接:

# iptables

iptables -I INPUt -p tcp --dport 443 -m connlimit --connlimit-above 5 -j DROP

# firewalld

firewall-cmd --add-rich-rule 'rule port port=443 protocol=tcp accept limit value="5/s"'

修改Nginx可打开的最大文件数

默认Nginx最大可打开1024个文件/连接,在大流量时明显不够,因此需要加大。

操作方法如下:

1. 编辑 /etc/systemd/system/multi-user.target.wants/nginx.service,添加文件数限制:

[Unit]

Description=The nginx HTTP and reverse proxy server

After=network.target remote-fs.target nss-lookup.target

[Service]

# 增加这一行

LimitNOFILE=65535

#其他不用变

2. 重启Nginx:systemctl daemon-reload; systemctl restart nginx;

3. 查看Nginx打开文件限制是否已经生效:ps aux | grep nginx 找到 nginx 的进程号,然后 cat /proc/进程号/limits,输出如下:

总结

经过上述设置,配置好参数后,小型的CC攻击能防住或者减轻影响。大量ip/大流量的攻击没办法,只能通过WAF/大带宽做清洗处理。

cc攻击可以消耗服务器性能,服务器简易防CC攻击设置相关推荐

  1. 负载均衡服务器性能,服务器负载均衡:确保应用服务的高性能与高可用

    随着互联网的快速发展和业务量的不断提升,基于网络的数据访问流量迅速增长,特别数据中心.大型企业及门户网站,日益丰富的内容和信息输出大大加速了服务器的资源消耗.加上大部分网站都需要提供24小时不间断服务 ...

  2. amd服务器和intel服务器性能,服务器CPU内存性能哪家强?AMD or Intel?

    原标题:服务器CPU内存性能哪家强?AMD or Intel? 基准配置和方法 MCT的一位导师在EPYC 7601.Skylake, 和Cascade Lake machines上进行了一项测试. ...

  3. BIOS调整服务器性能模式,如何修改BIOS的设置,让显卡发挥最佳性能?

    bois版本的不同其选项也有所差异! 常见的AGP如下:AGP Mode(AGP模式) AGP模式决定了AGP的频率,其值为66MHz的倍数,1×最慢,8×最快.目前能够真正支持AGP 8×的显卡只有 ...

  4. 传奇登录器修改服务器列表,传奇登录器TCP服务器远程列表「防劫持」设置教程...

    [Server] 70=★本地测试登陆器[WWW.DIYGM.COM]★|-----------------------------|威威本地登录器测试[WWW.DIYGM.COM]|192.168. ...

  5. 20210813 数据摆渡、DNS、分布式、分布式数据库、防ddos攻击、链路负载均衡

    数据摆渡 数据摆渡是什么?摆渡的意思是,在没有道路的时候,坐船度过这片水域到达对岸. 数据摆渡顾名思义,是指在没有物理连接的情况下,数据通过隔离部件从源端到达目的端. 再通俗一点,就是通过具有存储介质 ...

  6. 脚本启动显示查询频繁被服务器防御_又被CC攻击弄得心有余悸?莫怕!这里教你如何防御...

    转自CSDN,博主:一只IT小小鸟. CC攻击原理 HTTP Flood 俗称CC攻击(Challenge Collapsar)是DDOS(分布式拒绝服务)的一种,前身名为Fatboy攻击,也是一种常 ...

  7. GB/T28181协议视频平台EasyGBS视频快照优化,减少服务器性能消耗

    GB/T28181协议EasyGBS国标视频平台的视频快照功能,可以直观地展示前端接入设备的视频直播状态,便于用户快速和清晰地预览实时视频监控画面. 此前我们的EasyGBS平台快照,是后端利用ffm ...

  8. 服务器存在缓慢的HTTP拒绝服务攻击

    目录 1️⃣漏洞验证 2️⃣漏洞利用 3️⃣漏洞由来 4️⃣攻击原理 5️⃣慢速攻击分类 6️⃣解决办法 WebSphere Weblogic Nginx Apache IHS服务器 F5负载均衡 I ...

  9. ab,qps,服务器性能压力

    ab,qps,服务器性能压力 作者及来源: 陳聽溪 - 博客园    收藏到→_→: 摘要: ab,qps,服务器性能压力 http://www.makaidong.com/%E5%8D%9A%E5% ...

最新文章

  1. Numpy 中的 arange 函数
  2. PyTorch学习笔记——pytorch图像处理(transforms)
  3. 从无主之地看FPS+ARPG游戏的发展方向
  4. java栈的内存_JVM的栈内存
  5. 骁龙710、675、660、636之间性能差距有多大?
  6. Java Swing中键盘事件的处理
  7. jpsnamenode和不显示_hadoop启动后jps查不到namenode的解决办法
  8. 电脑测试软件_科普丨电脑小白必看的显卡测试小技巧
  9. 8-4 如何使用线程本地数据
  10. c语言计算圆周率随机数法,C语言求圆周率的简单实现方法
  11. java 最大素数,JAVA计算指定上限的最大素数
  12. iOS Facebook pop动画进阶
  13. 不让玩游戏的小娃娃随机考试系统
  14. Ai-WB2系列的eclipes搭建环境教程
  15. uniapp(H5) + signalr 制作的简单的卡牌游戏
  16. 安装Windows11体验WSA,安装常用Android应用测试
  17. docker之daemon.json文件
  18. CheckBox设置不可点击
  19. Linux系统 运行小花仙游戏(针对2021年Flash停止维护的情况)
  20. HDU3698-Let the light guide us (线段树优化的dp)

热门文章

  1. 不要来日本IT业混饭
  2. Swift3检测设备是否为iPad Portrait模式
  3. 深度学习中 Internal Covariate Shift 问题以及 Batch Normalization 的作用
  4. Mac Docker Desktop 搭建 Kubernetes 环境
  5. 【nextcloud】群晖 Web Station 搭建的 Nextcloud 出现文件锁(文件无法删除或修改)问题的解决
  6. 电子商务平台技术选型和架构设计
  7. 太小看了XXXX和XXXX
  8. 接口测试神器Apifox究竟有多香?
  9. 「原理篇」你真的了解 React18 的并发吗?
  10. 国内最强 Chrome 商店镜像, 你想要得插件都有