如何对付这种单机 slow http 攻击工具?

2014-07-11 10:45:04 +08:00
 leavic
昨晚开始blog就开始不断爆数据库连接错误,我以为只是bluehost正常维护,不过连续12小时都一直这样断断续续的错误或正常,bluehost官方status反馈也没有任何问题,我就想会不会是我自己这边有问题.
进wordpress后台看一下统计,才几个小时的时间,请求数量已经是平时一天的3倍以上,看一下access log发现请求几乎全部来自一个日本的IP,refer url指向了一个ddos工具的网址(http://code.google.com/p/slowhttptest/),暂时在cpanel封锁这个IP解决问题.

看了一下攻击工具的原理,要么是发送不完整的http请求,要么是延缓读取服务器响应数据模拟低速网络情况,让服务器保持大量的请求,最终导致服务器资源耗尽.

而且这种攻击不需要很大的资源,一台电脑就足以干掉一个普通的网站.那么,除了被动的封禁IP之外,有没有可能在防火墙或者apache的设置上做什么动作,自动识别并封锁这种请求呢?

BTW:对于这种Shared Hosting,权限很低的有什么办法吗?当然不限于Shared Hosting,自主管理的VPS上该怎么设置也请不吝赐教,谢谢!
5048 次点击
所在节点    问与答
18 条回复
ChiChou
2014-07-11 11:28:05 +08:00
云 WAF 足够对付这种。
RyuZheng
2014-07-11 11:28:11 +08:00
可以试下借助第三方?
DNSpod的安全宝
360网站安全
leavic
2014-07-11 11:33:14 +08:00
@ChiChou
@RyuZheng
看了一下,这些工具都是在DNS上做手脚,分流或者引导DDOS攻击的流量到别的地方?这种防护太容易绕过了,例如这篇文章里提到的做法,改hosts文件就足以完全让DNS分流失效:
https://community.qualys.com/blogs/securitylabs/2012/01/25/how-i-knocked-down-30-servers-from-one-laptop
multiple1902
2014-07-11 11:43:27 +08:00
看了一下论文,貌似这种攻击方式还是咱中国人发明的呢 http://eeweb.poly.edu/faculty/yongliu/docs/cdc04.pdf

我觉得(共享主机上)你能做的事不多,但还是能做一些的。我们首先考虑一下攻击者的攻击目标是什么。

如果攻击者仅仅是尝试产生大量的慢速 TCP 连接,考虑到你这是共享主机,TCP 连接本身并不是针对你的网站的。所以 TCP 层面上的攻击并不会对你造成这么大的影响。

所以说,实际上攻击者是在应用层对你的网站做 DoS,方法是同时产生大量的 HTTP 请求并且保持住,来消耗你的资源。数据库连接错误的原因应该是大量的数据库访问,你注意,一个 PHP 网站访问数据库,说明开始执行你的 PHP 代码了,而你可以改代码,这里你有主动权。

你能做什么呢?你可以避免产生无端的数据库访问。比如你可以在 PHP 代码的开头加上检查连接 IP 的代码(这个应该不复杂),把特定的 IP 屏蔽掉,也就是遇到这样的 IP 就直接停止执行。也可以把网站静态化,使得常见的操作(比如读文章、读首页)不需要访问数据库(而是访问缓存文件)。这种情况下需要访问数据库的操作就不多了,而如果还有哪个 IP 短时间产生了大量的数据库访问,那它一定有问题。

至于封禁,一种做法是在 CPanel 里面封 IP(我不确定它有没有提供 API 使得这个过程可以自动完成)。服务器是 Apache 的话,看看能不能通过写 .htaccess 文件来实现阻止特定 IP 访问。

我想起来了,还有个方法是把你的网站放到 CloudFlare 这样的 CDN 后面。CloudFlare 在安全方面也会做一些检查,帮你过滤掉奇怪的请求,速度方面它会缓存很多内容,应该会有帮助。
leavic
2014-07-11 11:53:35 +08:00
@multiple1902 是的,我在cPanel封掉IP之后立刻就去装WP的缓存插件了,以前因为流量小一直没在意,觉得反正一天才200人看,缓存也没啥意思.
从slowhttptest这个工具的使用方法来看应该是针对我网站的,因为是根据url请求的.这种攻击方式对攻击者的资源要求极低,几乎人人都能做,不过基本上也都是个人攻击,所以单个封IP难度不大.

可是万一如果有人利用僵尸网络,在每台机器上都用这工具来做slow http攻击,那封IP就可以累死管理员了,而且以后要不要解封都是个很痛苦的决定,因为可能就是个中毒的普通用户.
所以我希望的方法是,能不能利用iptables之类的基础防火墙工具,智能的识别这种攻击并进行封锁.可能难度有点大...
RyuZheng
2014-07-11 12:36:11 +08:00
好多人都用WordPress这种PHP网站来练手攻击,很常见也很好试,随便找一个就有了,总有试成功的。我觉得其实可以换一下,我也放弃WordPress
RyuZheng
2014-07-11 12:37:15 +08:00
额,我的意思是说一般的PHP博客,其实现在很多其他类型
Livid
2014-07-11 12:39:36 +08:00
服务器的 Apache 版本太旧?
bobopu
2014-07-11 13:01:16 +08:00
@leavic 我倒是有个类似的工具,忘记叫啥了,下午睡起后给你翻着找一下。
leavic
2014-07-11 13:18:50 +08:00
@Livid Apache version 2.2.27
Apache其实没挂,是mysql被大量的页面内请求拖挂了,当初要做了静态化缓存其实也没事.
mengskysama
2014-07-11 13:36:19 +08:00
在前端限制每个IP的连接数
ChiChou
2014-07-11 13:51:28 +08:00
@leavic 所以你需要对访客隐藏真实 IP 地址
leavic
2014-07-11 13:57:38 +08:00
@ChiChou 你这样一说我倒是想起来了,其实我虚拟主机上一个IP又不是只有我一个网站,如果是攻击全服务器的,直接改Host指向IP我可能真没办法,但他要攻击我单个网站还真就必须用域名,安全宝这种DNS防护似乎还真能起点作用.
bobopu
2014-07-11 16:20:24 +08:00
@leavic 哈,抱歉睡过趟了。是一个WP的插件Wordfence,官方在这http://www.wordfence.com/
这个插件功能很强大不仅可以批量添加ip黑名单,更可以直接封锁来自某个城市的ip,当其他Wordfence用户被攻击时自动将攻击ip记录并同步至全球Wordfence用户达到云拦截的效果,还可以设置某ip在具体时间内的访问次数等。更有独家的猎鹰引擎,开启后可全静态化wp,官方宣传是可以把wp的打开速度提升30至50倍。别着急,现在购买,还有更多功能,例如对wp目录执行病毒和安全扫描,并且帮你修复,检查异常的wp文件等等,赶快拿起电话订购吧。。。
PS:基础功能免费,高级功能只需3.9刀哦,还不及你的一双袜子钱。。。
leavic
2014-07-11 19:33:30 +08:00
@bobopu premium账户一年20多美元,哪里有3.9美元啊....
bobopu
2014-07-11 21:10:36 +08:00
@leavic 啊哈,你也可以用免费版本哦,基础功能应该可以满足你。。再说20刀也不贵么,省下几盒杜蕾斯就出来啦,赶快拿起电话订购吧。。
oott123
2014-07-12 09:13:17 +08:00
@leavic IP 白名单,仅允许 CloudFlare 的 ip 访问贵站。
msg7086
2014-07-12 16:30:19 +08:00
把结构换成event模型可能会比较有效,不过共享主机可定制性太差了…

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/122100

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX