Problemas com o blog
September 07, 2008 at 20:20Esse final de semana tive uma batalha, batalha contra os spammers. De sexta (05/09) até hoje (07/09) eu estava tentando encontrar uma forma de bloqueá-los, acho que consegui.
Primeiro, um trecho do access_log do apache:
61.139.105.163 - - [06/Sep/2008:15:44:16 -0400] "GET http://www.esavingsnet.com/adscript_contextual.php?addcode=CD2049&bannerid=3377&optionalinfo=&deploy_id=0&landing_id=0 HTTP/1.1" 302 - "http%3A%2F%2Fwww.popflashgames.com%2Findex.html" "Mozilla/4.75 [en] (Win98; U)"
60.168.227.97 - - [06/Sep/2008:15:44:16 -0400] "GET http://ad.yieldmanager.com/pixel?id=79470&t=2 HTTP/1.0" 302 - "http://ad.103092804.com/st?ad_type=iframe&ad_size=728x90§ion=334436" "Mozilla/4.0 (compatible; MSIE 5.0; AOL 5.0; Windows 98; DigExt)"
221.224.78.254 - - [06/Sep/2008:15:44:16 -0400] "GET http://afe.specificclick.net/?l=1212015023&sz=300x250&wr=j&t=j&u=http%3A//www.autoefax.com/best_deals/bestdeals/index.php&r= HTTP/1.0" 200 4736 "http://www.autoefax.com/best_deals/bestdeals/index.php" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727)"
72.52.146.79 - - [06/Sep/2008:15:44:16 -0400] "GET http://ad.yieldmanager.com/imp?Z=0x0&y=29&s=289946&_salt=3097474688&B=2&u=http%3A%2F%2Fwww.vafq.com%2Findex.html HTTP/1.1" 200 6663 "http%3A%2F%2Fwww.vafq.com%2Findex.html" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 2.0.40"
72.52.146.79 - - [06/Sep/2008:15:44:16 -0400] "GET http://ad.adserverplus.com/rw?title=&qs=iframe3%3Fks9PAJpsBABbCBIA%2Eo0FAAIAAAAAAP8AAAAHEAICAAMsnQUActkEAKJNCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgzmzM2z8AAAAAAAAAAAAA4CUp2%2DM%2EAAAAAAAAAAAAAJCf94vwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtAncswPCCwWKJq27l%2Dt%2EpvPxUBCN1rTpsKxzOgAAAAA%3D%2C%2Chttp%3A%2F%2Fwww%2Evafq%2Ecom%2Findex%2Ehtml HTTP/1.1" 200 542 "http%3A%2F%2Fwww.vafq.com%2Findex.html" "Mozilla/4.0 (compatible; MSIE 5.5; Windows 98)"
61.139.105.166 - - [06/Sep/2008:15:44:16 -0400] "GET http://banner.addlvr.com/cpi.jsp?&pvr=84&p=112839&aid=29606&partnerMin=0&ron=on&ronMin=0&cpviw=160&cpvih=600&url=http%3A//www.freeaddictinggame.net/&context= HTTP/1.0" 302 - "http://www.freeaddictinggame.net/" "Mozilla/4.0 (compatible; MSIE 4.01; Windows 98)"
Como minha VPS tem apenas 160MB de RAM, tenho que ficar controlando o consumo de memória, e sexta veriquei que o blog estava muito lento, quase inacessível. Parei o apache, instalei o nginx e o consumo baixou.
Mas o negócio não estava 100% ainda, fui ver os logs e descobri que ele tinha todas aquelas requisições partindo do meu server, então, hoje (07/09), depois de muito pensar para tentar entender o que estava acontecendo e solucionar o problema, fiz um script para testar se era possível usar meu servidor para fazer essas requisições, e descobri que é possível :(
Qualquer pessoa pode abrir uma conexão com um servidor na porta 80 (usando socket por exemplo), e fazer uma requisição assim:
GET http://www.terra.com.br/capa/ HTTP/1.1
Fácil assim, sem dificuldade nenhuma, como é possível ver no log do apache ali em cima, todas as requisições retornam status 302, funcionando normalmente, porém quando troquei para o nginx, a coisa mudou, ficando assim:
221.224.78.234 - - [07/Sep/2008:18:48:53 -0400] 221.224.78.234 "GET http://221.224.78.234:51317/was-pv.dll HTTP/1.0" 502 529 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)" "-"
221.224.78.234 - - [07/Sep/2008:18:48:53 -0400] www.google.com "GET http://www.google.com/ HTTP/1.0" 502 529 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)" "-"
118.248.1.167 - - [07/Sep/2008:18:49:04 -0400] uk.vortal.com "GET http://uk.vortal.com/xml.php?Terms=Jewelry&strict=1&affiliate=lookfree&IP=69.89.12.138&rpp=10 HTTP/1.1" 502 529 "-" "Mozilla/4.0 (compatible; MSIE 4.01; Windows NT 4.0)" "-"
118.248.1.167 - - [07/Sep/2008:18:49:04 -0400] uk.vortal.com "GET http://uk.vortal.com/xml.php?Terms=Jewelry&strict=1&affiliate=woonkrant&IP=69.89.12.138&rpp=10 HTTP/1.1" 502 529 "-" "Mozilla/4.0 (compatible; MSIE 4.01; Windows NT 4.0)" "-"
222.184.123.6 - - [07/Sep/2008:18:49:04 -0400] www.linkbucks.com "GET http://www.linkbucks.com/link/f88c0a49 HTTP/1.0" 502 529 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 5.0; Alexa Toolbar)" "-"
118.248.1.167 - - [07/Sep/2008:18:49:05 -0400] uk.vortal.com "GET http://uk.vortal.com/xml.php?Terms=Jewelry&strict=1&affiliate=woonkrant&IP=69.89.12.138&rpp=10 HTTP/1.1" 502 529 "-" "Mozilla/4.0 (compatible; MSIE 4.01; Windows NT 4.0)" "-"
118.248.1.167 - - [07/Sep/2008:18:49:05 -0400] uk.vortal.com "GET http://uk.vortal.com/xml.php?Terms=Jewelry&strict=1&affiliate=lookfree&IP=69.89.12.138&rpp=10 HTTP/1.1" 502 529 "-" "Mozilla/4.0 (compatible; MSIE 4.01; Windows NT 4.0)" "-"
Status 502, Bad Gateway, o nginx trata esse tipo de requisição de um jeito diferente do apache, que na minha opnião, é muito mais inteligente.
Resolvi procurar como bloquear essas requisições mais explicitamente, deixando claro que essas requisições não eram permitidas. Então configurei o nginx para bloquear requisições que partirem de um host diferente que não o meu.
if ($host !~* ^www\.joeh\.com\.br$) {
return 403;
}
Veremos agora se terei mais problemas com os spammers do mal :)