Uma alternativa para fail2ban é DenyHosts que atualiza /etc/hosts.deny em vez de gerenciar as regras netfilter .
Existe uma maneira fácil de bloquear um IP que executa um ataque de login brutforce no meu sshd? Talvez apenas um tempo crescente para o prompt de login aparecer.
Eu sei o fail2ban, mas ele parou quando tentei. Também precisa de semdmail, que eu não quero configurar na minha área de trabalho. E eu não quero enviar um email pela internet quando algo está acontecendo. Se o fail2ban pudesse usar notificações de desktop (D-Bus), seria ótimo. Mas eu me pergunto por que tenho que instalar algo separado apenas para algo assim? Por que não pode fazer isso? (Aumente o tempo de espera quando o mesmo IP tiver várias tentativas de login com falha.)
Uma alternativa para fail2ban é DenyHosts que atualiza /etc/hosts.deny em vez de gerenciar as regras netfilter .
Você não fornece muitas informações sobre sua configuração, mas, se estiver usando um roteador, geralmente poderá programá-las com um filtro de entrada que fará com que ele bloqueie qualquer coisa de um determinado IP ou intervalo de IPs. Por exemplo, com o meu D-Link, eu vou para a guia Configurações avançadas e selecione a página Filtro de entrada.
Você deve criar suas próprias ações e filtros do fail2ban. Deixe-me mostrar um exemplo
Basta adicionar linhas para sua nova ação de notificação de desktop em /etc/fail2ban/jail.conf
[ssh-with-desktop-notification]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
ssh-with-desktop-notification[title=<Title Here>, content=<Content Here>]
logpath = /var/log/secure
maxretry = 3
Crie um novo arquivo com o nome /etc/fail2ban/actions.d/ssh-with-desktop-notification.conf e adicione qualquer comando ao actionstart, actionstop eventos. Por exemplo, suponho que você esteja usando o GNOME como um ambiente de área de trabalho,
actionban = 'which notify-send' <content>
Após todas essas novas linhas, não esqueça de reiniciar o serviço fail2ban.
/etc/init.d/fail2ban restart
Em conclusão, essa nova ação fail2ban verifica o arquivo de log / var / log / secure para tentativas de interrupção. Após 3 ações com falha, ele executará iptables com três parâmetros (nome, porta e protocolo). Depois de executar o iptables, o fail2ban procurará a pasta /etc/fail2ban/actions.d para o arquivo ssh-with-descktop-notifications.conf . Se o arquivo existir, ele procurará arquivar o evento actionban . Então, se o evento actionban existir, o fail2ban executará comandos actionban com parâmetros (título e conteúdo) ao banir um IP.
Nota: Por favor, verifique os comandos são executados com direitos de usuário fail2ban.
A melhor maneira de fazer isso é usar os recursos internos do netfilter. Você deseja tempo limite se a porta TCP for atingida muitas vezes em um determinado período de tempo.
Existe um carimbo de hora visto pela última vez para cada anfitrião ...
$ sudo iptables -A INPUT -p tcp -m tcp --dport 22 -m state \
--state NEW -m recent \
--update --seconds 60 --hitcount 4 --name DEFAULT --rsource -j DROP
Leia o artigo completo aqui. link
Existem também vários plugins mais sofisticados para o netfilter que fazem isso.
Não use hosts.deny , que é antigo. Isso é TCP Wrappers, que é antigo e requer suporte de programação.
Eu usei essa técnica em firewalls de produção e ela funciona bem.