性能测试分析案例-定位DDOS攻击

环境准备

预先安装 docker、sar 、hping3、tcpdump、curl 等工具,比如 apt-get install docker.io hping3 tcpdump curl。

操作和分析

案例用到三台虚拟机
在这里插入图片描述
其中一台虚拟机运行 Nginx ,用来模拟待分析的 Web 服务器;而另外两台作为 Web 服务器的客户端,其中一台用作 DoS 攻击,而另一台则是正常的客户端。
在终端一中,执行下面的命令运行案例,也就是启动一个最基本的 Nginx 应用:

# 运行Nginx服务并对外开放80端口
# --network=host表示使用主机网络(这是为了方便后面排查问题)
docker run -itd --name=nginx --network=host nginx

在终端二和终端三中,使用 curl 访问 Nginx 监听的端口,运行 curl 命令后,你应该会看到下面这个输出界面:

curl -s -w 'Http code: %{http_code}\nTotal time:%{time_total}s\n' -o /dev/null http://xxx.xxx.xxx.xxx/
Http code: 200
Total time:0.094636s

访问 Nginx 只需要 9ms(0.009s)。
在终端二中,运行 hping3 命令,来模拟 DoS 攻击:

hping3 -S --flood -p xxx.xxx.xxx.xxx

到终端三中,执行下面的命令,模拟正常客户端的连接

# --connect-timeout表示连接超时时间
$ curl -w 'Http code: %{http_code}\nTotal time:%{time_total}s\n' -o /dev/null --connect-timeout 10 http://xxx.xxx.xxx.xxx
...
Http code: 000
Total time:10.001s
curl: (28) Connection timed out after 10000 milliseconds

回到终端一中,执行下面的命令:

sar -n DEV 1

在这里插入图片描述

网络接收的 PPS 已经达到了 1200多,但是 BPS 却只有 73kB,这样每个包的大小就只有 62B(73*1024/1200=62)
这明显就是个小包了,不过具体是个什么样的包呢?那我们就用 tcpdump 抓包看看吧。
在终端一中,执行下面的 tcpdump 命令:

tcpdump -i eth0 -n tcp port 80

Flags [S] 表示这是一个 SYN 包。大量的 SYN 包表明,这是一个 SYN Flood 攻击。应用程序考虑识别,并尽早拒绝掉这些恶意流量,比如合理利用缓存、增加 WAF(Web Application Firewall)、使用 CDN 等等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bala5569

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值