IP flooding apesar do mod_evasive?

3

Eu tenho um servidor Apache 2 executando PHP5, prefork MPM, eacelceler e modevasive.

Meu servidor às vezes cai, aparentemente devido a inundações de alguns IPs. Pelo menos isso é o que eu entendo de correr netstat. Eu recebo coisas assim:

tcp        0      0 my.ip.is.here:80        88.160.126.117:55864    ESTABLISHED
tcp        0      0 my.ip.is.here:80        88.160.126.117:57073    ESTABLISHED
tcp        0      0 my.ip.is.here:80        88.160.126.117:56989    ESTABLISHED
tcp      639      0 my.ip.is.here:80        88.160.126.117:57813    ESTABLISHED
tcp      639      0 my.ip.is.here:80        88.160.126.117:57695    ESTABLISHED
tcp        0      0 my.ip.is.here:80        88.160.126.117:57274    ESTABLISHED
tcp      602      0 my.ip.is.here:80        80.214.0.41:51131       ESTABLISHED
tcp        0      0 my.ip.is.here:80        88.160.126.117:57513    ESTABLISHED
tcp        0      0 my.ip.is.here:80        77.88.31.248:64551      ESTABLISHED
tcp        0      0 my.ip.is.here:80        88.160.126.117:55131    ESTABLISHED
tcp      639      0 my.ip.is.here:80        88.160.126.117:57565    ESTABLISHED
tcp      357      0 my.ip.is.here:80        209.85.228.92:51134     ESTABLISHED
tcp      639      0 my.ip.is.here:80        88.160.126.117:57817    ESTABLISHED
tcp        0      0 my.ip.is.here:80        88.160.126.117:53902    ESTABLISHED
tcp        0      0 my.ip.is.here:80        88.160.126.117:57060    ESTABLISHED
tcp      718      0 my.ip.is.here:80        82.252.2.103:49506      ESTABLISHED
tcp      639      0 my.ip.is.here:80        88.160.126.117:57553    ESTABLISHED
tcp      639      0 my.ip.is.here:80        88.160.126.117:57692    ESTABLISHED
tcp        0      0 my.ip.is.here:80        88.160.126.117:55571    ESTABLISHED
tcp      639      0 my.ip.is.here:80        88.160.126.117:57762    ESTABLISHED
tcp      639      0 my.ip.is.here:80        88.160.126.117:57771    ESTABLISHED
tcp     1750      0 my.ip.is.here:80        41.105.112.207:19940    ESTABLISHED
tcp        0      0 my.ip.is.here:80        88.160.126.117:57187    ESTABLISHED
tcp        0      0 my.ip.is.here:80        88.160.126.117:56782    ESTABLISHED
tcp      668      0 my.ip.is.here:80        86.72.212.166:64263     ESTABLISHED
tcp      750      0 my.ip.is.here:80        88.160.126.117:57681    ESTABLISHED
tcp        0      0 my.ip.is.here:80        88.160.126.117:56741    ESTABLISHED

, então parece que 88.160.126.117 está inundando meu servidor. (É um IP diferente toda vez, então não posso bloqueá-lo manualmente) Mod_evasive registra esse IP em seu log, mas não para de todo!

Mesmo quando eu reinicio o apache2, a rede, o servidor fica preso novamente, atingindo a configuração maxclients.

Alguma ideia do que eu possa fazer?

Minha configuração modevasiva é:

DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 20
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
    
por Eric 11.11.2011 / 14:51

1 resposta

1

Limites baixos

Seus limites podem ser muito baixos. Seu limite é 20 / segundo. Se o atacante estiver atingindo abaixo desse limite, o bloqueio não será acionado.

Se o recurso que eles acessam for de processamento intensivo (por exemplo, função de pesquisa), uma taxa de solicitação muito baixa poderá derrubar o sistema.

Você pode ter que ajustar os blocos com base nos padrões de ataque.

Existe um script test.pl incluído no mod_evasive, experimente e veja se você pode acionar um bloco.

URL de destino

Além disso, qual é o acesso IP? Tente ativar o status do servidor no Apache e verifique o URL. Isso permitirá que você saiba se eles estão atingindo a mesma página ou páginas diferentes. Isso permitirá que você saiba se o PageCount do SiteCount é mais apropriado.

Verifique o IP nos seus registros e veja a que taxa eles estão se conectando. Use isso para encontrar os limites. Observe os limites são por criança. Não há garantia de que eles atingirão o mesmo processo-filho.

Inundações rápidas

Por fim, vi inundações em que o atacante faz dezenas de conexões de uma só vez. Neste caso, dos evasive pode não ter tempo para responder. Ele bloqueará solicitações futuras, mas se 100 já tiverem sido feitas, é tarde demais. Nesses casos, use o recurso do mod_dosevasive para chamar o iptables e fazer uma queda completa no firewall.

MaxRequestPerChild

Qual é a configuração MaxRequestPerChild do seu Apache? A taxa limitando é em uma base por criança. Eu tenho visto casos em que MaxRequestPerChild é muito baixo para permitir que o mod_evasive funcione. Normalmente não é um problema, mas uma área para verificar.

    
por 02.01.2012 / 17:55