一键攻击wordpress

2013-04-16 03:27:36 +08:00
 h2sky
本不想传开,会被滥用攻击,随便一个人就可以攻击"普通"的WP博客……
但在自己的博客及hostloc上发布过了,既然已经露点了 那就更赤裸裸点吧 顺便求解法

一个星期前在linode 512安装lnmp上放一个wordpress安装一两个常用插件,打算测试一下nginx的并发链接数,没安装压力测试工具,只是按住F5先试试,结果几十秒后502,一开始还怀疑是不是什么文件损坏,反复测试无果,打开Mg12的博客试试,神奇的事发生了,Mg12的wp也挂了,再继续测试几个常访问的wordpress,没静态的多数都挂了。
有开启wp super cache等静态的WP打开 wp-cron.php、wp-login.php等(与数据库相关)开始按住F5不动
(用apache做服务器的会卡住不会直接502,服务器非nginx的或高配的自测)

测试Mg12等博客用F5几十秒即可502 ^_^!!
测试ifanr用压力测试 并发高点


反复测试,512内存的LNMP在高并发(>250)php-fpm开20个进程开始502
尝试优化,使用memcached、varnish、开启fastcgi cache等,仍然没有太大效果
request_slowlog_timeout日志显示"wp在高并发下"几个文件超时大于90S

现在仅用Nginx 限制了ip并发数
现在在考虑要不要转为jekyll或farbox,虽然习惯了

V2ex上的技术大牛们,求解法求指导
8375 次点击
所在节点    WordPress
11 条回复
bigdude
2013-04-16 07:29:48 +08:00
h2sky
2013-04-16 11:49:39 +08:00
@bigdude 已经用nginx限制过咯
qiuai
2013-04-16 12:03:47 +08:00
我不知道你看没看过日志.
你按15秒,关掉了.服务器上还是在跑.持续一般1-2分钟才能消化完...
h2sky
2013-04-16 12:17:33 +08:00
@qiuai 看了日志了很多499 502,服务器还在跑,php-fpm在排队,访问者看到的页面是502
qiuai
2013-04-16 12:21:21 +08:00
@h2sky 大部分时间,实际上访问者是什么都看不到的,因为服务器基本上都停止响应了.
能解决这个问题的,一般就是限制内存占用.资源没了,就提示错误了...
或者就等服务器活过来...
Cadina
2013-04-16 13:17:27 +08:00
你确定是服务器挂了而不是你被firewall block了?
feiandxs
2013-04-16 14:29:43 +08:00
lz实践精神可嘉,无意嘲笑。
至少知道尝试读取日志,分析配置文件,精神挺好,思路也对,可惜结论错误。
本来都不想多说,考虑到我也是别人带过来的,还是简单说下。
极小型的wordpress网站,包括搭建在什么256M vps,512M vps之类的上面的,一般的确不会做太多设置,让php无限超时跑下去的也有。别说你持续F5了,随便普通访问都可能造成各种错误。
稍微好一点的,一个防火墙,简单的规则设置,就可以屏蔽你的持续访问行为。几万并发的cc攻击现在防御起来都是小case,何况你一个F5刷新?
你所看到的报错,有的情况是服务器的确错了。但也有相当多的情况,是服务器的防火墙或者规则设置直接给你报。很多管理员比如我也是,不会很有闲心的设置一堆错误页面给攻击者的——直接502,404,403输出或者干脆reset,都可以。
所以确认攻击是否成功,不是直接判断的。

建议你接下来的学习方向是熟悉lnmp配件的php文件设置,包含php.ini和php-fpm.conf,然后是了解nginx下一些常见的模块,比如access key,limit conn,这些都或多或少和安全与攻击方面有一些关系。然后掌握几个常见的iptables规则,网上也有大把的bash脚本可供参考。有了这些,足够你在512m的vps上应付一般的小型CC了,何况你一个F5……
BOYPT
2013-04-16 14:46:42 +08:00
你要根据log看看被挂起的资源瓶颈是哪里。

如果fpm的子进程全部被挂起,这时候ngx就报502 bad gateway;
如果是数据库链接超过,wordpress抛错误,一般是500 internal server error;

注意分辨fpm的log和php的log。

wp-cron是个机制问题,正常情况下对其请求不会有太大的负担,只是php本身运行效率问题。我随手在我们门户网站里面一个子站,在内网里面,跳过了所有前端缓存用ab测了下对wp-cron.php wp-login.php的负载,基本都是Requests per second: 74.50 [#/sec] (mean)这个数值,请求期间fpm所有进程跑满全部CPU。没异常出现,我认为这属于正常情况。

还有你应该微调下ngx的fastcgi的buffer参数等等,默认参数比较容易502。
h2sky
2013-04-16 18:36:50 +08:00
@Cadina 服务器没磐机,不知道499算不算是FW自动断开的

@feiandxs 感谢指导,主要是想说wordpress耗能,我对普通php文件如探针发起几千个并发也可以访问,但是对使用wordpress在并发下则耗资源,导致的502甚至网页显示内存不够。主要是想说wordpress高耗能,“大多数”wordpress用F5即可攻击,php-fpm全在排队等待

@BOYPT 感谢指导,fpm的日志显示的是php-fpm进程不够,php的日志是wp的几个函数超时(设置检测函数超90s为超时) 20个fpm吃了400M内存,不敢再设置更高
BOYPT
2013-04-18 13:50:03 +08:00
@h2sky 20个fpm进程已经不少了,你可以设置fpm的slowlog详细记录,超过10s都算slow了。

根据slowlog再仔细看瓶颈,有可能是数据库,比如mysql如果没有skip-name-resolve,容易造成反向dns的超时挂起,又或者本机机器名没卸载/etc/hosts的127.0.0.1对应项,也容易因此这类问题,等等。
abc123ccc
2015-12-04 08:59:22 +08:00
我也是觉得 WP 太耗性能了。话说 linode 有 512 内存的机子吗?现在低配版好像是 1G 哦。你在哪里买的 512 内存。

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

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

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

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

© 2021 V2EX