斌、朵♫恋 » B20061026 » 。◕‿◕。2010-11-27。◕‿◕。
不知道是谁把我的那个空间给挖出来了。根据统计,很有可能是蜘蛛犯的错。那个空间最有价值的就是一篇日志就是去年自己开发的一份源码,免费共享出来了。可是TAG自动扑捉到了文章核心的关键字及一些介绍的关键字。也许就是自己写的那个U盘加密,被蜘蛛给找出来的吧。我都无奈了~技术虽然给了我资本,可是这次可害苦我了,本来一些文章只是发泄写写,并不想让她知道。现在给我的感觉就像死了千年的干尸又被人他妈的挖出来了。又像Police对着thief说:这就是你在犯罪现场的指纹。这样的感觉真的很不爽。别让我知道是谁挖出来的。让我知道了最好祈祷别让我找到那个人的计算机。找到的话,我就让那计算机变干尸,让thief把police深埋地壳中心。
昨天晚上死活都睡不着,看天RSS提示BSS里又人求助,一看问题是涉及到了CC攻击。CC攻击在我眼里真的是很低级的手法。一般只有网络上的菜鸟拿着那位大神开发出来的工具到处ChallengeCollapsar。因为睡不着,就顺手提示别人下处理方法。然后就这么看着电脑发呆到快1点~突然想到这个空间一般用起来没有什么问题,可是进行比较耗资源的行为的时候,经常会出现Service Unavailable。想想不对头啊,我这站点虽然有些网虫们无聊打酱油路过,可是访问量还没有带服务器过载的程度啊。于是乎,我就写了个小程序加载在站点上面。也许还有打酱油的童鞋们经过的时候,发现自己也有被CC攻击的时候,Copy去用。一段被深埋IT安全基层的源码,如果有转载的,就不用标释版权了。由于工作比较忙,就不做成zpi插件了,反正就是一复制,一添加,一加载。即可解决小型僵尸,CC,及DOS手法的攻击。
防御CC攻击的手法有很多,比如说cookie,ip+cookie,session等等,如果是独立主机还可以使用龙盾IIS防火墙之类的服务器防护软件,不介绍其他的软件的原因是不想自己的个人喜欢影响别人的选择,更不想被人误认为广告。现在的小型站点及个人Blog比较多,大多数都是用虚拟主机。独立主机的就可以走人了。这章并没有说独立服务器安全。
我选择的是session,原因呢,就是用session方便,简单,还可以探测攻击者的IP,及屏蔽IP。
<%
Dim CC_Info(4),strInfo,strTemp
If Session("CC_Info") = "" Then
CC_Info(0) = "cclog.txt" '日志文件名
CC_Info(1) = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
CC_Info(2) = Request.ServerVariables("REMOTE_ADDR")
CC_Info(3) = 10 'N秒内禁止刷新当前页面
CC_Info(4) = "badip.txt" 'IP黑名单文件名
Session("CC_Info") = CC_Info(0) &"|"& CC_Info(1) &"|"& CC_Info(2) &"|"& CC_Info(3) &"|"& CC_Info(4)
Else
strInfo = Split(Session("CC_Info"),"|")
CC_Info(0) = strInfo(0)
CC_Info(1) = strInfo(1)
CC_Info(2) = strInfo(2)
CC_Info(3) = strInfo(3)
CC_Info(4) = strInfo(4)
End IfConst chkRefresh = 1 '0关闭防刷新
Const chkProxy = 1 '0关闭代理验证
Const chkBadIP = 1 '0关闭IP黑名单If Session("BadIP") = "" Then
strInfo = ReadFile(CC_Info(4))
If strInfo = "" Then strInfo = "chinavb.net"
Session("BadIP") = strInfo
Else
strInfo = Session("BadIP")
End If'/*第一层判断,N秒内禁止刷新*/
If chkRefresh = 1 Then
If Session("RefreshTime")="" Then
Session("RefreshTime")=Now()
Else
If DateDiff("s", Session("RefreshTime"), Now()) < CInt(CC_Info(3)) Then
Response.Write("系统繁忙,请稍候再试!错误代码001")
Response.End()
Else
Session("RefreshTime")=Now()
End If
End If
End If'/*第二层判断,代理禁止查看*/
If chkProxy = 1 Then
If CC_Info(1) <> "" Then
If InStr(strInfo,CC_Info(1)) = 0 Then
strTemp = CC_Info(1) & vbCrLf
If InStr(strInfo,CC_Info(2)) = 0 Then
strTemp = strTemp & "[" & CC_Info(2) & "]" & vbCrLf
End If
SaveLog CC_Info(4),strTemp
strInfo = strInfo & strTemp
Session("BadIP") = strInfo
End If
'记录CC攻击日志
SaveLog CC_Info(0),CC_Info(1) & "["& CC_Info(2) & "]" & Now() &vbCrLf
Response.Write("系统繁忙,请稍候再试!错误代码002")
Response.End()
End If
End If'/*第三层判断,IP黑名单禁止查看*/
If chkBadIP = 1 Then
If InStr(strInfo,CC_Info(2))>0 Then
Response.Write("系统繁忙,请稍候再试!错误代码003")
Response.End()
End If
End If'ForReading=1,ForWriting=2,ForAppending=8
Function SaveLog(filename, filecontent)
On Error Resume Next
Dim fso, thisfile
filename = Server.MapPath(filename)
Set fso = CreateObject("Scripting.FileSystemObject")
If Err <> 0 Then
Response.Write("写入文件"&filename&"失败,可能您的系统不支持FSO!")
Response.End()
End If
Set thisfile = fso.OpenTextFile(filename, 8, True)
thisfile.write (filecontent)
thisfile.Close
Set fso = Nothing
End FunctionFunction ReadFile(filename)
On Error Resume Next
Dim fso, thisfile
Set fso = CreateObject("Scripting.FileSystemObject")
If Err <> 0 Then
Response.Write("读取文件"&filename&"失败,可能您的系统不支持FSO!")
Response.End()
End If
Set thisfile = fso.OpenTextFile(Server.MapPath(filename), 1, True)
ReadFile = thisfile.ReadAll
thisfile.Close
Set thisfile = Nothing
Set fso = Nothing
End Function
%>
这样会生成CCLog.txt,它的记录格式是:真实IP [代理的IP] 时间,看看哪个真实IP出现的次数多,就知道是谁在攻击了.将这个代码做成Conn.asp文件,替代那些连接数据库的文件,这样所有的数据库请求就连接到这个文件上,然后马上就能发现攻击的人。
使用方法:把上面代码,复制进ASP文件,然后放在服务器上面,然后加载该文件
<!-- #include file="XXXX.asp" -->
发表评论: