如何快速检查您的网站是否受到 DoS 攻击的保护?
2022 年 2 月 19 日 本快速操作指南的目的是解释如何对您的站点执行压力测试,并了解它在极端负载下的表现。我们用于此测试的开源工具是 HTTP 基准测试工具wrk。 什么是(DoS)拒绝服务攻击: 拒绝服务 (DoS) 是攻击者阻止授权用户访问服务的一种攻击。最常见的 DoS 方法涉及用大量流量或数据请求淹没服务,以使服务在恶意流量结束之前无法响应合法用户。我们将使用 HTTP 基准测试工
2022 年 2 月 19 日
本快速操作指南的目的是解释如何对您的站点执行压力测试,并了解它在极端负载下的表现。我们用于此测试的开源工具是 HTTP 基准测试工具wrk。
什么是(DoS)拒绝服务攻击:
拒绝服务 (DoS) 是攻击者阻止授权用户访问服务的一种攻击。最常见的 DoS 方法涉及用大量流量或数据请求淹没服务,以使服务在恶意流量结束之前无法响应合法用户。我们将使用 HTTP 基准测试工具 wrk 来模拟这种类型的攻击。
在计算中,什么是基准:
根据维基百科,基准是:
在计算中,基准是运行一个计算机程序、一组程序或其他操作的行为,以评估一个对象的相对性能,通常是通过对它运行一些标准测试和试验。基准测试一词也通常用于精心设计的基准测试程序本身。
基准的两个关键特征是:
-
必须是可重复的。
-
必须是可量化的。
什么是wrk:
为了对我们的网站运行负载测试,我们使用wrk,根据他们的官方文档:
wrk 是一种现代 HTTP 基准测试工具,能够在单个多核 CPU 上运行时产生大量负载。它结合了多线程设计和可扩展的事件通知系统,例如 epoll 和 kqueue。
wrk 是开源的,但是在使用它之前,请看一下的 cryptography notice https://github.com/wg/wrk#cryptography-notice
wrk怎么安装
好的,最后我们将开始测试。确保您可以在终端上轻松运行命令,因为目前没有 GUI 可以运行 wrk。
-
###如何在 Mac 上安装 wrk
-
安装homebrew,在终端运行以下命令:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
进入全屏模式 退出全屏模式
-
- 要安装 wrk,请在终端中运行以下命令:
brew install wrk
进入全屏模式 退出全屏模式
- ### 如何在 Linux 发行版 Ubuntu 上安装 wrk
sudo apt-get update
sudo apt-get install wrk
进入全屏模式 退出全屏模式
- ###如何在windows上安装wrk
Windows 用户需要先通过这个链接安装 Ubuntu,然后运行上面的两个命令。
如何对您的网站进行压力测试
wrk 的基本用法如下所示:
wrk -t12 -c400 -d30s http://127.0.0.1:8080/index.html
进入全屏模式 退出全屏模式
有效的命令行选项是:
-c, --connections: total number of HTTP connections to keep open with
each thread handling N = connections/threads
-d, --duration: duration of the test, e.g. 2s, 2m, 2h
-t, --threads: total number of threads to use
-s, --script: LuaJIT script, see SCRIPTING
-H, --header: HTTP header to add to request, e.g. "User-Agent: wrk"
--latency: print detailed latency statistics
--timeout: record a timeout if a response is not received within
this amount of time.
进入全屏模式 退出全屏模式
我将运行 90 秒的基准测试,使用 10 个线程,并保持 100000 个 HTTP 连接打开。
wrk -t10 -c100000 -d90s https://davidloor.com --timeout 3s --latency -H 'Client: wrk terminal'
进入全屏模式 退出全屏模式
关于我正在使用传递的选项做什么的快速解释:
-t10: Use ten separate threads
-c100000: Open 100000 connections
-d90s: Run the test for ninety seconds
https://davidloor.com The target website
--timeout 3s: Define a three-second timeout
--latency: print detailed latency statistics
-H 'Client: wrk terminal': Pass a Client header
进入全屏模式 退出全屏模式
因此,我们可以说压力测试试图模拟 100000 名用户在 90 秒内多次打开网站主页。
**重要提示:**在运行压力测试时,打开网站并尝试登录(如果网站有此能力),如果网站加载正常,您可能会认为它受到了简单的 DoS 攻击的保护,并且服务器能够处理大量负载。如果该站点需要一些时间来加载,或者它显示错误,则您的网站有问题,您应该 ping 您的托管服务提供商。在某些情况下,该站点将无法自行恢复,并且可能需要重新启动某些服务。
分析输出
运行命令后我得到这个:
Running 2m test @ https://davidloor.com
10 threads and 100000 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 528.12ms 527.33ms 2.99s 87.92%
Req/Sec 20.30 16.93 116.00 74.75%
Latency Distribution
50% 356.27ms
75% 638.27ms
90% 1.20s
99% 2.62s
11662 requests in 1.50m, 735.63MB read
Socket errors: connect 97681, read 117, write 0, timeout 1581
Requests/sec: 129.43
Transfer/sec: 8.16MB
进入全屏模式 退出全屏模式
它简要介绍了测试运行了多长时间,以及测试的网站 (https://davidloor.com)。它还显示了延迟和 Req/Sec 的正态分布参数。显示在 1.5 分钟内,wrk 做了 11662 次请求,传输了 735.63 MB 的数据。
是平均。 Latency 和 Req/Sec 的值好吗?这取决于每个人的情况。我们应该始终尽量保持低延迟和高请求/秒,并且您应该记住,连接数越多,这两个值就越低。
结论
1.您可以使用wrk快速对您的站点进行压力测试。https://github.com/wg/wrk
2、安装wrk后运行压力测试的命令为:wrk -t10 -c100000 -d90s https://davidloor.com –timeout 3s –latency -H ‘Client: wrk terminal’
-
运行 wrk 命令,同时尝试在浏览器中加载站点,看看是否有任何缓慢的情况。
-
有免费资源可以提高您的网站性能,而无需向服务器添加更多资源,例如使用免费 CDN,例如cloudflare。
-
如果您有 CDN,请确保您充分利用其优势。
_ *免责声明:* 本博文中提供的信息仅用于教育目的。我不对您如何使用此处的信息负责。_
更多推荐
所有评论(0)