vingoo 发表于 2017-3-19 00:18:54

防CC攻击常用方法及源码分享

  CC攻击是种分布式拒绝服务攻击方法。CC攻击技术含量较低,受CC攻击站点因此比较普遍。不论是中小企业网站,亦或是个人网站,做好防CC攻击工作成了众多站长或网站管理员的日常工作内容。该如何防CC攻击?都有哪些常用方法?
  防CC攻击源码
  1.安装防CC攻击软件:
  在服务器上,安装预防CC攻击软件,应该算比较常用的方法之。比如安装使用安全狗等安全防护软件,或者安装使用些流量防火墙软件等,只要设置适当,都可以有效防护CC攻击。当然,安装防CC攻击软件,可以预防CC攻击软件的同时,也会占用定的CPU、内存等服务器资源,甚至些防CC攻击软件,需要付费使用。
  2.使用DNS解析服务:
  DNS解析服务,本身并不具备预防CC攻击等流量攻击的作用。但我们可以使用如DNSPod、百度云解析、阿里云解析等免费DNS解析服务平台,依靠这些DNS解析服务平台的相关安全防护功能,共同承担CC攻击,从而降低网站服务器压力,减轻CC攻击危害。
  3.使用CDN加速服务:
  与DNS解析服务样,CDN加速服务作为个内容分发网络,本身也不具备防CC攻击、DDOS攻击等流量攻击功能。但同样我们可以依赖,如快云CDN、阿里云CDN等免费平台,提高网站访问速度的同时,隐藏网站服务器真实IP地址,起到防CC攻击和降低CC攻击等流量攻击的危害。
  4.使用网站安全监控防护服务:
  网站安全监控防护服务,便是针对网站安全的网络服务产品。这类产品能够有效的预防CC攻击、DDOS攻击等流量攻击,且大多为付费服务。网站安全监控防护服务产品,如快云防护,利用云端强大带宽及CDN节点服务器资源,可以有效预防和抵御DDoS、CC等巨大流量型攻击。
  5.利用防CC攻击代码:
  对于那些懂些编程技术的网站管理员来说,利用防CC攻击代码,编写相应防CC攻击程序,不仅可以有效防御CC攻击,同时还可以降低服务器资源消耗,和防CC攻击成本。是为理想的种防CC攻击方法。

vingoo 发表于 2017-3-19 00:20:09

防CC攻击VB代码:
targeturl = "/archives/2761.html"'受攻击网站的URL地址。
logfilepath = "C:\LogFiles\W3SVC\ex110813.log"'受攻击网站的日志路径。


On Error Resume Next
Set fileobj = CreateObject("scripting.filesystemobject")
Set fileobj2 = CreateObject("scripting.filesystemobject")
Set myfile = fileobj2.opentextfile(logfilepath, 1, False)

Do While myfile.atendofstream <> True
myline = myfile.readline()
myline2 = Split(myline, " ")
newip = myline2(9)
myurl = myline2(5)
If targeturl = myurl Then
      writelog newip
End If
Loop

myfile.Close
Set fileobj2 = Nothing
Msgbox "结束."

Sub writelog(errmes)
ipfilename = "blockip.txt"
Set logfile = fileobj.opentextfile(ipfilename, 8, True)
logfile.writeline errmes
logfile.Close
Set logfile = Nothing
End Sub


分析出来的IP如果出现异常,可以通过程序,将其批量添加到IIS的屏蔽IP列表里,下面是网上找到的一段VBScript代码,将其改名为vbs后,把上面那段程序的IP导入,即可批量屏蔽攻击者的IP地址。
'/*=========================================================================
' * Intro VBScript使用ADSI为IIS批量添加屏蔽或允许访问的IP
' * FileName VBScript-ADSI-IIS-Add-Deny-Grant-IP-Change-MetaBase.xml.vbs
' *==========================================================================*/
'AddDenyIP2All "192.168.1.106,255.255.255.0"
'AddDenyIP "123456","127.0.0.1"
'AddDenyIP2All "14.113.226.116"


'添加要屏蔽的IP或一组计算机,到一个指定站点上
Sub AddDenyIP(strWebNo, strDenyIp)
On Error Resume Next
Set SecObj = GetObject("IIS://LocalHost/W3SVC/" & strWebNo & "/Root")
Set MyIPSec = SecObj.IPSecurity
MyIPSec.GrantByDefault = True
IPList = MyIPSec.IPDeny
i = UBound(IPList) + 1
ReDim Preserve IPList(i)
IPList(i) = strDenyIp
MyIPSec.IPDeny = IPList
SecObj.IPSecurity = MyIPSec
SecObj.Setinfo
End Sub
'添加要屏蔽的IP或一组计算机,到IIS公共配置,以应用到所有站点
'如果之前对有些站点单独做过屏蔽IP设置,在些设置不会生效,得在总的网站上设置一下,然后覆盖所有子结点
Sub AddDenyIP2All(strDenyIp)
On Error Resume Next
Set SecObj = GetObject("IIS://LocalHost/W3SVC")
Set MyIPSec = SecObj.IPSecurity
MyIPSec.GrantByDefault = True
IPList = MyIPSec.IPDeny
i = UBound(IPList) + 1
ReDim Preserve IPList(i)
IPList(i) = strDenyIp
MyIPSec.IPDeny = IPList
SecObj.IPSecurity = MyIPSec
SecObj.Setinfo
End Sub
'添加允许的IP或一组计算机,到一个指定站点上
Sub AddGrantIP(strWebNo, strGrantIp)
On Error Resume Next
Set SecObj = GetObject("IIS://LocalHost/W3SVC/" & strWebNo & "/Root")
Set MyIPSec = SecObj.IPSecurity
MyIPSec.GrantByDefault = False
IPList = MyIPSec.IPGrant
i = UBound(IPList) + 1
ReDim Preserve IPList(i)
IPList(i) = strGrantIp
MyIPSec.IPGrant = IPList
SecObj.IPSecurity = MyIPSec
SecObj.Setinfo
End Sub
'添加允许的IP或一组计算机,到IIS公共配置,以应用到所有站点
'如果之前对有些站点单独做过屏蔽IP设置,在些设置不会生效,得在总的网站上设置一下,然后覆盖所有子结点
Sub AddGrantIP2All(strGrantIp)
On Error Resume Next
Set SecObj = GetObject("IIS://LocalHost/W3SVC")
Set MyIPSec = SecObj.IPSecurity
MyIPSec.GrantByDefault = False
IPList = MyIPSec.IPGrant
i = UBound(IPList) + 1
ReDim Preserve IPList(i)
IPList(i) = strGrantIp
MyIPSec.IPGrant = IPList
SecObj.IPSecurity = MyIPSec
SecObj.Setinfo
End Sub
'显示IIS公共配置里禁止访问的IP
Sub ListDenyIP()
Set SecObj = GetObject("IIS://LocalHost/W3SVC")
Set MyIPSec = SecObj.IPSecurity
IPList = MyIPSec.IPDeny 'IPGrant/IPDeny
WScript.Echo Join(IPList, vbCrLf)
' For i = 0 To UBound(IPList)
' WScript.Echo i + 1 & "-->" & IPList(i)
' Next
End Sub

vingoo 发表于 2017-3-19 00:21:22

防CC攻击PHP代码
<?php
if (isset($_SERVER)){
    $realip = $_SERVER;
}
else
{
    $realip = getenv("HTTP_X_FORWARDED_FOR");
}
if($realip<>""){
    $remoteip=$_SERVER['REMOTE_ADDR'];
    log_ip($remoteip,$realip);
}
function log_ip($remote_ip,$real_ip)
{
    $temp_time = date("y-m-dG:i:s");
    $temp_result = $temp_time."\t".$real_ip."\t".$remote_ip."\n";
    if(!$fhandle=fopen("cc_log.txt","a+")){
      print "error";
      exit;
    }
fwrite($fhandle,$temp_result);
fclose($fhandle);
}
?>


此段代码作用:
将代理访问的真实IP记录到日志中,以便排查分析。
以下是cc_log.txt的内容(此代码生产是因我通过CC攻击软件攻击生产的)


<?php
session_start();
$timestamp = time();
$cc_nowtime = $timestamp ;
if (session_is_registered('cc_lasttime')){
   $cc_lasttime = $_SESSION['cc_lasttime'];
   $cc_times = $_SESSION['cc_times'] + 1;
   $_SESSION['cc_times'] = $cc_times;
}else{
   $cc_lasttime = $cc_nowtime;
   $cc_times = 1;
   $_SESSION['cc_times'] = $cc_times;
   $_SESSION['cc_lasttime'] = $cc_lasttime;
}
if (($cc_nowtime - $cc_lasttime)<5){
   if ($cc_times>=10){
       header(sprintf("Location: %s",'http://127.0.0.1'));
       exit;
}
}else{
   $cc_times = 0;
   $_SESSION['cc_lasttime'] = $cc_nowtime;
   $_SESSION['cc_times'] = $cc_times;
}
?>


这段代码的作用:
同一会话,如果在5秒钟内,刷新了10次就将响应指向到本地服务(http://127.0.0.1)

vingoo 发表于 2017-3-19 00:22:03

防刷新防CC攻击PHP代码:
$P_S_T= $t_array + $t_array;
$timestamp = time();

session_start();
$ll_nowtime = $timestamp ;
if (session_is_registered('ll_lasttime')){
$ll_lasttime = $_SESSION['ll_lasttime'];
$ll_times = $_SESSION['ll_times'] + 1;
$_SESSION['ll_times'] = $ll_times;
}else{
$ll_lasttime = $ll_nowtime;
$ll_times = 1;
$_SESSION['ll_times'] = $ll_times;
$_SESSION['ll_lasttime'] = $ll_lasttime;
}
if (($ll_nowtime - $ll_lasttime)<3){
if ($ll_times>=5){
header(sprintf("Location: %s",'http://127.0.0.1'));
exit;
}
}else{
$ll_times = 0;
$_SESSION['ll_lasttime'] = $ll_nowtime;
$_SESSION['ll_times'] = $ll_times;
}   


主要功能:在3秒内连续刷新页面5次以上将指向本机 http://127.0.0.1。3表示时间间隔,5表示刷新次数。以上代码可以放在每个PHP文件的包含文件中,这样每页均可起到防CC的效果。里面的参数也可以根据您自己的情况进行一些相应的设置。
页: [1]
查看完整版本: 防CC攻击常用方法及源码分享