Postado Março 4, 2021 4 anos 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 Junho 13, 2021 3 anos 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 Março 4, 2021 4 anos 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
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.