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

相关推荐

  • php 创建BTC、LTC、ETH助记词、私钥和地址 使用示例(转)

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

    区块链 2022年8月4日
    4.6K
  • 广东省互联网医院接入——远程确认

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

    技术开发 2021年8月18日
    1.4K
  • CentOS修改yum源

    1. 修改yum源 最近在搭建以太坊节点时,要用到golang编译,但是服务器供应商那边给安装的contos系统默认的yum源没有golang,所以,这边给系统修改成阿里云的yum…

    2020年11月30日
    40.4K
  • 记录一下宝塔搭建Redis遇到的一个小问题

    最近在对接广东省互联网医院监管平台时,发现广东这边是要求平台必须要有医生和患者要有视频通话功能。因为原本的消息通话是用的网易IM,所以音视频也选的网易。网易音视频能实现通话视频云录…

    2021年6月29日
    1.5K
  • 群晖docker 安装gitlab

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

    2022年3月13日
    3.5K
  • Centos安装elasticsearch教程

    最近在部署一个项目是用 laravel开发,项目用到了了 elasticsearch,通过自己的搜索和学习能力不算很费力解决了。下面就整理一下安装elasticsearch教程,服…

    2020年11月26日
    1.6K
  • codeigniter发邮件sendmail报错

    最近将公司系统从Windows换成了Linux,大部分功能都能正常使用,唯独发送邮件通知功能时,出现了错误。通过var_dump($CI->email->print_d…

    2020年11月12日
    1.7K
  • 搭建以太坊轻节点

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

    2020年11月30日
    5.1K
  • 香港阿里云Windows服务器省钱方法

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

    2020年11月11日
    1.6K
  • 阿里云OSS图片上传与加水印签名访问

    最近公司的一个系统有一个需求,因为公司的产品有一些特殊性,经常有可能会被同行盗图,所以需要将所有的产品图片加水印展示。但是还有一个需求,内部人员可能需要查看原图,所以,这个就有点奇…

    2021年4月30日
    4.6K

发表回复

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