Header Ads

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

Den Rise / Shutterstock. com

mod_evasive é um módulo do Apache que ajuda a defender seu servidor contra ataques de força bruta e negação de serviço. A configuração do 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 o número de solicitações simultâneas que um cliente pode fazer em um determinado período de tempo. Outras solicitações serão bloqueadas por um período após o limite ser excedido.

Instalando mod_evasive

As etapas de instalação variam dependendo da distribuição do seu sistema operacional e da versão do Apache. Para a combinação mais popular do Apache 2.4 em um sistema baseado em Debian, use as seguintes etapas. As instruções para compilar a partir do código-fonte também são fornecidas no repositório do projeto.

 atualização do apt apt install libapache2-mod-evasive 

As instalações via apt irão habilitar o módulo automaticamente.

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

 apachectl -M | grep evasive 

Você deve ver o nome do módulo exibido se ele estiver ativo.

Definição das configurações de bloqueio

O arquivo de configuração mod_evasive geralmente pode ser encontrado em /etc/apache2/mods-enabled/evasive. conf. Ele usa o mesmo formato que outros arquivos de configuração do Apache. Uma referência completa pode ser encontrada na documentação do mod_evasive.

Aqui está um exemplo de arquivo de configuração com várias personalizações:

 < IfModule mod_evasive20.c > DOSPageCount 5 DOSSiteCount 10 DOSPageInterval 1 DOSSiteInterval 2 DOSBlockingPeriod 300 DOSEmailNotify usuário@example. com < / IfModule > 

Publicidade

mod_evasive distingue entre solicitações de uma página e solicitações de um site. Você pode definir esses dois fatores de bloqueio independentemente um do outro. Este exemplo bloqueará clientes que solicitam o mesmo URI cinco vezes em um intervalo de um segundo. Além disso, um bloqueio será imposto aos clientes que solicitarem mais de dez URIs de um único site em um intervalo de dois segundos.

Quando qualquer um dos limites for excedido, o cliente será impedido de fazer outras solicitações por um período de cinco minutos (300 segundos). mod_evasive enviará um e-mail para user@example. com 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. Defina a configuração DOSSystemCommand, usando% s para denotar o endereço IP bloqueado:

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

Lista de permissões de IPs conhecidos

mod_evasive oferece suporte a uma lista de permissões de IPs conhecidos para ajudar no desenvolvimento e nos testes. Os desenvolvedores às vezes podem criar grandes volumes de solicitação enquanto trabalham em um servidor, intencionalmente ou não.

Use a configuração DOSWhiteList para especificar os intervalos de endereços IP a serem ignorados. Os limites não serão aplicados a nenhum desses endereços.

 DOSWhiteList 127.0.0.1 DOSWhiteList 192.168.0. * 

Como funciona?

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

Publicidade

Um bloqueio ocorre quando um URI ou site aparece na tabela de hash do IP &’ s com maior frequência do que você permitiu. Isso resulta no envio de um código de status 403 de volta ao cliente. O status é a única resposta que o cliente receberá, minimizando os recursos do servidor necessários para lidar com solicitações consideradas espúrias ou maliciosas.

Assim que um limite é atingido, o cliente deve aguardar o DOSBlockingPeriod especificado antes de fazer outra solicitação bem-sucedida. Tentar novamente durante o período de espera resulta na imposição de um bloqueio ainda mais longo. Outros endereços IP continuam sendo admitidos normalmente e não devem ser interrompidos pela tentativa de negação de serviço.

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

 DOSHashTableSize 32768 

Testando sua instalação

A melhor maneira de testar o mod_evasive é lançar uma breve enxurrada de solicitações para verificar como o seu servidor responde. Com o mod_evasive ativado corretamente, você deve começar a ver rapidamente 403s e um alerta de e-mail se estiver configurado.

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

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

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

  • -n – O número total de solicitações a serem feitas.
  • -c – O número de conexões simultâneas a serem abertas.

Publicidade

O exemplo acima enviará 1.000 solicitações em lotes de 50.

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

Resumo

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

Como administrador, você pode optar por receber alertas por e-mail quando um novo bloqueio for imposto. Isso o mantém informado sobre ataques em potencial e permite monitorar falsos positivos. Você precisa de uma pilha de e-mail em funcionamento 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 sempre que um IP estiver na lista negra. Esse recurso pode ser usado para sinalizar um usuário de banco de dados, criar um alerta em uma ferramenta de monitoramento de terceiros ou retransmitir o bloqueio para seus outros servidores para proteger partes adicionais de sua infraestrutura.

Nenhum comentário