今天本来想安安静静写个教程的,结果早上起来发现博客访问慢得像老牛拉破车。打开后台一看,好家伙,CC 攻击来了,不要问我哈,我也想知道为啥偏偏挑我这个小破站下手。咱这博客一共就 800 来篇文章,每天正常访问也就几百 IP,也不知道攻击者是咋想的,难道是想测试一下我的服务器抗不抗揍?哈哈哈~~~
先说说啥是 CC 攻击吧
通俗易懂的解释就是:有一群"机器人"假装成正常用户,不停地刷新你的网站,把你的服务器资源耗光,让真正想访问的人打不开网站。就像你开个小卖部,来了一群人只逛不买,还把过道堵死了,真正想买东西的顾客进不来,是不是这个理儿?我这个"栗子"是不是很恰当,哈哈哈~~~
怎么确定是被攻击了?
网站访问变慢了,平时打开页面 1 秒以内,今天直接 5 秒+甚至更久。这时就不用怀疑了。还有就是服务器 CPU 飙升,如果你平台有查看运行状态的好习惯就能看出来,毕竟平时 10% 左右,今天直接 90%+,是吧。还可以参考web日志里全是重复请求,这个就需要你回看日志了,打开 access.log 一看,好家伙,同一个 IP 几秒钟请求几百次,不会看也没关系,访问变慢就够了哈。
我的应对办法(亲测有效)
上 CDN(免费!)
这个真的是神器,免费的 CDN 还能防 CC。配置也简单:
- 去 cloudflare.com 注册个账号(不要钱)
- 把你的域名 DNS 改到他们家
- 开启"Under Attack Mode"(攻击模式)
- 开启之后,访问网站会先验证一下是不是真人,机器人基本就拦住了。
缺点:国内访问速度可能会慢一丢丢,但总比打不开强吧?
当然了,你可以使用国内的CDN,比如腾讯云和阿里云等厂商的"边缘加速",效果很是牛,但是,对嘛肯定有但是的啊,域名必须备案,否则不行。我就在用,你可能会问那为什么用了还被攻击呢?呵呵,你猜呢?有没有可能我正在调试页面代码,不得已暂时关闭了CDN然后恰巧,被攻击了呢?哈哈,编剧都不敢这么写剧本哈!但是我就遇上了。。。
WEB服务器 NGINX 限流
如果你用的是 Nginx,加上这个配置:当然了如果你不会代码,还是别改了,毕竟配置文件差一个标点都可能崩溃,如果你实在想折腾下,就做好备份吧。
# 限制每个 IP 每秒最多 10 个请求
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
# 在 server 块里应用
location / {
limit_req zone=one burst=20 nodelay;
# 其他配置...
}这段话的意思是:每个 IP 每秒最多允许 10 次请求,超过的就排队,排不上的直接拒绝。可以设置的宽松一点,另外如果你选择了 CDN 那就可以忽略这个配置了,现在的 CDN 基本都有免费的防护,毕竟你能想到了,人家是专业的早就想到了。
注意:别设置太严格,不然正常用户也可能被误伤,那就尴尬了。
直接封 IP
如果攻击规模不大,可以直接在防火墙封掉
缺点:攻击者可以换 IP,治标不治本。但是能简单的防一防,仅仅是基本的哈~还是那句话,上了 CDN 基本都解决了,除非大流量攻击,这个是没有办法的需要花费"亿点点"的费用。毕竟免费的流量有限制哈~
评论 (0)