Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

Olá meus senhores, hoje venho trazer pra vocês 1 tutorial que li a muito tempo atrás e me ajudou muito. O tutorial não é meu, mas vejo que muita gente, muita gente mesmo não conhece esse módulo do apache, então achei válido trazer pra comunidade. Espero que ajude alguém!!

O módulo que venho apresentar a vocês é o mod_evasive do Apache.
 

Sobre ele:
 

Spoiler

 

O mod_evasive no Apache oferece proteção contra ataque de DDoS no CentOS 6 e 7, UBUNTU e DEBIAN.
O módulo mod_evasive Apache, ajuda a proteger contra ataques DDoS (negação de serviço distribuída) e força bruta no servidor da web Apache. Ele pode fornecer ações evasivas durante ataques e relatar abusos por meio de recursos de email e syslog. O módulo funciona criando uma tabela dinâmica interna de endereços IP e URIs, além de negar qualquer endereço IP único de qualquer um dos seguintes itens:

[+] Solicitando a mesma página mais de algumas vezes por segundo
[+] Fazendo mais de 50 solicitações simultâneas no mesmo segundo
[+] Fazendo solicitações enquanto estiver temporariamente na lista negra

Se alguma das condições acima for atendida, uma resposta 403 é enviada e o endereço IP é registrado. Opcionalmente, uma notificação por email pode ser enviada ao proprietário do servidor ou um comando do sistema pode ser executado para bloquear o endereço IP.

 


Instalando o mod_evasive:

 

Spoiler

Nesta seção, instalaremos os pacotes necessários para o funcionamento do mod_evasive e finalmente instalaremos. Inicialmente necessitamos instalar o repositório yum EPEL (Pacotes Extra para Enterprise Linux) no servidor. Execute o seguinte comando para instalar e ativar o repositório EPEL no seu servidor: Inicialmente necessitamos instalar o repositório yum EPEL (Pacotes Extra para Enterprise Linux) no servidor. Execute o seguinte comando para instalar e ativar o repositório EPEL no seu servidor:

No CentOS 7:




sudo rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm


No CentOS 6:




sudo rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm


Debian/Ubuntu:
 




sudo apt-get install apache2-utils


Vamos verificar se o repositório EPEL está ativado usando:
 




sudo yum repolist

Se ativado, você verá o seguinte repositório listado na saída:
 




epel/x86_64 Extra Packages for Enterprise Linux 7 -- x86_64


Agora, vamos proteger os pacotes base do EPEL usando o yum plugin protectbase .




sudo yum instala o yum-plugin-protectbase.noarch -y


O objetivo do plug-in protectbase é proteger certos repositórios yum de atualizações de outros repositórios. Pacotes nos repositórios protegidos não serão atualizados ou substituídos por pacotes em repositórios não protegidos, mesmo que o repositório não protegido tenha uma versão posterior.
Agora estamos prontos para instalar o módulo mod_evasive. Execute o seguinte comando para instalá-lo:

CentOS 6 e 7:

 

Spoiler

 







sudo yum instal mod_evasive -y

Verificando a instalação
Agora que o mod_evasive está instalado, vamos verificar se o arquivo de configuração foi instalado e se o módulo está sendo carregado.

Durante a instalação, o arquivo de configuração mod_evasive /etc/httpd/conf.d/mod_evasive.conf foi adicionado.
Para verificar esta execução:








sudo ls -al /etc/httpd/conf.d/mod_evasive.conf

A saída deve ser semelhante a:







-rw-r--r-- 1 root root 3473 Jul 01 05:41 /etc/httpd/conf.d/mod_evasive.conf


Por padrão, a seguinte linha LoadModule será adicionada à parte superior do arquivo de configuração mod_evasive.conf.
Abra o arquivo e adicione a linha, se ainda não estiver presente.

A linha abaixo informa ao servidor da web Apache para carregar e usar o módulo mod_evasive.

No CentOS 7, a linha deve ter a seguinte redação:







/etc/httpd/conf.d/mod_evasive.conf
LoadModule evasive20_module modules/mod_evasive24.so

No CentOS 6, a linha deve ser a seguinte:








/etc/httpd/conf.d/mod_evasive.conf
LoadModule evasive20_module modules/mod_evasive20.so


Vamos listar os módulos carregados para o servidor da web Apache e procurar por mod_evasive:








sudo httpd -M |  grep evasive


A saída deve mostrar algo como:








evasive20_module (shared)

 

No Debian/Ubuntu:
 

Spoiler

 








sudo apt-get install libapache2-mod-evasive

 

 


Configurando o mod_evasive:

 

Spoiler

 

Agora que a instalação foi concluída e verificada, vejamos a configuração do módulo. O mod_evasive pode ser facilmente personalizado através do arquivo de configuração mod_evasive.conf. Iremos mostrar abaixo os principais pontos da configuração.

Uma das opções de configuração que você precisa alterar é o DOSEmailNotify. Esta é uma diretiva muito útil. Se esse valor for definido, um email será enviado para o endereço de email especificado sempre que um endereço IP estiver na lista negra. O corpo do e-mail mostrará mod_evasive HTTP Blacklisted 1.2.3.4

Por exemplo, se você deseja enviar alertas mod_evasive para dizer [email protected], edite o arquivo:
 




sudo nano /etc/httpd/conf.d/mod_evasive.conf


Descomente a linha DOSEmailNotify removendo o # na frente da linha e altere o endereço de email para o seu:
 




/etc/httpd/conf.d/mod_evasive.conf
DOSEmailNotify [email protected]


Observação: O mod_evasive usa /bin/mail para enviar alertas por email. Você precisa ter um servidor de correio instalado e funcionando.
O parâmetro que você pode querer definir é o DOSWhitelist. Usando essa opção, os endereços IP de clientes confiáveis podem ser adicionados à lista de desbloqueio para garantir que eles nunca sejam negados. O objetivo da lista de permissões é proteger software, scripts, bots de pesquisa local ou outras ferramentas automatizadas contra a negação de solicitação de grandes quantidades de dados do servidor.
Para colocar na lista branca um endereço IP, por exemplo 1.2.3.4, adicione uma entrada ao arquivo de configuração como este:




/etc/httpd/conf.d/mod_evasive.conf
DOSWhitelist 1.2.3.4


Para colocar na lista branca vários endereços IP de diferentes intervalos de IP, você pode adicionar linhas separadas da lista DOSWhitelist no arquivo de configuração como este:




/etc/httpd/conf.d/mod_evasive.conf
DOSWhitelist 1.2.3.4
DOSWhitelist 5.6.7.8


DOSPageCount e DOSSiteCount são outros dois parâmetros recomendados para serem alterados para valores menos agressivos para evitar que os clientes sejam bloqueados desnecessariamente.
DOSPageCount é o limite para o número de solicitações para a mesma página por intervalo de páginas (geralmente definido como um segundo) por um endereço IP. Depois que o limite desse intervalo for excedido, o endereço IP do cliente será adicionado à lista de bloqueados. O valor padrão é definido como muito baixo em 2. Você pode alterá-lo para um valor mais alto, digamos 20, editando o seguinte em:




/etc/httpd/conf.d/mod_evasive.conf
DOSPageCount 20


DOSSiteCount é o limite para o número total de solicitações para o mesmo site por um endereço IP por intervalo de site (o padrão é 1 segundo). Para alterá-lo para um valor maior, como 100 segundos:




/etc/httpd/conf.d/mod_evasive.conf
DOSSiteCount 100


Existem alguns outros parâmetros que você pode alterar para obter melhor desempenho.
O parâmetro DOSBlockingPeriod informa a quantidade de tempo (em segundos)que um cliente (endereço IP) será bloqueado quando adicionados à lista de bloqueios. Durante esse período, todas as solicitações subsequentes do cliente resultarão em um erro 403 (Proibido) e o timer será redefinido (o padrão é 10 segundos).
 

Por exemplo, se você deseja aumentar o período de bloqueio para 3600 segundos (1 hora):




/etc/httpd/conf.d/mod_evasive.conf
DOSBlockingPeriod 3600


O parâmetro DOSLogDir que se refere ao diretório temporário usado pelo mod_evasive. Por padrão, o /tmp será usado para um mecanismo de bloqueio, que abre alguns problemas de segurança se o sistema estiver aberto para usuários do shell. Vamos definir esse parâmetro no arquivo mod_evasive.conf para possibilitar seja gravado no diretório do Apache.
 

Por exemplo, para definir o diretório usado por mod_evasive como /var/log/mod_evasive , crie o diretório usando:




sudo mkdir /var/log/httpd/mod_evasive
sudo chown -R apache: apache /var/log/httpd/mod_evasive



Agora vamos modificar a configuração mod_evasive e altere o diretório conforme abaixo:




/etc/httpd/conf.d/mod_evasive.conf

DOSLogDir “/var/log/httpd/mod_evasive”

Outro parâmetro é DOSSystemCommand . Se um valor for definido, o comando especificado será executado sempre que um endereço IP estiver na lista negra. Usando esse parâmetro, você pode integrar mod_evasive ao firewall instalado no servidor ou a um script de shell e bloquear os endereços IP na lista negra de mod_evasive no firewall.




DOSSystemCommand "sudo /sbin/iptables -I INPUT -s %s -j DROP"

Inclua o comando abaixo no arquivo /etc/sudores




apache ALL=NOPASSWD: /sbin/iptables *

 


Carregando o módulo mod_evasive no apache:
 

Spoiler

Depois de fazer as alterações no arquivo de configuração, precisamos reiniciar o servidor da web Apache para que eles entrem em vigor. Execute o seguinte comando para reiniciar o Apache.

No CentOS 7:




sudo systemctl restart httpd.service


No CentOS 6:




sudo service httpd restart


No Debian/Ubuntu:




sudo systemctl reload apache2


Importante: Verifique se o  mod_evasive parece entrar em conflito com as extensões de servidor do FrontPage. Você também pode verificar as configurações do servidor da web Apache para garantir que o mod_evasive funcione conforme configurado. Os ajustes sugeridos do Apache devem ter um valor muito alto para MaxRequestsPerChild mas não ilimitado (Um valor zero implica ilimitado) e manter o KeepAlive ativado com o KeepAliveTimeout definido por um período razoavelmente longo.


Teste da proteção DDoS
 

Spoiler

Vamos fazer um pequeno teste para ver se o módulo está funcionando corretamente. O script perl test.pl escrito por desenvolvedores mod_evasive. Para executar o script, primeiro precisamos instalar o pacote perl no servidor usando:




sudo yum install -y perl


O script de teste é instalado com mod_evasive no seguinte local:




/usr/share/doc/mod_evasive-1.10.1/test.pl

 

Por padrão, o script de teste solicita a mesma página do servidor da web Apache 100 vezes seguidas para acionar o mod_evasive. Na última seção, modificamos mod_evasive para ser mais tolerante com solicitações por segundo na mesma página. Precisamos alterar o script para 200 solicitações seguidas em vez de 100 para garantir que acionemos todos os métodos de notificação do mod_evasive.

Edite /usr/share/doc/mod_evasive-1.10.1/test.pl :
 




sudo nano /usr/share/doc/mod_evasive-1.10.1/test.pl


Encontre a seguinte linha:




/usr/share/doc/mod_evasive-1.10.1/test.pl

for(0.. 100 ) {

Substitua 100 por 200 :




/usr/share/doc/mod_evasive-1.10.1/test.pl

for(0.. 200 ) {

Salvar e sair.

Para executar o script, execute:




sudo perl /usr/share/doc/mod_evasive-1.10.1/test.pl


Você deve ver uma saída semelhante a:




HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden …

O script realiza 200 solicitações ao seu servidor web. o código de resposta 403 indica que o acesso foi negado pelo servidor da web. mod_evasive também registra no syslog quando o endereço IP está bloqueado. Verifique o arquivo de log usando:




sudo tail -f /var/log/messages


Deve mostrar uma linha semelhante a:




Jul 30 00:11:18 servername mod_evasive[19251]: Blacklisting address 127.0.0.1: possible DoS attack.


O Log acima indica que o endereço IP está bloqueado por mod_evasive.
Se você configurou o mod_evasive para enviar alertas por email quando um IP for bloqueado, você receberá um email na sua caixa de entrada com o seguinte conteúdo:




mod_evasive HTTP Blacklisted 127.0.0.1

 


Conclusão
 

Spoiler

O mod_evasive é  um módulo do Apache excelente para bloquear ataques com script e ataques distribuídos. Porem, somente este tipo de proteção não é suficiente para resolver os vários tipo de ataques de DDoS.


Créditos:

https://sempreupdate.com.br/mod_evasive-no-apache-oferece-protecao-contra-ataque-de-ddos/

Editado por Endless
Completando o tópico (veja o histórico de edições)

Quem eu sou?
Meu nome é Waliston, mais conhecido como Endless, estudante de Análise e Desenvolvimento de Sistemas, e desenvolvedor da Falcon Games. Atuo no Ramo de OtServer desde 2017, porém desde 2019 venho me especializando em Desenvolvimento Web e Segurança Web..

Meus Projetos:

Falcon Games

Meu Github:

https://github.com/WalistonBelles

Meu Discord:
Endless#5410

Minhas Contribuições atualmente pra Comunidade:

[SHOWOFF] OTClient Showoff Módules
[DESIGN]
 3 FREE Game Ui Design

[TUTORIAL] Instalando MyAAC em sua máquina

[TUTORIAL] Restringindo a Listagem de Diretórios(URL) do Servidor Apache
[TUTORIAL] Proteção contra DDoS utilizando Mod-evasive no Apache

[SISTEMA] Plugin MyAAC Listagem de Items automática
[SISTEMA] Gerador de Outfits Automática para o Site

[SISTEMA] Sistema de Troca de Vocação para MyAAC
[SISTEMA] Plugin MyAAC Auction System
[SISTEMA] Sistema de Exibir Monstros por Level


Algum trabalho meu te ajudou? Quer apoiar meu trabalho? Faça uma doação!!
Picpay: @walistonbelles
Paypal: [email protected]

Postado

Obrigado pela contribuição, ira ajudar muitos projetos !

function onLove()
if getPlayerTrueLove(girlfriend) then
doPlayerBeHappy(cid, true)
doRemoveVirginity(cid, true)
else
doSendCancel(cid,"you do not know how good it feels to be loved")
end end

;)

 

  • Endless mudou o título para Proteção contra DoS utilizando Mod_evasive no Apache

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo