05.22.12 12:56:06

Rui Cruz

A criar uma web melhor desde 2003

Como o WordPress pode ajudar no overload de um servidor

Por Rui Cruz 23.09.2011 00:49:07 COMENTA ESTE ARTIGO!

Como o WordPress pode ajudar no overload de um servidor

Como dono do Tugaleaks tenho um objetivo: garantir a segurança do meu servidor. Constantemente recebo ataques e tenho IPs bloqueados. mod_security, mod_noloris, mod_reqtimeout e outros são ferramentas do dia-a-dia que ao não usar, deixava todos os meus negócios estancados, dada a complexidade e notoriedade que este e outros sites têm.

 

O problema

Há cerca de três semanas vi um ataque bastante bom e rápido: o meu servidor com loads de 30 e memória a 100% em menos de 20 segundos. Obviamente que fiquei em pânico e pus-me logo de htop aberto a vasculhar a coisa. Nada. Nadinha de nada. Achei grave, tendo em conta que o htop, para quem não conhece, detalha muito melhor que o comando top. Decidi então investigar os logs.
Os logs eram compostos por pedidos HEAD a um site com o URL a terminar em /?s=#### onde #### ernm palavras random. E depressa cheguei ao WordPress como o causador do problema. Atenção que para já indico não ser um problema totalmente ligado ao WordPress mas bastante facilitado pelo WordPress, uma vez que podemos fazer pesquisas diretas usando o url /?s=termodepesquisa. Por exemplo uma pesquisa de canalmail neste site com link direto vai retornar imediatamente as pesquisas.
E neste campo os plugins de cache também não ajudam pois é algo que também é impossível de travar com pesquisas ao calhas. Então, tinha o servidor há meia hora sob ataque e não sabia como parar.

 

As experiências

Pensei ser do problema do ficheiro.php.kkk onde o kkk é uma extensão não reconhecida que é executado indevidamente no Apache com as configurações defaut (mais info aqui) e logo pensei ser problema do mod_noloris mal configurado.
Nada disso era. Recompilei o apache e já lá iam 50 minutos.
Entretanto alguém num canal da AnonOps (rede Internacional dos Anonymous) deu-me a dica do exploit  CVE-2011-3192 mas não fazia sentido porque tinha feito update do Apache mesmo há minutos e os logs não eram “iguais” aos que daquele exploit produzia.
Até que passado uma hora, finalmente encontrei o bichinho. Chama-se keep alive dos script e foi criado por alguém que depois de conhecer comecei a idolaterar. Scripts para forçar SEO, scripts bastantes interessantes e este keep alive é o culminar de uma awesomeness enorme deste senhor.
O engraçado é o nome, pois keep alive supostamente refere-se ao KeepAlive On/Off do httpd.conf (ficheiro de configurações do Apache) e mesmo com isso Off o problema continua.

 

A solução

Tentei mitigar com PHP Caching e EAccelerator e nada. Entretanto andava a bloquear os IPs todos à mão, e dei mais de 100 blocks numa noite apenas.
Já em contacto com a cPanel team e escalado em menos de 5 horas para os devolopers tirei a ideia que o melhor era bloquear com uma regra de mod_security. E foi o que fiz.

A regra… pois, essa é a parte que vem a seguir.

 

O WordPress ajudou a criar problemas

Se há coisa que não gosto no WordPress é o registo de utilizadores e agora a pesquisa. Não encontrei addons para limitar pesquisas, ou poupar de alguma forma recursos de pesquisa em MySQL.
Por exemplo no SMF a pesquisa pode ser limitada e aí o PHP Caching já ajuda imenso e resolve o problema sem ser preciso mais nada.
Mas o WordPress com a sua pesquisa básica (bastante básica) cria um imenso problema.
Ora, para quem sabe eu vou estar presente este sábado no WordCamp, e pretendo expor a quem quiser ouvir (ou naquelas coisas que dizem ter experts do WordPress) este problema.

 

A regra de ouro para parar este ataque

É simples: com mod_security fazer um block com REQUEST_METHOD, gravar dados num ficheiro, ver se o HEAD count é X em X segundos e usar a lfd para dar block temporário ou definitivo ao IP atacante. E tudo isto, em menos de 1 segundo.
No Domingo após falar com o pessoal do WordPress vou colocar aqui no blog esta regra. No entanto, e antes que comecem a criticar, este não é uma tentativa de hacking geral ou de lançar o pânico na Web Portuguesa (como se fosse eu a fazer isso). É apenas um teste e um problema real com que me deparei. E desta forma, estou a ajudar outros a preveni-lo.
E por não ser uma tentativa de lançar o pânico, a regra vai estar disponível para os ISPs, SPs e donos de servidores através do meu e-mail mail@ruicruz.pt para que não sejam afetados. Basta pedir. No entanto, não a divulgo para ver o que “acontece” no WordCamp.
E faço isto, com consciência, porque sei que o WordPress pode melhorar. Mas como decidiram ignorar (ou pelo menos a não responder) a mensagem que enviei para o security@wordpress.org, aqui fica o meu “agradecimento”.

WordPress, eu amo-te. Mas tu deste-me hora e meia de serviços web offline e muitas mais horas de dor de cabeça. Ainda assim, é o meu CMS preferido.

Rui

Subscreve por e-mail

Indica o teu e-mail:

  1. Rui Cruz diz:

    No ruicruz.pt: Como o WordPress pode ajudar no overload de um servidor:
    Como dono do Tugaleaks tenho um objetiv… http://t.co/1HVaR5hy

  2. Rui Cruz diz:

    Artigo: Como o WordPress pode ajudar no overload de um servidor – http://t.co/CjwpPZdo – #wclx11 – sábado lá nos vemos, para falar disto.

  3. Rui Cruz diz:

    @PauloQuerido @1rst @DuarteLevy jornalistas programadores&amigos da web, tomem lá noticias fresquinhas: http://t.co/CjwpPZdo

  4. Roberto diz:

    RT @ruicruz: Como o WordPress pode ajudar no overload de um servidor http://t.co/yKXlOsp4

  5. RT @ruicruz: Como o WordPress pode ajudar no overload de um servidor http://t.co/iLfRvVl7

  6. RT @ruicruz: Como o WordPress pode ajudar no overload de um servidor http://t.co/cKub8yyw

  7. REDLine PC diz:

    Nunca tinha pensado nisso, mas tens razão nos pontos que focas, os registos e as pesquisas são pontos a melhorar nas futuras versões do wordpress.

  8. Bastante interessante este artigo.

    Agora depende de casa um a sua utilização, tal e qual como os sistemas operativos freeware. São “oferecidos” e uns utilizam para o bem, outros para brincar e outros para o mal.

    Este tipo de ataque é super stressante,chega a um ponto que a máquina só tem processos inexistentes abertos e que nem um kill faz diferença.

    Já com Cloudlinux, a máquina fica estável, visto que apenas a conta de alojamento fica sobrecarregada.

    Mas é sempre descobrir a causa do problema e chegar à sua solução.

    Por isso aqui fica um agradecimento meu ao Rui Cruz, por ter partilhado o problema e posteriormente a resolução.

  9. Rui Cruz diz:

    @WordCampLx folks, can I meet with some official people from automatic about this? http://t.co/CjwpPZdo if you can arranve it or something.

  10. RT @ruicruz: Como o WordPress pode ajudar no overload de um servidor http://t.co/g13HpuiW

  11. Tomé M. diz:

    Este Rui sabe o que faz…

    De facto este poderá ser um grande problema para sites em WP, pois como sabemos há gente boa e má. Tal como é referido pelo Joni Oliveira.

    Resta agora esperar resposta por parte dos responsáveis do WordPress. Talvez seja mesmo depois no WorldCamp, que saiam as primeiras impressões sobre o assunto.

    Rui, u r a GOD! :)

    P.S. Vejam bem que o dono deste site (Rui Cruz…lol), lança quase sempre ‘boas’ noticias antes de eventos importantes. :)

  12. airdiogo diz:

    Como o WordPress pode ajudar no overload de um servidor http://t.co/yMgR2E9G

  13. [...] – mas também aos webmasters em geral. Ainda ontem no seu site, ruicruz.pt, publicou uma informação referente a um script denominado de keep dead. Escrito em PHP, este script obtém através de uma página web grandes [...]

  14. Rui Cruz diz:

    @PauloQuerido … ok, I will try. btw, hack de wordpress: http://t.co/CjwpPZdo + regra para proteger: http://t.co/iDNVm8ES – convem usares:P

  15. [...] Como o WordPress pode ajudar no overload de um servidor [...]

  16. RT @ruicruz: Como o WordPress pode ajudar no overload de um servidor http://t.co/4t3tgUYq

  17. Rui Cruz diz:

    A recordar no ruicruz.pt: : Como o WordPress pode ajudar no overload de um servidor http://t.co/CvRkqyMO

A tua opinião conta!

Por favor tem em atenção que este blog apoia não só a liberdade de expressão como a transparência da informação. Comentários sem e-mail válido podem ser apagados sem aviso.




Get Adobe Flash playerPlugin by wpburn.com wordpress themes
Subscreve a futuros artigos do meu site.