Consegui corrigir isso com a seguinte configuração:
<VirtualHost *:80>
ServerName default.only
SecRuleEngine On
SecRule REMOTE_ADDR "^\d" drop,phase:1
</VirtualHost>
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>
A mod_security
action deny
produzirá uma resposta 403, enquanto drop
fechará imediatamente a conexão. Do manual :
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"
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.
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>