Como eliminar todas as solicitações usando mod_security

2

Eu tenho um servidor apache2 com vários sites ativados, incluindo o padrão (000default). O servidor padrão está capturando muitas solicitações de spam que não consomem nada além de consumir largura de banda e preencher o arquivo de log.

Qual seria uma configuração mínima de host virtual que eliminaria todas as solicitações que atingissem o site padrão?

Isto é o que eu tenho até agora usando o mod_security, mas parece não fazer nada além de responder com um 403 para todas as requisições:

<VirtualHost *:80>
    ServerName default.only
    SecRuleEngine On
    SecAction "drop,phase:1"
</VirtualHost>
    
por izb 23.06.2012 / 00:43

4 respostas

2

Consegui corrigir isso com a seguinte configuração:

<VirtualHost *:80>
    ServerName default.only

    SecRuleEngine On
    SecRule REMOTE_ADDR "^\d" drop,phase:1
</VirtualHost>
    
por 23.06.2012 / 13:24
5

A mod_security action deny produzirá uma resposta 403, enquanto drop fechará imediatamente a conexão. Do manual :

soltar

Descrição: Imediatamente inicie uma ação de "conexão próxima" para derrubar a conexão TCP enviando um pacote FIN.

Grupo de Ação: Disruptivo

Exemplo: O exemplo a seguir inicia uma coleta de IP para rastrear tentativas de autenticação básica. Se o cliente ultrapassar o limiar de mais de 25 tentativas em 2 minutos, ele SAIRÁ as conexões subsequentes.

SecAction initcol:ip=%{REMOTE_ADDR},nolog
SecRule ARGS:login "!^$" \
    nolog,phase:1,setvar:ip.auth_attempt=+1,deprecatevar:ip.auth_attempt=20/120
SecRule IP:AUTH_ATTEMPT "@gt 25" \
    log,drop,phase:1,msg:'Possible Brute Force Attack"

Nota

Esta ação é extremamente útil ao responder a ataques de força bruta e negação de serviço, em ambos os casos, você deseja minimizar a largura de banda da rede e os dados retornados ao cliente. Esta ação faz com que a mensagem de erro apareça no log "(9) Descritor de arquivo incorreto: core_output_filter: gravação de dados na rede"

    
por 25.06.2012 / 18:43
4

O Apache precisa lidar com o pedido de alguma forma, não pode simplesmente ignorá-lo. Responder com 403 Forbidden é o mais próximo possível.

    
por 23.06.2012 / 01:09
0

Isso funciona para mim com libapache2-mod-security2 v2.8.0:

<VirtualHost *:80>
  ServerName 1.2.3.4

  CustomLog /dev/null combined

  # https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual
  SecRuleEngine On
  SecAction id:1,phase:1,nolog,drop
</VirtualHost>
    
por 05.07.2017 / 13:47