Executando verificação de segurança...
3

Meus 2 cents,

Obrigado por compartilhar !

A solucao apontada usando o modulo 'recent' eh bem legal - simples e limpo de usar.

Para quem for estudar este script, alguns detalhes:

  1. Como usa '$IPTABLES -I' as regras sao inseridas, entao fica na posicao invertida - o resultado final eh (iptables -nvL):
INPUT -i ${INTERFACE} -p tcp -m multiport --dports 80,443 -m state --state NEW -m recent --update --seconds ${SECONDS} --hitcount ${BLOCKCOUNT} -j ${ACTION}
INPUT -i ${INTERFACE} -p tcp -m multiport --dports 80,443 -m state --state NEW -m recent --set

E isto eh correto: primeiro checa se o IP ja esta na lista 'recent' com os limites indicados, se sim ja 'dropa' (descarta). Caso nao esteja na lista, cai na regra seguinte e inclui nesta lista.

Uma pequena alteracao que pode ser legal eh incluir a opcao '--name XXXX' nas duas linhas, assim voce indica qual a lista que se refere - o que pode ser util se voce quiser criar varias listas 'recent' com valores diferentes (e protocolos diferentes).

Um ponto que gostaria de acrescentar eh que pode ser interessante usar este tipo de controle na tabela 'RAW' de forma que, caso o IP esteja na lista, evita que o mesmo entre no 'connection tracking' do NAT (observar a troca de -m state NEW para -m tcp --syn que eh basicamente a mesma coisa, mas sem usar tracking).

Por exemplo:

$IPTABLES -t raw -I PREROUTING -p tcp -m multiport --dports 80,443 -i ${INTERFACE} -m tcp --syn -m recent --set --name HTTP

$IPTABLES -t raw -I PREROUTING -p tcp -m multiport --dports 80,443 -i ${INTERFACE} -m tcp --syn -m recent --name HTTP --update --seconds ${SECONDS} --hitcount ${BLOCKCOUNT} -j ${ACTION} 

Outro adendo: tem outros modulos que podem ser uteis neste caso, como 'hashlimit', 'limit' e 'synproxy' (este ultimo eh legal, mais moderno e ainda um tanto subestimado).

Continue postando sobre o assunto, sempre eh legar ver conteudos diferentes (em especial como cyberseguranca) por aqui.

Saude e Sucesso !

Carregando publicação patrocinada...
2
2

Meus 2 cents extendidos,

O problema do fail2ban + SNORT aqui eh que para defesa contra DoS (que eh o tema do artigo) eles nao trabalham muito bem.

Veja, a ideia do DoS eh sobrecarregar o servidor com conexoes - utilizando recursos alem do previsto para ele.

Como o fail2ban e SNORT trabalham APOS a conexao ser estabelecida e analisada (p.ex. LOG) - dai nao serem tao eficazes (o consumo de recursos continua alto).

A ideia do iptables aqui eh justamente trabalhar na entrada do pacote, mas antes de ser analisado por qualquer sistema, e descartar quando ele tiver a aparencia de 'atacante' (no caso, grandes quantidades da mesma origem) e assim poupar recursos.

Como apontado no artigo - este tipo de mitigacao funciona legal contra ataques de pequeno porte. Se o servidor for atacado de forma 'profissional' (da para contratar DoS/DDoS com cartao de credito) o unico metodo eficaz eh direto para operadora/datacenter que hospeda o servidor, que provavelmente vai interagir com o BGP para resolver isso.

Mas concordo contigo - a dupla fail2ban + SNORT para analise de trafego eh muito boa - simples e direta. Eu incluiria ai o modsecurity para trabalhar no webserver, tambem uma opcao super bem vista.

Saude e Sucesso !