IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    宝塔定时执行Python脚本实现网站受到攻击时自动切换解析到CloudFalre(支持多个解析同时操作)

    52txr发表于 2024-12-31 11:07:00
    love 0

    前段时间小陶的博客被人连续攻击了将近一个月,被攻击其实我并不在乎,而是根据被攻击的契机反复进行研究知识,从这一点上我是感谢攻击个人博客的恶狗。本文就是我的一个新的成果。写的非常非常详细,相信看完对你也是有很大的启发。本文也是一步一截图,但还是需要有一定的技术基础。如果是个纯小白,不建议使用本文的方式。

    部署的环境

    • 境内外分路线解析并且设置好防火墙

      • 国内小陶用的是国内可控制使用情况的CDN(注意设置好QPS以及流量封顶)
      • 国外路线是高防CDN(小陶用的是CloudFlare,配置见文章《境内网站cname接入CloudFlare的超级详细教程》,注意设置好一个抗得住攻击的防火墙规则)
      • 国内不建议使用七牛云、上海云盾等CDN,这里没有什么偏见,它们都是很好的产品,但是不适合咱们贫穷的个人站长。七牛云这种是没法设置防御以及流量封顶之类的,被刷了第二天直接就是巨额账单;而上海云盾虽然有免费版是不要钱的,但是被攻击会直接回源(上海云盾CDN免费体验套餐回源后会直接暴露源站ip,注意及时切断或更换解析),暴露源站IP可能会直接下来服务器IP的DDOS攻击。至于其他的CDN我就不再一一列举了,凡事不能控制成本以及回源暴露源站的,个人博客站长最好都慎用。
    • DNS使用的是腾讯云DNSPods。本文的脚本实现就是针对DNSPods的解析进行调控,其他的DNS平台暂时还没有用过。如果DNS在其他平台但是也想用本文提供的方法和脚本,可以考虑将域名转入到DNSPods下,这也是支持的。方然也可以参考本文的脚本对阿里云DNS等进行API的修改和适配。
    • 小陶服务器安装的是宝塔,目前版本是宝塔9.3.0正式版,宝塔安装后是自带了Python环境,本脚本可以直接调用而不需要单独安装Python解释器,如果你的服务器没有Python,可能需要单独安装一下Python解释器来驱动脚本的运行。
    • 你需要有一定的Python基础,至少看得懂注释,知道如何修改脚本里的关键参数

    实现的思路

    首先需要知道自己是处于攻击的状态。根据我被攻击丰富的经验,对于4核4G以下的水管服务器,可以从负载量、CPU状况、内存使用状态来综合分析,如果处于较高的水平,基本就是被DDOS或者说cc攻击了。

    服务器的负载情况

    那么如何实现对在攻击的时候及时调用CloudFlare作为盾牌来防护呢?这里有很多细节需要注意。

    记住目录,你可以和我的一模一样:/www/wwwroot/DNSPodsControl/main.py

    新建一个python脚本

    然后打开定时任务:

    在shell脚本中添加一下内容,可以设置三分钟运行一次脚本或者五分钟运行一下脚本:

    cd /www/wwwroot/DNSPodsControl
    source /www/server/panel/pyenv/bin/activate
    python main.py

    新建shell脚本

    运行效果

    tips:实际上我已经在本地进行了测试。

    当被攻击负载和CPU较高的时候,就可以那解析全部转移到CloudFlare上了。

    (一些碎碎念:这里我没有写在负载正常的时候重新启动解析,这是有原因的。根据我的被攻击经验,当被攻击的时候,很有可能攻击者会对你观察一段时间,也就是著名的”凶手喜欢再次回到案发现场“规律,你马上切换过来只会继续被攻击,建议在CloudFalre上全托管一段时间再使用境内CDN吧,所以没必要及时切换回来)

    运行结果



沪ICP备19023445号-2号
友情链接