DDoS攻击和CC攻击是目前最常见的网络攻击,是站长们最头痛的恶意威胁之一,特别是中小型网站:个人博客,小企业站,开发者项目站。
一般站长们在网络防御方面意识较薄弱,一旦遭遇黑客入侵或竞争对手/同行恶意攻击,网站将会受到很大的影响,甚至导致服务器崩溃,网络服务中断。
一些靠搜索引擎排名流量吃饭的网站更是生死攸关:网站长时间被CC攻击网站无法正常访问(一般达到阈值IDC会空路由),导致好不容易上来的关键词排名逐渐消失,网站访问量减少,最终导致网站消失在搜索引擎中。
山雨欲来风满楼
服务器IP暴露的情况下每天收到各种扫描,弱口令以及莫名DDos攻击不堪其扰,作为个人博客无力抵抗DDos的情况下,乖乖切换到了Cloudflare这个提供免费 DNS、免费 CDN、免费防 DDoS的业界良心怀抱。藏好服务器IP安逸过小日子。
好景不长啊,在使用满配Cloudflare乞丐(Free)版后遇到了死磕CC攻击的大佬,可怜站长目前挂博客这垃圾配置的VPS性能不好也就算,大并发CC攻击的情况下居然不是因为CPU/内存高占,而是对外QPS达到了IDC流量阈值被空路由导致博客无法访问了,邮件通知24小时恢复。这还玩个锤子。发TK发邮件死皮赖脸提前给解了。
一瞧瞧日志,乖乖大侠不给活路。分分钟几万的请求。六小时1W+IP 来了2KW请求(峰值7KW)。有自知之明的站长知道咱小透明博客打死一天三五千IP。其它是给加了料。IP地址一查都是些海外莫名奇妙地区的IP没有明显地区特征。可能是土豪有钱不知道哪里买了量要教育一下。
怎么办?如何解决?还能不能抢救一下?在线等,急!
我正在被攻击!
基于Cloudflare防火墙API的四步CC流量清洗方案
第一步:确定源站IP没有泄露的情况,果断上Cloudflare报了警(告诉防火墙:我正在被攻击!)。随即5s盾应声开启网站所有请求全部进行JS验证。流量负载刷刷往下降。
第二步:分析网站日志提取攻击者IP:一句话从日志中统计相同IP的访问次数并按从小到大排序输出一窝怼的最凶的IP地址到/tmp/attack/ips.txt
第三步:作为Free版用户很明显只有看API文档写脚本才能微笑着活下去,批量提交IP到Cloudflare防火墙黑名单,BASH SHELL代码实现如下:

#!/bin/bash
# Author: Zhys
# Date  : 2018

# 填Cloudflare Email邮箱
CFEMAIL=""
# 填Cloudflare API key
CFAPIKEY=""
# 填Cloudflare Zones ID 域名对应的ID
ZONESID=""

# /tmp/attack/ips.txt存放发起CC攻击的IP列表
# IP一行一个。由之前AWK日志分析得到,IPv4/IPv6不少呢
IPADDR=$(</tmp/attack/ips.txt)

# 循环提交 IPs 到 Cloudflare  防火墙黑名单
# 模式(mode)有 block, challenge, whitelist, js_challenge
for IPADDR in ${IPADDR[@]}; do
echo $IPADDR
curl -s -X POST "https://api.cloudflare.com/client/v4/zones/$ZONESID/firewall/access_rules/rules" \
  -H "X-Auth-Email: $CFEMAIL" \
  -H "X-Auth-Key: $CFAPIKEY" \
  -H "Content-Type: application/json" \
  --data '{"mode":"challenge","configuration":{"target":"ip","value":"'$IPADDR'"},"notes":"CC Attatch"}'
done

# 删除 IPs 文件收拾干净
rm -rf /tmp/attack/ips.txt

Pro/Business/Enterprise版用户可以在WEB界面上直接批量添加黑名单;3-200次这样子,其实还不如好好当个脚本党
第四步:解除Cloudflare的5秒盾全站防御状态,恢复搜索引擎对网站的正常访问抓取。
活下来
以上就是网站遇到CC攻击临时救急的半自动流量清洗的完整思路,后续看是否发个基于Cloudflare+Openresty的实时流量过滤。
很开心,本站又多活了几天。

comment-author avatars

Zhys

Cherish the time! Don't waste even nine seconds to remember the past, live in the present and for the future planning.

猜你喜欢...

发表评论

电子邮件地址不会被公开。 必填项已用*标注

邮件通知