我预料到了大盘的下挫,但是没有预料到网站会遭受如此强的DDOS攻击,第一次在攻与防的世界中,站在防的一端。这两天和服务器的管理员都聊成了朋友了,疲惫不堪,眼睛都绿了。如果你有耐心看完这篇文章,绝对胜过你在信安实验室呆一周,因为这是一次实实在在的防御! 先说下服务器情况,WIN2000+IIS,无贷款限制,无IIS连接限制,酷睿CPU,CPU上线6%。网站结构基本纯静态HTML+少量PHP。由于CPU有上限,当CPU超负荷工作后,网站就瘫痪掉。
攻击者买了一个域名(我查过域名历史,攻击者买了这个域名后就来攻击我),让所有肉鸡攻访问该域名上的一个网页,该网页的代码很简单。就四个iframe,就是四次对我的网站发送HTTP请求,说得通俗点,就是每个肉鸡刷新4次网页。从凌晨3点多开始攻击,到了我起来的时候9点多就瘫痪了。
这个攻击方式最不好的一个地方,暴露了攻击者的转向域名,因为利用iframe转向,get数据包里会有reffer记录,会指向改转向域名的。寻找服务商的客服,结果是他们也没有办法(其实他们也没想到后来会有多严重)
既然知道对方的转向域名以及攻击方式,我把我的网站的郁闷转向到攻击域名上,也就是说攻击者发送的数据包到我的域名上,我再转给了攻击者,当然这样我的网站也是访问不了,不过攻击者的转向域名的服务器也很快瘫痪了。
我又把域名解析回来,又恢复正常了。不过攻击又改变了攻击策略。重新写了攻击代码,代码如下











这次攻击者更高级了,直接发送GET数据包。为了对付防火墙的过滤方式,攻击者还加上了随机数,用来逃过防火墙的防御。网站又一次瘫痪。客服打电话给我,说我的网站占用资源超高,已经影响到气他用户了,寻求解决。

仔细分析攻击代码,认为这个就是变相的CC攻击,可以通过代码防止攻击者的不断恶意刷新。
找了一个session的防CC代码
session_start();
$allow_sep = "30000";
if (isset($_SESSION["post_sep"]))
{
if (time() - $_SESSION["post_sep"] < $allow_sep)
{
exit("请不要反复刷新");
}
else
{
$_SESSION["post_sep"] = time();
}
}
else
{
$_SESSION["post_sep"] = time();
}
结果其他网站是没有问题了,攻击数据太高,根本无法分辨合理数据还是非合理数据。即使是短时相应,CPU很快就占满了,还是瘫痪了。

没有物理防火墙,这个基本是无法档的住的。最有压迫客服装上物理防火墙。

是不是很寒了,社会就是这样,你不去要求他,他绝对不会为你多做一些事。
我估计他们装的物理防火墙也就是几千块的,档了一刻钟后,服务器还是瘫痪了。

主席说 与人斗其乐无穷
接下去就是我不断改域名转向躲避攻击 攻击者不断改攻击地址
也就网站时好是坏

在网站停运的时候,
有网友骂我是攻击者,(世界就是这么荒唐)
有网友支持我直面攻击。

我也不知道昨天是怎么睡着的,我可以什么都不在乎,但是我的计算机和网站是我最在乎的东西之一。

第二天,和服务商商量,使用更强悍的物理防火墙,但是服务器要转移,原来数据库MYSQL4.0,新的服务器的数据室MYSQL5.0,客服说让我自己来解决,事实上客服也不知道怎么解决。MYSQL4.0转到MYSQL5.0最关键的地方除了部分格式命令不一样外,4.0中的中文到了5.0上就变成乱码了。

第一次数据备份后果然是这个原因。由于数据库是乱码,网站打开超慢。
设置编码备份,
gbk utf-8 gb2331
试了一个又一个都失败。
最后试了latin1编码,竟然乱码正常了!
我想说 latin1 我爱你……

但是网站依旧不正常,查找代码中数据连接设置,把GBK改成了latin1,刷新了几十次后正常了(缓存害的)

小心翼翼把域名解析过来,看着万兆防火墙抵御万兆DDOS攻击。攻击数据包都被扔了。

凤凰涅槃,死而复生!网站正常了!

很好奇,攻击者还会持续几天无用攻击,其实我很想告诉攻击者,一次DDOS攻击罚款5000+,最高可以判刑5年,出来混迟早要还的。

两只眼睛都块睁不开了,或许今晚能够睡个好觉。下午什么如何填简历的讲座也没去,据说腾讯百度要来了。我这想说,暑假我哪都不会去,我只会在上海。

3Q 4 your reading