Ir para conteúdo
RodGomes

Melhor proteção contra ataques slowloris e dos com iptables para apach

Recommended Posts

Olá pessoal, esse é meu primeiro post no forum e estou trazendo um assunto que não vejo muito em foruns brasileiros.



Proteção contra Slowloris e DOS usando iptables, firewall nativo do linux, compatível com WHM e especialmente para quem usa CSF.


Como muitos sabem, o CSF é uma excelente ferramenta e totalmente integrada ao WHM, mas para proteger meu servidor contra esses ataques eu sempre ouvi falarem do fail2ban, claro que é uma ferramenta excelente, porém eu não queria abrir mão do meu CSF e usar os dois juntos é pura gambiarra.



Desta forma, depois de muitas pesquisas e de não encontrar muita informação sobre o assunto, fiz meu próprio script iptables compatível com CSF, você não precisa instalar nada nem fazer gambiarras.



Segue abaixo:



#!/bin/sh
/sbin/iptables -N BLOCK_IP
/sbin/iptables -N SYN_CHECK
/sbin/iptables -N DOS_CHECK
/sbin/iptables -N SYN_ATTACK
/sbin/iptables -N DOS_ATTACK
#
# primeiro verifica se o IP esta bloqueado
/sbin/iptables -A INPUT -j BLOCK_IP
# derruba ele se estiver bloqueado
/sbin/iptables -A BLOCK_IP -p tcp -m multiport --dport 80,443 -m recent --name BlockedIP --rcheck --seconds 60 -j DROP
/sbin/iptables -A BLOCK_IP -p udp -m multiport --dport 80,443 -m recent --name BlockedIP --rcheck --seconds 60 -j DROP
# se passou o tempo desbloqueia ele
/sbin/iptables -A BLOCK_IP -p tcp -m multiport --dport 80,443 -m recent --name BlockedIP --remove -j RETURN
/sbin/iptables -A BLOCK_IP -p udp -m multiport --dport 80,443 -m recent --name BlockedIP --remove -j RETURN
#
# verifica: se existe mais de 20 conexões simultaneas com status SYN - ignora IP do Varnish Cache
/sbin/iptables -A INPUT -p tcp -m multiport --dport 80,443 --syn ! -s 123.456.789.0 -m connlimit --connlimit-above 20 -j SYN_CHECK
# verifica: conexão feita e posteriormente a frequencia - ignora IP do Varnish Cache
/sbin/iptables -A INPUT -p tcp -m multiport --dport 80,443 ! -s 123.456.789.0 -m state --state NEW -j DOS_CHECK
/sbin/iptables -A INPUT -p udp -m multiport --dport 80,443 ! -s 123.456.789.0 -m state --state NEW -j DOS_CHECK
#
# verifica se o ataque é frequente
/sbin/iptables -A SYN_CHECK -m recent --update --seconds 10 --hitcount 20 --name RATE -j SYN_ATTACK
/sbin/iptables -A DOS_CHECK -m recent --update --seconds 3 --hitcount 20 --name RATE -j DOS_ATTACK
# caso o ataque seja frequente, bloqueia por 1 minuto e gera log
/sbin/iptables -A SYN_ATTACK -j LOG --log-prefix "BLOCK SYN ATTACK: " --log-level 6
/sbin/iptables -A SYN_ATTACK -m recent --set --name BlockedIP -j DROP
/sbin/iptables -A DOS_ATTACK -j LOG --log-prefix "BLOCK DOS ATTACK: " --log-level 6
/sbin/iptables -A DOS_ATTACK -m recent --set --name BlockedIP -j DROP
#
# se o ataque não é frequente, libera
/sbin/iptables -A SYN_CHECK -m recent --set --name RATE -j ACCEPT
/sbin/iptables -A DOS_CHECK -m recent --set --name RATE -j ACCEPT
#

Para rodar é muito simples, se você usa WHM com CSF basta colocar em /usr/local/csf/bin/csfpre.sh e digitar no terminal csf -r


Usando isso seu servidor Apache estará protegido contra a maioria dos ataques pequenos DDOS, Slowloris e SYN Flood.



E claro, estou divulgando isso com um único objetivo: ver meu script sendo melhorado. Quando desenvolvi ele eu nunca tinha programado nada em iptables, só depois de muitas noites perdidas e estudos consegui chegar nesse resultado que considero ser o melhor que existe na internet disponível (eu pesquisei muito, posso falar com prioridade). Mas claro, se conhecerem um melhor ou tiverem sugestões para melhorar essa proteção, sejam bem vindos!



Façam bom proveito!


Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por stewartcintra@
      Pessoal, estou tentando fazer essas url amigaveis, mas não esta dando certo
      preciso quando as paginas do site (contas.php fiquem /contas) isso consegui fazer
      e o arquivos contas  (contas.php?exibe=Vencidas fique /contas/Vencidas) que nao consigo passa as duas regras juntas
       
      Meu arquivo .htaccess
      RewriteEngine On
      RewriteRule ^([a-z]+)\/?$ /$1.php [NC]
      RewriteRule ^([a-z,0-9,A-Z,_-]+)\/contas?$ contas.php?exibe=$1
       
    • Por Felipe_N22
      Gostaria de saber como faço para habilitar os serviços do tomcat para eu conseguir obter acesso via ip. O tomcat disponibiliza três opções, sendo elas server status, manager app e host manager. Eu consigo ter acesso a essas configurações somente via localhost:8080, mas quando eu tento através do meu ip x.x.x.x:8080 ele mostra que os serviços não estão disponíveis.
       
      Segue simulação, eu tentei acessar o menu "Server Status".
       
      Através do localhost:
       

       
      Através do IP:
       

       
       
       
    • Por Acrianinho
      Turma eu fiz o download de um sistema opensource para testes, conseguido neste link https://github.com/hiltonbruce/Igreja.
      Instalei o Xamp 7.3.2 e Colei a pasta baixada dentro da pasta htdocs, do campo. Ao iniciar os serviços do xampp não tive problemas. Acessei PhpMyadmin e criei o banco de dados pedido na descrição do sistema. 
      Quando tentei acessar o localhost/projeto abriu uma série de erros de php no navegar. Resolvi todos, um a um, mas quando acabaram os erros não aparece nada no navegador.
      Quando eu abro localhost vejo a pagina do xampp funcionando, mas nada é exibido no localhost/projeto.
      Pensei que fosse erro de porta e troquei a porta para 8080 e continua exibindo somente uma página em branco. Alguém tem uma ideia de onde eu estou errando?
    • Por moreaux
      Tenho um apache2 configurado para a minha pasta /var/www/meusite , porem quando clonaram, usaram https e nao SSH, fiz o clone do novo projeto, todos os arquivos estão iguais, porem quando renomeio as pastas para ir para o meu novo projeto, me da o erro :
       
      This page isn’t working
      Dando o erro de HTTP ERROR 500, ja tentei verificar no LOG do apache, porem não esta logando nada, alguem poderia me ajudar? 
    • Por caioandreis
      Olá, pessoal. Tudo bem?
      Gostaria de pedir um direcionamento com a seguinte situação:
       
      Tenho um amigo que tem um site feito em php, com painel gerenciador de conteúdo. Como estou estudando mais a fundo php agora, gostaria de pegar um site que funciona e estudar em cima dele: (alterar tanto layout quanto incluir/retirar novas funcionalidades).
       
      Meu amigo liberou o acesso ao ftp e banco de dados dele, para eu fazer uma cópia e colocar em um localhost (xampp) para estudar em cima dele. Assim, não corro risco de danificar o site dele que está no ar.
       
      Já estou com a pasta do site dentro do htdocs, e o banco de dados importado no phpmyadmin, porém ao tentar acessar o site, o browser acusa erro no servidor. 500
       
      Busquei tutoriais sobre isso, mas encontrei apenas passo-a-passo para sites em wordpress. Com isso, vem a pergunta:
       
      Alguém tem algum tutorial ou poderia me dizer como faço para "plugar" o site com o banco de dados no localhost? 
       
      Peço desculpas se a pergunta é muito leiga mas, como não encontrei nada específico sobre o assunto, achei que valia a tentativa.
       
      Desde já, agradeço pela atenção.
       
      Caio
       
       
       
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.