Linux 性能优化实战
倪朋飞
资深 Linux 专家,Kubernetes 项目维护者
87257 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 65 讲
结束语 (1讲)
Linux 性能优化实战
15
15
1.0x
00:00/00:00
登录|注册

39 | 案例篇:怎么缓解 DDoS 攻击带来的性能下降问题?

消耗应用程序的运行资源
耗尽操作系统的资源
耗尽带宽
危害
攻击类型
应用程序防御
专业网络设备处理
Linux内核处理DDoS
缓解与解决
TCP优化
限制syn包速率
iptables限制攻击源
netstat查看连接状态
抓包分析
网络状况检查
正常客户端连接模拟
模拟DoS攻击
正常访问确认
Nginx启动
虚拟机关系图
预先安装工具
机器配置
DDoS(Distributed Denial of Service)
DoS(Denail of Service)
思考
小结
DDoS到底该怎么防御
案例分析
案例准备
DDoS 简介
怎么缓解 DDoS 攻击带来的性能下降问题?

该思维导图由 AI 生成,仅供参考

你好,我是倪朋飞。
上一节,我带你学习了 tcpdump 和 Wireshark 的使用方法,并通过几个案例,带你用这两个工具实际分析了网络的收发过程。碰到网络性能问题,不要忘记可以用 tcpdump 和 Wireshark 这两个大杀器,抓取实际传输的网络包,排查潜在的性能问题。
今天,我们一起来看另外一个问题,怎么缓解 DDoS(Distributed Denial of Service)带来的性能下降问题。

DDoS 简介

DDoS 的前身是 DoS(Denail of Service),即拒绝服务攻击,指利用大量的合理请求,来占用过多的目标资源,从而使目标服务无法响应正常请求。
DDoS(Distributed Denial of Service) 则是在 DoS 的基础上,采用了分布式架构,利用多台主机同时攻击目标主机。这样,即使目标服务部署了网络防御设备,面对大量网络请求时,还是无力应对。
比如,目前已知的最大流量攻击,正是去年 Github 遭受的 DDoS 攻击,其峰值流量已经达到了 1.35Tbps,PPS 更是超过了 1.2 亿(126.9 million)。
从攻击的原理上来看,DDoS 可以分为下面几种类型。
第一种,耗尽带宽。无论是服务器还是路由器、交换机等网络设备,带宽都有固定的上限。带宽耗尽后,就会发生网络拥堵,从而无法传输其他正常的网络报文。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了DDoS攻击的原理和类型,以及通过案例分析来缓解DDoS攻击带来的性能下降问题。首先介绍了DDoS攻击的基本原理和危害,包括不同类型的攻击对网络性能的影响。通过案例分析,展示了如何使用Nginx和curl等工具模拟DDoS攻击,并使用tcpdump和sar等工具进行网络状况监测和分析。文章还介绍了如何使用iptables命令来丢弃相关的包以解决SYN攻击问题,并提出了限制syn包速率和增大半连接容量等TCP优化方法。此外,还介绍了TCP SYN Cookies作为一种专门防御SYN Flood攻击的方法。总的来说,本文通过深入的技术分析和案例演示,为读者提供了全面了解DDoS攻击及其缓解方法的重要参考。 文章指出,DDoS攻击难以完全防御,只能设法缓解其影响。建议购买专业的流量清洗设备和网络防火墙,在网络入口处阻断恶意流量,只保留正常流量进入数据中心的服务器中。在Linux服务器中,可以通过内核调优、DPDK、XDP等多种方法,来增大服务器的抗攻击能力,降低DDoS对正常服务的影响。而在应用程序中,可以利用各级缓存、WAF、CDN等方式,缓解DDoS对应用程序的影响。 最后,文章提出了思考题,鼓励读者思考更好的方法来检测DDoS攻击,除了tcpdump外,还有哪些方法可以查找这些攻击的源地址。整体而言,本文提供了深入的技术分析和解决方案,对于网络安全领域的从业者具有重要参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Linux 性能优化实战》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(40)

  • 最新
  • 精选
  • 怀特
    这个专栏太超值,我跟追剧一样的追到现在,收获已经巨大! 谢谢倪工的分享。 更谢谢倪工对留言一丝不苟的回复---这份对听众的耐心,其他专栏的作者没有一个能比得上的。 继续追剧!

    作者回复: 哈哈,谢谢热心回复和支持

    2019-02-21
    3
    28
  • ichiro
    最近服务会出现干核现象,一个单进程程序发现把一个cpu耗尽,用top发现一个cpu的,软中断很高,通过watch -d cat /proc/softireq,发现网络中断很高,然后配置多网卡队列,把中断分散到是他cpu,缓解了进程cpu的压力,但同时带来担忧,配置多网卡队列绑定,会不会带来cpu切换,缓存失效等负面影响?另外,老师还有别的建议吗?

    作者回复: 会的,实际上优化网络都会占用更多的cpu和内存。所以还要看优化是不是值得,是不是最需要优化的瓶颈

    2019-02-27
    2
    15
  • 李燕平
    服务器插上网线就像开车上路。 DDoS攻击可以理解为撞车,提升汽车本身的安全系数会有用。 大量DDoS攻击可以理解为撞上大货车,需要护卫车队来保护主车。

    作者回复: 赞👍

    2019-02-20
    12
  • 明翼
    检测DDOS攻击,我没有什么这方面经验想了下: 1、既然攻击,肯定不是正常业务,所以在sar -n DEV 4 命令看运行包的时候,不光要注意收到的包的大小,还要注意平时在监控业务的时候观察正常的业务的收包量,做一个横向比较,确定异常流量;还有一点特别重要,我觉得tcp连接交互基本都是双向的,那么回包数量和发包的数量不能相差太大,如果太大了可能有问题。 2、至于查看源IP,除了tcpdump外,是不是可以通过netstat 结合wc 统计下各类状态的连接数,如果连接数超过平时的连接数就要注意,关注状态一致的连接数,这里面也有ip信息,当然也可以判断来源。

    作者回复: 嗯,sar和netstat都是最常用的工具

    2019-02-20
    11
  • dancer
    重新开追,前两天着重看了cpu调优,正好线上压测发现了cpu.user飙高的问题,通过perf和pprof查明了是一个复杂json结构解析导致的,学以致用下来印象更深了!这两天开始看网络,后面再看io和内存相关,感谢!

    作者回复: 赞,很高兴也看到学以致用

    2019-03-06
    8
  • z.l
    请问老师今天讲的三个tcp内核参数调优能否作为通用的提高服务器抗并发能力的优化手段?

    作者回复: 嗯 是的

    2019-04-09
    5
  • 青石
    REJECT攻击IP所有报文,接口响应没什么变化,还是127秒,DROP报文后响应时间才恢复正常,查了REJECT和DROP的区别,REJECT会返回个ICMP包给源IP,有点不太理解为什么一个ICMP包导致这么大的差异。 # hping3命令, u10效果不明显,所以改成了u1测试 $ hping3 -S -p 80 172.30.81.136 -I eno1 -i u1 # 调整内核参数测试结果,接口响应时间为127秒 $ curl -s -w 'Http code: %{http_code}\nTotal time:%{time_total}s\n' -o /dev/null http://172.30.81.136/ Http code: 000 Total time:127.109s # 调整内核参数、iptables限制syn并发的测试结果,接口响应时间为127秒 $ curl -s -w 'Http code: %{http_code}\nTotal time:%{time_total}s\n' -o /dev/null http://172.30.81.136/ Http code: 000 Total time:127.106s # 调整内核参数、iptables限制syn并发、单IP连接数的测试结果,接口响应时间为127秒 $ curl -s -w 'Http code: %{http_code}\nTotal time:%{time_total}s\n' -o /dev/null http://172.30.81.136/ Http code: 000 Total time:127.097s # 调整内核参数、iptables限制syn并发、单IP连接数、DROP攻击IP所有报文的测试结果,接口响应时间为127秒 $ curl -s -w 'Http code: %{http_code}\nTotal time:%{time_total}s\n' -o /dev/null http://172.30.81.136/ Http code: 200 Total time:0.001s

    作者回复: REJECT还会给攻击源发送响应,这也是消耗网络资源的;而DROP没有任何回应,直接丢弃

    2019-03-17
    5
  • forever
    我之前在生产环境中遇到过多次ddos攻击,最好的被打到55G.最初的时候遇到攻击束手无策,还被人勒索过,说给钱就不攻击!哈哈😄因为没经验,后来就打游击战,那时候攻击的是我们负载均衡的ip,当攻击发生时我就换ip这样能暂时缓解,当然提前要把ip给准备好,比如白名单添加等!后来业务壮大,换ip的时间成本比网站不能访问的成本要高,最后我们用了阿里云的高防,就这样攻击就告一段落了!虽然高防很贵,但是比起被攻击的损失,还是值得的!

    作者回复: 👍谢谢分享

    2019-02-25
    5
  • ninuxer
    打卡day42 真正的ddos要靠运营商的流量清洗之类的了

    作者回复: 是的,流量型DDoS还是要靠硬件来抗

    2019-02-25
    3
  • 且听风吟
    net.ipv4.tcp_max_tw_buckets net.ipv4.tcp_tw_reuse net.ipv4.tcp_tw_recycle net.ipv4.tcp_keepalive_time net.ipv4.tcp_timestamps 期待结合生产环境对这几个内核参数的讲解。目前生产环境下php服务器time_wait特别多,网络包的流程: NGINX代理<——>PHP服务器——>redis/mysql.. 高峰时期php服务器一共50k+的连接。49k+的time_wait., 主要来源是php作为客户端的角色时连接redis、mysql、给代理NGINX回包、php服务器内部调用。希望老师能给解决问题的思路。

    作者回复: 嗯,后面有的

    2019-02-20
    3
收起评论
显示
设置
留言
40
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部