网站防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

相关推荐

  • 群晖docker 安装gitlab

    一、安装 1.1 在套件中先安装Docker套件。 1.2 在docker中,注册页签下,搜索:gitlab,双击下载,选latest 1.3下载完成后,在映像页签下,选中gitl…

    2022年3月13日
    3.4K
  • php代码批量Zend Guard解密方法

    最近找到一套源码,想着测试一下功能,顺便学习一下他们的代码思想,结果所有的php文件都是乱码的,由于没有安装说明,只能自己摸索。打开源码,发现其中有些关键词Zend Guard,初…

    2021年12月18日
    5.4K
  • php实现助记词转TRX,ETH 私钥和钱包地址

    TRX助记词转地址网上都是Java,js或其他语言开发的示例,一个简单的功能需要依赖其他环境来实现表示不能忍,毕竟php是世界上最好的语言。【狗头】 一、知识准备 要实现助记词转T…

    2022年8月4日
    7.7K
  • 获取宝塔搭建的Ecshop的源码和数据库的方法

    最近在虚拟机里搭了一个kali2022,想试试kali的一些工具的功能,于是想到最近在网上的源码站下载了一套ecshop二开的商城,就搭建在另一个虚拟机上,想着看自己能否攻破下来。…

    2022年5月29日
    2.1K
  • 广东省互联网医院接入——远程确认

    今天公司互联网医院接入终于走到了远程确认这一步了,因为一直是摸着石头过河,中间做了不少弯路,这里做个记录,希望也在摸索的同行如果看到能有一个参考。当然写这个的时候,还只是远程演示了…

    技术开发 2021年8月18日
    1.3K
  • php 创建BTC、LTC、ETH助记词、私钥和地址 使用示例(转)

    项目依赖: bitcoin-php bitcoin的php实现库,用于创建助记词和生成私钥 (此库需要运行在64位的php7.0+上) ethereum-util&nbs…

    区块链 2022年8月4日
    4.5K
  • 搭建以太坊轻节点

    1. 安装 go 语言 安装 go 主要是为了去编译 go-ethereum 源码 查看go版本 2. 安装 git 安装 git 主要是为了拉取 go-ethereum 源码 查…

    2020年11月30日
    5.1K
  • 记一次生产环境救火-20210716

    今天起了个早,早早来到公司,本来吃完早餐,泡好咖啡,在工位上气定神闲的刷刷昨天的财经信息,准备开启今天的工作。想起昨天微信群里有人反映系统,系统加载较慢,于是打开阿里云后台,准备看…

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

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

    2021年8月16日
    1.9K
  • php后期静态绑定

    最近在跑一套系统时碰到一个头大的问题,laravel的队列任务(通过另一个原生系统读取数据库)在执行时,会出现数据库连接断开的问题,导致队列任务刚启动时可以正常运行,有一段时间没有…

    2022年4月18日
    1.4K

发表回复

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