V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
h2sky
V2EX  ›  WordPress

一键攻击wordpress

  •  1
     
  •   h2sky · 2013-04-16 03:27:36 +08:00 · 8346 次点击
    这是一个创建于 4245 天前的主题,其中的信息可能已经有所发展或是发生改变。
    本不想传开,会被滥用攻击,随便一个人就可以攻击"普通"的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上的技术大牛们,求解法求指导
    11 条回复    2015-12-04 08:59:22 +08:00
    bigdude
        1
    bigdude  
       2013-04-16 07:29:48 +08:00   ❤️ 1
    h2sky
        2
    h2sky  
    OP
       2013-04-16 11:49:39 +08:00
    @bigdude 已经用nginx限制过咯
    qiuai
        3
    qiuai  
       2013-04-16 12:03:47 +08:00   ❤️ 1
    我不知道你看没看过日志.
    你按15秒,关掉了.服务器上还是在跑.持续一般1-2分钟才能消化完...
    h2sky
        4
    h2sky  
    OP
       2013-04-16 12:17:33 +08:00
    @qiuai 看了日志了很多499 502,服务器还在跑,php-fpm在排队,访问者看到的页面是502
    qiuai
        5
    qiuai  
       2013-04-16 12:21:21 +08:00
    @h2sky 大部分时间,实际上访问者是什么都看不到的,因为服务器基本上都停止响应了.
    能解决这个问题的,一般就是限制内存占用.资源没了,就提示错误了...
    或者就等服务器活过来...
    Cadina
        6
    Cadina  
       2013-04-16 13:17:27 +08:00   ❤️ 1
    你确定是服务器挂了而不是你被firewall block了?
    feiandxs
        7
    feiandxs  
       2013-04-16 14:29:43 +08:00   ❤️ 3
    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
        8
    BOYPT  
       2013-04-16 14:46:42 +08:00   ❤️ 1
    你要根据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
        9
    h2sky  
    OP
       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
        10
    BOYPT  
       2013-04-18 13:50:03 +08:00   ❤️ 1
    @h2sky 20个fpm进程已经不少了,你可以设置fpm的slowlog详细记录,超过10s都算slow了。

    根据slowlog再仔细看瓶颈,有可能是数据库,比如mysql如果没有skip-name-resolve,容易造成反向dns的超时挂起,又或者本机机器名没卸载/etc/hosts的127.0.0.1对应项,也容易因此这类问题,等等。
    abc123ccc
        11
    abc123ccc  
       2015-12-04 08:59:22 +08:00
    我也是觉得 WP 太耗性能了。话说 linode 有 512 内存的机子吗?现在低配版好像是 1G 哦。你在哪里买的 512 内存。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1275 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 23:21 · PVG 07:21 · LAX 15:21 · JFK 18:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.