[FUGSPBR] Default.ida -> como barrar?

Herbert G. Fischer herbert em widesoft.com.br
Ter Set 11 10:52:49 BRT 2001


Dica do site ApacheBrasil

Como se livrar do CodeRed ?

Mesmo o Apache sendo imune aos ataques do CodeRed, ele enche os logs de
acesso, causando um certo incômodo. Mas como se livrar dele?

Mostraremos um exemplo de como separar o log normal de audiência das
tentativas de acesso vindas do CodeRed. E também, apenas para efeito de
demonstração, vamos ser mal-educados com o CodeRed, respondendo uma mensagem
especial pra ele, veja:

Em primeiro lugar, precisamos analisar uma linha de log do CodeRed para
podemos fazer o match correto. Aqui segue um exemplo:

200.23.231.14 - - [12/Aug/2001:13:46:01 -0300] "GET
/default.ida?XXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%u9090%u6858%ucbd3%u7801%u9
090%
u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9090%u9090%u8190%u00c3%u0003%u8b0
0%u5
31b%u53ff%u0078%u0000%u00=a  HTTP/1.0" 400 332 "-" "-"

Todas as requisições são bem parecidas, pelo menos ate antes da Query
String. O CodeRed SEMPRE tenta pegar a URI /default.ida, com uma Query
String gigante. Com isso conseguimos isolá-lo criando uma variável no apache
utilizando o comando SetEnvIf:
     SetEnvIf Request_URI ^/default\.ida.* CodeRed=yes

Traduzindo para o Português, isso quer dizer: Crie a variável "CodeRed", com
valor "yes", se a URI do request começar com "/default.ida". Lembrando que
para esta linha precisa estar dentro do conf/httpd.conf, na parte de server
config.

Com isso conseguimos separar por uma variável de ambiente do Apache e
podemos até criar um log especial para as tentativas de CodeRed, pegando
apenas o IP e a data do log. Criaremos entao um LogFormat chamado Codered, e
fatiaremos o log em dois, um com a audiência normal, sem CodeRed, e outro
apenas com os IPs e datas de tentativas do worm:
     LogFormat "%h %t" CodeRedLog
     CustomLog logs/access_log combined env=!CodeRed
     CustomLog logs/codered_log CodeRedLog env=CodeRed

Nesse exemplo estamos supondo que o log de audiência está no diretório logs/
e chama access_log, e está sendo usado o LogFormat combined, que vem no
httpd.conf.default. O que incluímos é a inversão da variável, ou seja, se
não tiver a variável ele loga no access_log com LogFormat combined, e as
requisições que tiverem a variável ele loga com o LogFormat CodeRedLog no
arquivo logs/codered_log.

E para mostrarmos como podemos responder para o CodeRed, criaremos um
LocationMatch, onde podemos colocar alguns comandos caso a URI solicitada
foi encontrada. Vamos negar as requisições com o "deny for all" e mudaremos
o erro 403 (Forbidden) para uma mensagem para o CodeRed, assim:
<LocationMatch ^/default\.ida.*>
  Deny from all
  ErrorDocument 403 "Go back to hell, CodeRed!!!"
</LocationMatch>



----- Original Message -----
From: "Mauricio Vieira" <mauricio em pituba.unimetro.com.br>
To: <fugspbr em fugspbr.org>
Sent: Tuesday, September 11, 2001 9:17 AM
Subject: [FUGSPBR] Default.ida -> como barrar?


> Saudacoes,
>
> No arquivo /var/log/httpd-error.log do meu servidor de pagina existem
> varias linhas do tipo:
> [Tue Sep 11 08:17:54 2001] [error] [client 200.223.74.85] File does not
exist: /[Meu_DocumentRoot]/default.ida
> O logcheck me mostra todos os dias muitas entradas dessa.
> Tenho funcionando o portsentry que vai barrando os espertinhos que
> tentam minha porta 111 (acho que é uma invasão do WindowMaker, ouvi dizer
> na faculdade), mas não sei como barrar estes infectados com o Code Red
> automaticamente ou avisar o administrador. Lembro que vi em algum lugar um
> script em perl que faria isto (foi aqui?), mas não sei como automatizar a
> resposta. Alguma sugestao?
>
> Obrigado desde já.
>
>
> --
> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
> %% Mauricio Vieira - <mauricio em unimetro.com.br>
> %%
> %% Estudante de Ciencia da Computacao - UFBA
> %%
> %% FreeBSD 4.3
> %%
> %% Estagiario - Equipe de Informatica
> %% Unimed Metropolitana - Salvador
> %% http://www.unimetro.com.br
> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
> ----
> Para sair da lista envie um e-mail para majordomo em fugspbr.org
> com as palavras "unsubscribe fugspbr" no corpo da mensagem.
>

----
Para sair da lista envie um e-mail para majordomo em fugspbr.org
com as palavras "unsubscribe fugspbr" no corpo da mensagem.



Mais detalhes sobre a lista de discussão freebsd