Apache sendo atacado por pedidos sem sentido, como parar?

3

Meu VPS está sofrendo com tentativas de arquivos / diretórios aleatórios que não existem no meu servidor, na ordem de aproximadamente duas vezes por segundo. Presumivelmente, é apenas um bot tentando descobrir se há falhas de segurança em scripts no meu servidor ou se meu servidor pode ser usado como um proxy. As entradas de log são as seguintes:

Log combinado (acesso):

- - - [02/Mar/2011:14:10:18 +0000] "GET http://ad.xtendmedia.com/st?ad_type=iframe&ad_size=728x90&section=1697270 HTTP/1.0" 403 204 "http://www.findthemovies.net/" "Mozilla/4.0 (Windows; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"

Registro de erros:

[Wed Mar 02 14:10:18 2011] [error] [client 61.139.105.162] client denied by server configuration: /var/sites/***/public/st, referer: http://www.findthemovies.net/

Os pedidos vêm de referências aleatórias para endereços IP aleatórios, portanto não há nenhum bloqueio específico de IPs que pareça ser capaz de fazer. Não há nenhum script instalado que eles possam abusar e não há nenhum proxy ativado no meu servidor, mas a principal preocupação é que essas solicitações constantes estão usando recursos e diminuindo as solicitações genuínas para meus sites.

Existe alguma maneira de bloquear essas solicitações, por meio de identificá-las, impedi-las de serem processadas pelo Apache e usar todos os recursos atribuídos a ela? (Estou usando o Prefork, então, obviamente, o volume de solicitações inicia processos do Apache e usa clientes e recursos).

    
por WheresWardy 02.03.2011 / 15:16

3 respostas

1

Você pode usar uma ferramenta como denyhosts ou fail2ban - eles combinam padrões nos arquivos de log e executam comandos baseados nesses padrões. Você pode bloquear com tcpwrappers simples (hosts.deny / allow) ou disparar as regras de firewall à vontade.

    
por 02.03.2011 / 15:19
1

Ou talvez você poderia usar o RewriteRules em seu host virtual, que filtra as coisas apropriadas e retorna um redirecionamento final para a disneyland, o que poderia incomodar os bots (se eles aceitarem o redirecionamento, eles farão o download da disneyland e eles estarão ocupados por um tempo):

RewriteEngine On
RewriteCond [apache constant] [yourrewritecond] [OR]
RewriteCond [apache constant] [yourrewritecond] [OR]
RewriteCond [apache constant] [yourrewritecond] [OR]
RewriteCond [apache constant] [yourrewritecond] [OR]
...
RewriteCond [apache constant] [yourrewritecond]
RewriteRule (.*) http://disneyland.com$1 [QSA,R=301,L]
    
por 03.03.2011 / 19:36
1

Você poderia instalar o HAProxy na porta 80 da sua interface DMZ (e ter o back-end do Apache em execução na interface LAN ou localhost) e criar algumas regras de ACL que tarpitem as conexões quando elas corresponderem (ou não corresponderem ) certos critérios de caminho / cabeçalho / domínio.

O benefício de um tarpit é que ele desacelera os bots e evita que (a maioria deles) faça chamadas consecutivas.

    
por 03.03.2011 / 19:57