设为首页收藏本站关注微信<<< 抵制 IE6 人人有责 >>>
搜索
热搜: 活动 交友 discuz
查看: 1860|回复: 3

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

[复制链接]
发表于 2017-3-19 00:18:54 | 显示全部楼层 |阅读模式
  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攻击方法。
回复

使用道具 举报

 楼主| 发表于 2017-3-19 00:20:09 | 显示全部楼层
防CC攻击VB代码:
[Visual Basic] 纯文本查看 复制代码
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地址。
[Visual Basic] 纯文本查看 复制代码
'/*=========================================================================
' * 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


回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-19 00:21:22 | 显示全部楼层
防CC攻击PHP代码
[PHP] 纯文本查看 复制代码
<?php
if (isset($_SERVER)){
    $realip = $_SERVER[HTTP_X_FORWARDED_FOR];
}
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-d  G: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] 纯文本查看 复制代码
<?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)

回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-19 00:22:03 | 显示全部楼层
防刷新防CC攻击PHP代码:
[PHP] 纯文本查看 复制代码
$P_S_T  = $t_array[0] + $t_array[1];  
$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的效果。里面的参数也可以根据您自己的情况进行一些相应的设置。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

QQ|手机版|Archiver|源于生活(个人生活娱乐工作的笔记)css3,html5,学习笔记    

GMT+8, 2024-4-17 02:51 , Processed in 0.093600 second(s), 25 queries .

Powered by Mr.Kevin-ying

© 2004-2015

快速回复 返回顶部 返回列表