前言

关于CC攻击的认识

CC(ChallengeCollapsar,挑战黑洞)攻击是DDoS攻击的一种类型,使用代理服务器向受害服务器发送大量貌似合法的请求。CC根据其工具命名,攻击者使用代理机制,利用众多广泛可用的免费代理服务器发动DDoS攻击。许多免费代理服务器支持匿名模式,这使追踪变得非常困难。
CC攻击的原理就是攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃。CC主要是用来攻击页面的,每个人都有这样的体验:当一个网页访问的人数特别多的时候,打开网页就慢了,CC就是模拟多个用户(多少线程就是多少用户)不停地进行访问那些需要大量数据操作(就是需要大量CPU时间)的页面,造成服务器资源的浪费,CPU长时间处于100%,永远都有处理不完的连接直至就网络拥塞,正常的访问被中止。

关于防CC攻击的原理

一个静态页面不需要服务器多少资源,甚至可以说直接从内存中读出来发给你就可以了,但是论坛之类的动态网站就不一样了,我看一个帖子,系统需要到数据库中判断我是否有读帖子的权限,如果有,就读出帖子里面的内容,显示出来——这里至少访问了2次数据库,如果数据库的体积有200MB大小,系统很可能就要在这200MB大小的数据空间搜索一遍,这需要多少的CPU资源和时间?如果我是查找一个关键字,那么时间更加可观,因为前面的搜索可以限定在一个很小的范围内,比如用户权限只查用户表,帖子内容只查帖子表,而且查到就可以马上停止查询,而搜索肯定会对所有的数据进行一次判断,消耗的时间是相当的大。

部署方法

1.以WordPress为例,在根目录创建以下代码的文件,命名为anticc.php

<?php
//代理IP直接退出
emptyempty($_SERVER['HTTP_VIA']) or exit('Access Denied');
//CC攻击跳转的频率设置
session_start();
$seconds = '3'; //时间段[秒]
$refresh = '8'; //刷新次数
//设置监控变量
$cur_time = time();
if(isset($_SESSION['last_time'])){
 $_SESSION['refresh_times'] += 1;
}else{
 $_SESSION['refresh_times'] = 1;
 $_SESSION['last_time'] = $cur_time;
}
//处理监控结果
if($cur_time - $_SESSION['last_time'] < $seconds){
 if($_SESSION['refresh_times'] >= $refresh){
  //跳转防CC页
  header(sprintf('Location:%s', './anticc.html'));
  exit('Access Denied');
 }
}else{
 $_SESSION['refresh_times'] = 0;
 $_SESSION['last_time'] = $cur_time;
}
?>

Tips:CC跳转频率可再严格些,如果每次都要开启的话可设置为0秒0次

2.在服务器根目录下创建跳转界面,命名为anticc.html

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>防CC刷新攻击中,5秒后跳转首页</title>
<meta http-equiv="refresh" content="5;url=/" />
<style>*{box-sizing:inherit;}body{min-height:100vh;display:flex;justify-content:center;align-items:center;background:#151924;padding:0;margin:0;}.loading{--color:#F5F9FF;--duration:2000ms;font-family:Roboto,Arial;font-size:24px;position:relative;white-space:nowrap;user-select:none;color:var(--color);}.loading span{--x:0;--y:0;--move-y:0;--move-y-s:0;--delay:0ms;display:block;position:absolute;top:0;left:0;width:1px;text-indent:calc(var(--x) * -1);overflow:hidden;transform:translate(var(--x),var(--y));}.loading.start div{opacity:0;}.loading.start span{animation:move var(--duration) ease-in-out var(--delay);}@keyframes move{30%{transform:translate(var(--x),var(--move-y));}82%{transform:translate(var(--x),var(--move-y-s));}</style>
</head>
<body>
<div class="loading">防CC刷新攻击中,5秒后跳转首页</div><br>
    <script src="https://cdn.bootcss.com/jquery/3.3.0/jquery.min.js"></script>
    <script type="text/javascript">
$(document).ready(function(){let loading=$('.loading').wrapInner('<div></div>'),min=20,max=70,minMove=10,maxMove=20;startAnimation(loading);loading.on('animationend webkitAnimationEnd oAnimationEnd','span:last-child',e=>{startAnimation(loading)});function setCSSVars(elem,min,max,minMove,maxMove){let width=Math.ceil(elem.width()),text=elem.text();for(let i=1;i<width;i++){let num=Math.floor(Math.random()*(max-min+1))+min,numMove=Math.floor(Math.random()*(maxMove-minMove+1))+minMove,dir=(i%2==0)?1:-1,spanCurrent=elem.find('span:eq('+i+')'),span=spanCurrent.length?spanCurrent:$('<span />');span.css({'--x':i-1+'px','--move-y':num*dir+'px','--move-y-s':((i%2==0)?num*dir-numMove:num*dir+numMove)+'px','--delay':i*10+'ms'});if(!spanCurrent.length){elem.append(span.text(text))}}}function startAnimation(elem){elem.removeClass('start');setCSSVars(elem,min,max,minMove,maxMove);void elem[0].offsetWidth;elem.addClass('start')}});
</script>
</body>
</html>

3.然后在你网站的首页文件,例如index.php最上面加入调用代码即可,示例:

require'anticc.php';

总结

这样的防CC攻击仅限于攻击流量较小且十分简单无需花费钱的小技巧,若攻击流量较大还是建议部署更复杂有效的软防,例如:宝塔面板的Nginx/Apache防火墙、云锁、安全狗等软件提供的CC防御。总而言之,这一切都是软防,都需要服务器有一定的配置才能防御。
如果你的网站持续遭受他人的攻击甚至勒索等,欢迎购买凌梦云低价的高防服务器,国人运营企业级IDC服务商。
推荐购买
枣庄100G高防区,可封UDP/海外,傲盾无视CC(上层配备硬件防火墙,无需高配置服务器,无需配置软防,即可做到防御CC),人工专席客服专业解决攻击的烦恼。
2核2G 10M 58元/月 588元/年
4核4G 10M 88元/月 888元/年
8核8G 10M 158元/月 1588元/年

青岛300G高防区,可封UDP/海外,硬件金盾+傲盾无视CC,Tbps级弹性突发防御,过滤大包SYN攻击,人工专席客服专业解决攻击的烦恼。
8核8G 15M 350元/月
16核8G 15M 428元/月
更低或更高配置请点击查看

Last modification:January 8th, 2021 at 02:07 pm
如果你想关爱一下穷困潦倒的博主,快来施舍叭!