Como configurar o mod_evasive para a proteção Apache DDoS

Conteúdo

Gráfico mostrando o símbolo de um cadeado com cores técnicas e gráficos

mod_evasive é um módulo Apache que ajuda a defender seu servidor contra ataques de força bruta e negação de serviço. A configuração mod_evasive oferece uma rede de segurança para detectar agentes mal-intencionados antes que eles comecem a degradar o desempenho do seu servidor.

O módulo vem com vários parâmetros de configuração que permitem definir a quantidade de solicitações simultâneas que um cliente pode fazer em um determinado período de tempo.. Solicitações adicionais serão bloqueadas por um período após o limite ser excedido.

Mod_evasive installation

As etapas de instalação variam dependendo da distribuição do seu sistema operacional e da versão do Apache. Para obter a combinação mais popular do Apache 2.4 em um sistema baseado em Debian, siga os próximos passos. Instruções para a construção da fonte também são fornecidas. no repositório do projeto.

apt update
apt install libapache2-mod-evasive

Instalações via apt habilitar o módulo automaticamente.

Você pode verificar isso usando o apachectl Utilitário:

apachectl -M | grep evasivo

você deve ver o nome do módulo exibido se ele está ativo.

Configurar opções de bloqueio

O arquivo de configuração mod_evasive geralmente pode ser encontrado em /etc/apache2/mods-enabled/evasive.conf. Usa o mesmo formato que outros arquivos de configuração Apache. Você pode encontrar uma referência completa no mod_evasive docs.

A seguir, arquivo de configuração de amostra com várias personalizações mostradas:

<IfModule mod_evasive20.c>
    DOSPageCount 5
    DOSSiteCount 10

    DOSPageInterval 1
    DOSSiteInterval 2

    DOSBlockingPeriod 300

    DOSEmailNotify [email protected]
</IfModule>

mod_evasive distingue entre solicitações de página e pedidos de local. Você pode configurar esses dois fatores de bloqueio independentemente. Este exemplo irá bloquear os clientes que solicitam o mesmo URI cinco vezes em um intervalo de um segundo. O que mais, Os clientes que solicitarem mais de dez URIs de um único site serão bloqueados em um intervalo de dois segundos.

Quando qualquer um dos limites for excedido, o cliente não poderá fazer mais solicitações durante um período de cinco minutos (300 segundos). mod_evasive irá enviar um email para [email protected] notificando que o endereço IP foi bloqueado.

mod_evasive também suporta a execução de um comando de sistema arbitrário quando um limite é atingido. Isso pode ser usado para integrar a ferramenta com seu próprio aplicativo ou firewall para que você possa registrar um bloqueio em seu banco de dados. Selecione os DOSSystemCommand ajustamento, usando %s para indicar o endereço IP bloqueado:

DOSSystemCommand /app/blacklisted_ip.php --ip =% s

Lista de permissões de endereços IP conhecidos

mod_evasive oferece suporte a uma lista de permissões de IPs conhecidos para auxiliar no desenvolvimento e teste. Às vezes, os desenvolvedores podem criar grandes volumes de solicitações enquanto trabalham em um servidor, seja intencionalmente ou não.

Use o DOSWhiteList configurações para especificar intervalos de endereços IP para ignorar. Nenhum limite será aplicado a qualquer um desses endereços.

DOSWhiteList 127.0.0.1
DOSWhiteList 192.168.0.*

Como funciona?

mod_evasive funciona mantendo uma tabela hash de endereços IP e URIs em uma lista negra temporária. O endereço IP e URI são codificados para criar uma chave que pode ser usada para verificar se o cliente solicitou a mesma página antes.

Uma falha ocorre quando um URI ou site aparece na tabela de hash de IP com mais frequência do que o permitido. Isso resulta em um 403 o código de status é enviado de volta para o cliente. O status é a única resposta que o cliente receberá, que minimiza os recursos do servidor necessários para lidar com solicitações consideradas falsas ou maliciosas.

Assim que um limite for atingido, o cliente deve esperar o tempo especificado. DOSBlockingPeriod antes que você possa fazer outra solicitação com sucesso. Se você tentar novamente durante o período de espera, um bloqueio ainda mais longo será imposto. Outros endereços IP continuam a ser suportados normalmente e não devem sofrer interrupções devido à tentativa de negação de serviço.

O módulo pode causar uma penalidade de desempenho em servidores muito ativos. Você precisa registrar cada solicitação e verificar se o IP foi bloqueado ou precisa ser bloqueado. Servidores ocupados com memória suficiente devem aumentar o DOSHashTableSize para permitir uma tabela hash maior na memória. Isso reduz o tempo que leva para pesquisar um IP de entrada em comparação com suas outras solicitações recentes.

DOSHashTableSize 32768

Teste sua instalação

A melhor maneira de testar o mod_evasive é lançar uma pequena enxurrada de solicitações para verificar como o seu servidor está respondendo. Com o mod_evasive ativado corretamente, Eu deveria começar a ver rapidamente 403 e um alerta de e-mail se configurado.

a ab A ferramenta de linha de comando pode ser usada para iniciar conexões em massa:

ab -n 1000 -c 50 http://...

Você deve ajustar o -n e -c parâmetros para se adequar à sua configuração mod_evasive e impacto antecipado do servidor:

  • -n – O número total de solicitações para fazer.
  • -c – O número de conexões simultâneas para abrir.

O exemplo acima irá enviar 1,000 pedidos em lotes de 50.

ab é uma ferramenta poderosa que pode iniciar um verdadeiro ataque de negação de serviço. Certifique-se de ter especificado o endereço do servidor correto antes de enviar solicitações!!

Resumo

mod_evasive é um módulo simples, mas eficaz para evitar que ataques de força bruta afetem o desempenho do seu servidor. Você pode configurar limites por página e por site que se aplicam a cada cliente que tenta se conectar. Se o cliente acabar ultrapassando o limite, você receberá um 403 e você deve ceder a um período de bloqueio temporário.

Como administrador, você pode optar por receber alertas de e-mail quando um novo bloqueio é imposto. Isso o mantém informado sobre possíveis ataques e permite monitorar falsos positivos.. Você precisa de uma pilha de e-mail que funcione no servidor: mod_evasive envia usando o agente de transferência de correio do sistema.

Finalmente, é possível integrar o mod_evasive com outras partes do seu aplicativo executando um comando do sistema toda vez que um IP é colocado na lista negra. Esta capacidade pode ser usada para discar para um usuário do banco de dados, crie um alerta em uma ferramenta de monitoramento de terceiros ou transmita o bloqueio para seus outros servidores para proteger partes adicionais de sua infraestrutura.

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.