本文将介绍一下joomlachina.cn遭遇的cc攻击以及对应的处理方法。希望给同样遇到类似攻击的朋友提供一些处理思路。很多的攻击脚本会请求网站的页面,但并不会执行页面的js脚本,基于这一点,我们可以通过对一些高频的异常请求增加一个临时的检查页面,在这个页面进行js跳转,请求最终的页面。通过这种方式,我们可以在应用层面来解决部分的CC攻击。

问题现象

最近发现网站打开非常的慢,并且每日流量非常的大,达到了10G,一天内的日志文件也增长非常的大。通过分析日志,发现有大量的IP请求站点资源,应该是遭遇了CC攻击了。

通上图可以看到在1分钟内大概有数百个不同的IP在请求网站的首页,这明显是不正常的。

CC攻击

CC攻击是​​分布式拒绝服务(DDoS)攻击的一种典型类型​​,核心原理是​​通过大量伪造的“合法请求”消耗目标服务器的资源​​(如CPU、内存、数据库连接、带宽等),导致服务器无法处理正常用户的请求,最终出现网站访问缓慢、崩溃或无法打开的情况。
与传统DDoS攻击(通过大流量冲击网络带宽)不同,CC攻击​​伪装性更强​​——请求看似来自正常用户(符合HTTP协议规范),但实则是攻击者通过代理服务器、肉鸡(被控制的电脑)或僵尸网络发起的海量请求,专门针对网站的​​应用层资源​​(如动态页面、数据库查询、API接口)进行消耗

很奇怪的问题

我的站点上部署了百度统计,虽然在网站访问日志中,每天有超过10000IP访问了网站首页,但百度统计中却表示只有500~800IP访问(这是一个正常的日流量),我很困惑为什么百度能够准确的统计呢?后来我才理解,因为很多恶意请求是通过机器人来发送的,并不是浏览器的请求。而百度统计是基于JS的统计,很多的脚本请求根本不会执行js代码,所以就没有被统计。

尝试的解决方法

查看了几个厂商提供的高防产品,基本上都是按万元起步的,这个对于普通站点根本承受不了。在bilibi上看了很多关于攻击防御的视频,最后都可以总结一句话,请买我们的高防产品吧!

由于之前用过cloudflare,我知道这个东西能够解决问题,但我也知道接入cloudflare后,网站速度会很慢,所以一直不太想用。实在没有办法,最终才重新试用CF提供的免费计划。CF上面给出的统计数据更是恐怖。每天约有4万独立的IP访问站点,日流量50G,页面请求数约200万。网站不慢才怪。

启用cloudflare后出现的问题

启用cloudflare后,服务器的负载明显的降低了,但是页面的打开速度依然没有改善。另外,百度的抓取总是出现超时,这很不利于长期的SEO运营。因为本站的大部分流量都是靠百度搜索引擎过来的。最后不得不放弃试用cloudflare的服务。

自己来处理

首先我想到的第一个就是使用fail2ban这个工具来自动屏蔽IP.但让我很吃惊,在日志中应该能够找到很多高频的IP,但实际上在当天的日志中并没有出现一个重复的异常IP.大部分的异常IP只是请求了一次之后,当天就再也不出现了。这就让fail2ban很难处理了。

我通过分析日志发现,几乎所有的异常IP只会请求一次网站的根目录,也就是首页。我突然有一个想法,干脆将首页完全静态化,看看系统的压力会不会得到改善。做了静态化首页后,发现后台的压力瞬间降低了50%,说明这个改动是有效的,但网站的打开速度依然很慢,这是因为请求太多,网站带宽被占满。既然我无法通过ip来屏蔽请求,那么我是否可以减少每一个异常请求的返回数据呢?

基于这一点,我再次分析了日志,发现了一个很明显的规律,那就是几乎90%的异常IP在请求首页的时候,都是没有携带referfer的。这就让我有一个大胆的想法,是否可以屏蔽掉所有没有referfer的请求呢?referfer代表的是引用页,当用户进入了我的站点后,那么引用页肯定会是我内部的链接,如果用户是直接通过浏览器请求,此时也不会有referfer。所以不能够直接屏蔽IP.我想了一个折中的方法,使用nginx判断当前请求是否存在referfer,如果不存在,且请求的是首页,那么大概率是一个恶意IP,这个时候,我们就做一个重定向,让他进入到一个检查的页面。在检查的页面使用js进行二次重定向,这样就可以保证直接输入域名的用户也能够正常的访问站点了。

通过这样的一顿操作,发现网站流量瞬间掉了90%,访问速度也提升了。

一些感想

很多的攻击脚本会请求网站的页面,但并不会执行页面的js脚本,基于这一点,我们可以通过对一些高频的异常请求增加一个临时的检查页面,在这个页面进行js跳转,请求最终的页面。通过这种方式,我们可以在应用层面来解决部分的CC攻击。

 

 

作者: 樱木花道

Joomla程序员,从J1.5到J4.x始终都在做Joomla相关开发定制工作,有超过10年行业经验,国内Joomla扩展开发商ZMAX团队的核心成员

作者网站:ZMAX程序人

评论 (0)

  • 最新在前
  • 最佳在前