quinta-feira, 29 de agosto de 2013

Ajudei um amigo nessa última madrugada a mitigar um ataque DDoS HTTP em seus 12 WebServers que rodam com Apache, que por um acaso estavam na última release – 2.2.22 — parabéns ao pessoal por estar preocupado com a versão …
O pessoal, galera sem ter muito o que fazer na madruga, tinha escolhido o pobre coitado para cristo e não adiantou em nada mod_qos, mod_reqtimeout, mod_bandwith, mod_security, mod_antiloris, nada. O jeito foi subir 2 servidores Ubuntu com Varnish, tendo 4GB alocados  só para o produto (malloc Varnish) – cada ubuntu estava com 6GB  – e colocá-los como front-end, quer dizer, respondendo na porta 80. Os apaches passaram a responder em portas acima de 1024 – Pegamos a 8080/TCP – sem problemas porque cada servidor rodava em ips diferentes.
Como o ambiente dele é virtual, a instalação correu numa boa. Ele estava desesperado, então partimos para o velho e conhecido apt-get install varnish. Tudo instalado em menos de 2 minutos, vamos à configuração.
Colocamos em cache todos os objetos estáticos – jpeg,jpg,css,html,txt, jsp – sem muitos ajustes ou tuning de cache, time ou POST. O importante era colocar o Varnish no ar e ver com o comando varnishhist quais objetos estavam sendo cacheados . Vejam na imagem abaixo que o que tem um | é que o servidor, o varnish, está respondendo, em resumo objetos cacheados, e em # objetos não cacheados pelo varnish.
 O load dos Varnishs não passava de 0.4, já o dos servidores Apache, que sempre ficava na casa dos 2.2 e no momento do ataque estavam em 45, caiu para 0.5 – O varnish é animal.
Vejam que foi feita uma simples configuração para o Varnish, nada de controle de purge, banning ou a instalação do security.vcl, que é considerado por alguns o Varnish WAF – exagero.
Uma solução ideal para este ambiente será a substituição dos 12 apaches por 4 nginx – sim, isso mesmo, o nginx é muito superior em diversos aspectos, principalmente para otimização e performance quanto ao PHP, chegando ao ponto de necessitar, em muitos dos casos, de 1/4 dos recursos que são necessários para rodar um apache. Mas cuidado, cada caso é um caso e vc não pode tomar isso como regra absoluta e imutável.
E como front-end ele deverá colocar 2 varnish, só para matar o spof – ponto único de falha, respondendo na TCP/80.
Ponto importante - o Varnish é um servidor de Cache, então não achem que ele irá mitigar todo e qualquer ataque aos seus servidores WEB – ele não foi feito para isso e o security.vcl ajuda, mas não resolve, até porque, não há segurança 100%

Fonte - Coruja de TI

0 comentários:

Postar um comentário

Subscribe to RSS Feed Follow me on Twitter!