网站防DDOS攻击思路

最近给一个客户搭的网站,受到DDOS攻击,因为源码是在网上找的,代码质量不忍直视,一个首页就有n条sql查询。虽然服务器配置用了8核8G内存,然后也加了阿里云全站加速(过滤了一些流量),但网站还是一打就死。

客户反馈过来,说是网站打不开,于是我马上登服务器查看,mysql的进程直接卡死了,于是重启服务器,然后优化mysql的参数(mysql默认安装的配置不是最优的,可以根据服务器配置优化内存,线程等参数)。

没几分钟网站又卡死了,于是登录阿里云,查看访问情况,乖乖,直接300G流量打过来,尽管回源流量只有十分之一,我知道优化代码已经无济于事了(也是懒得优化)。

网站防DDOS攻击思路

客户那边急得不行,于是我查了一下阿里云的防DDOS服务,不看不知道,一看吓一跳。

网站防DDOS攻击思路

最便宜的保险版,20200一个月,想都不敢想一个小破站,总共都只花了十分之一的费用,让花这么多钱,那还是关了吧。上高防服务器,看这流量可能也扛不住,能抗住的服务器那费用也是一样的了。

客户还想着要挣扎一下,看有什么办法?我提议换个域名(因为用的是全站加速(类似cdn),服务器ip是隐藏的,ip不用换)。但是我也和客户说明了,如果破坏者知道了新域名,那也是白搞。

就在一筹莫展之际,我看到全站加速,数据面板有一个筛选项(区域选择),于是试着筛选一下中国的流量。

网站防DDOS攻击思路

流量少了十分之一(幸运的是当时没注意到回源流量还是一样的【笑哭】,如果发现了还是会放弃这个方案),因为网站用户主要是国内的用户,心想如果能限制访问区域,那这就可以过滤掉大部分的流量,那也是好的。刚好全站加速里的WAF里有一个限制访问区域功能。于是开通WAF,添加好限制访问区域策略。

网站防DDOS攻击思路
区域防护策略

第一次出于爱国情怀,将香港、澳门、台湾排除在封禁区域(其实是没注意到)。配置好这一切之后,我竟然有点期待破坏者快点再来打一下(哈哈,受虐狂)。

网站防DDOS攻击思路

第二天,果然又来搞事情了,上午的拦截效果不错,网站只有一小会儿波动,但是晚上一波拦截效果就不太理想了,网站停了10多分钟,于是再次查看拦截策略,原来台湾,香港,澳门是算在中国境内的(阿里云这些小细节还是到位的)。尽管有民族大义,但是破坏分子就是利用了这点,没办法只能把他们三也加到封禁区域。

网站防DDOS攻击思路

在更新了拦截策略后,第二天,他们又攻击了一波,几乎全部拦截。

网站防DDOS攻击思路

攻击者见流量都被拦截就放弃了,过了几天还试探性地测试了一下,也是几乎100%拦截。至此本次“攻防战”以守方巧妙利用攻击方弱点(攻击者一般也是中国公民,不太敢用内地ip攻击,又或者内地ip攻击费用较高)防御获胜。

网站防DDOS攻击思路

总结

通过本次防御经历,面对DDOS攻击是有很多办法的。

1.优化代码逻辑(像本次的网站,很多效率不高的sql请求),节约服务器资源,增强抗打击能力。

2.优化服务器相关软件的配置,榨干服务器性能。

3.借用三方防护服务,例如流量清洗,高防服务器(简单粗暴,成本较高)。

4.巧妙分析具体情况,例如依据本例中的服务对象所在地,限制访问区域。

5.限制访问频率(可能误杀),本次没有实际使用,但也在使用计划中,阿里云的WAF好像也有这个功能。

6.其实本次还试用了通过访问日志来统计请求ip,将访问量大的ip封禁(因为攻击者一般是通过购买攻击流量来攻击,所以攻击IP会有很多重复请求,这要就可以把这些ip封禁在黑名单里)。

7.同6,不过拦截的是请求头,可以将请求次数较多的浏览器Agent添到黑名单。又或者根据本次案例站点的特征,提供的服务主要是手机端的客户,那么就可以将不是手机端的请求拦截。

参考资料

哈哈,这是好像是本站第一篇没有参考文献的技术文章,都是根据自身经历水的一篇技术文章。本站没有加上述防护,也没什么商业价值,配置也很差,一打就死,求大佬放过,不要进行攻击测试。

原创文章,作者:Zeyu,如若转载,请注明出处:https://jinzhijun.cn/develop/1229

(0)
ZeyuZeyu
上一篇 2022年8月4日 下午9:21
下一篇 2023年3月5日 下午4:37

相关推荐

  • 常见的Web攻击手段(转)

    午饭期间,读者小李与我闲聊,谈到上周去面试的过程。经典的高开低走,面试初期答得还可以,但是到后面却不尽人意。其中有个面试问题引起了我的注意,面试官当时问小李:你知道有哪几种常见的&…

    2021年10月10日
    1.2K
  • VMware中CentOS 7设置文件夹共享的方法

    下午把虚拟机安装好了,但是还有一个不太给力的地方,就是本地代码每次编辑完总是要上传到服务器,之前windows的虚拟机是可以和物理机共享文件夹的,所以就尝试了一下通过文件夹共享来解…

    2021年8月16日
    1.9K
  • 打破壁垒:使用 PHP 和 Nginx 在本地开发 OpenAI API

    最近在开发一个OpenAI的产品,但是由于众所周知的原因, OpenAI API 有 IP 限制,使得在本地开发变得困难。开始我的想法是,把代码放服务器上去跑,可是这样一来,要修改…

    2023年4月10日
    4.3K
  • 单点登录SSO设计与实现(转)

    前言: 是时候了解一下SSO相关的知识了,本篇主要是概念篇,发现网上两篇不错的文章,简单整合了一下,原文链接:https://www.cnblogs.com/Java3y/p/10…

    2021年7月29日
    2.3K
  • 互联网医院_三级等保_存储型跨脚本执行漏洞

    最近公司在做三级等保备案,安全测试方反馈过来一份漏洞测试报告,其中有一条定义为高危的漏洞:存储型跨脚本执行。 造成这个漏洞的原因,是因为没有对客户端提交的内容进行安全过滤。系统用的…

    2021年2月5日
    40.5K
  • PHP设计模式之命令模式

    命令模式,也称为动作或者事务模式,很多教材会用饭馆来举例。作为顾客的我们是命令的下达者,服务员是这个命令的接收者,菜单是这个实际的命令,而厨师是这个命令的执行者。那么,这个模式解决…

    2022年1月7日
    1.2K
  • linux 测试端口通不通(四种方法)(转)

    针对Linux系统:有1、2、3、4四种方法针对Windows系统:有2、5两种通用方法 一般情况下使用”telnet ip port”判断端口通不通,其实…

    2022年3月13日
    2.1K
  • fiddler修改请求信息重新执行

    最近在做一个仿制功能开发时,碰到了这样一个场景:开发的系统需要在三方app里运行,并且在app里执行完后会产生一些数据,然后需要将这些数据保存起来。因为开发是在本地,本地的环境无法…

    2022年7月1日
    3.0K
  • 香港阿里云Windows服务器省钱方法

    最近把因为香港阿里云服务器要续费了,因为之前购买的时候服务器上还部署了其他的java系统,当时对Linux操作不熟,所以操作系统选的是Windows的系统,但是阿里云香港的服务器需…

    2020年11月11日
    1.5K
  • docker的备份和迁移

    1.查看容器 2.容器保存为镜像 php是容器名称 myphp是新的镜像名称 此镜像的内容就是你当前容器的内容,接下来你可以用此镜像再次运行新的容器 然后查询镜像,看一下结果 3.…

    2020年11月17日
    1.4K

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注