Recentemente, tive que trabalhar com alguns servidores com conexão IPv6 e fiquei surpreso ao descobrir que o fail2ban não tem suporte para IPv6, nem denyhosts. Pesquisando no google, descobri que as pessoas geralmente recomendam:
- Desativando o login ssh através do IPv6 (não é uma solução para mim)
- usando apenas autenticação de chave pública / privada no servidor, sem autenticação de senha (funciona, mas muitos ataques podem custar muito poder de processamento ao servidor ou até torná-lo indisponível por DDoS)
- usando ip6tables para bloquear ataques consecutivos do mesmo IP
- usando sshguard com suporte a IPv6
Pelo que eu reuni até agora, banir endereços no IPv6 é um pouco diferente do IPv4, porque os ISPs não fornecem ao usuário um único endereço (/ 128), mas uma sub-rede inteira (atualmente tenho um / 48). Assim, a proibição de endereços IPv6 únicos seria ineficaz contra ataques. Eu pesquisei alto e baixo sobre o assunto ip6tables e sub-redes de bloqueio sshguard na detecção de ataques, mas não consegui encontrar nenhuma informação.
Alguém sabe se o sshguard proíbe sub-redes em ataques IPv6?
Alguém sabe como fazer uma configuração de ip6tables para banir sub-redes em ataques IPv6?
Ou alguém conhece uma maneira melhor de mitigar os ataques do que o que eu já encontrei?
PS: Estou usando o CentOS 7 no sistema.
Respostas:
Para atacar um servidor, o invasor deve primeiro conhecer seu endereço IP. Com o IPv6, você terá tantos endereços para escolher que não é possível encontrar o endereço correto pesquisando o intervalo de IPs.
Isso significa que você pode simplesmente atribuir dois endereços IPv6 diferentes à interface. Você permite que o nome de domínio do seu site continue apontando para o mesmo endereço IP de sempre, e permite que o sshd escute apenas no endereço IP recém-atribuído.
Após essa alteração, o conhecimento do nome do domínio e do endereço IP do seu site não dará ao invasor acesso ao seu sshd.
Obviamente, você precisará de um nome de host secundário para conectar ao usar o ssh. Esse nome de host pode ter muito mais entropia que um endereço IPv6. Alguém adivinhando o nome do host para ssh é inconcebível se você usar 63 caracteres alfanuméricos.
Se alguém descobrir o endereço IPv6 usado para sshd, basta mover o sshd para um novo endereço IPv6 e atualizar o registro AAAA. Então eles têm que começar tudo de novo.
Se você estiver preocupado com a possibilidade de um usuário ssh legítimo vazar o nome do host e / ou os endereços IP, crie um nome de host diferente para cada usuário acessar com o ssh. Inicialmente, CNAME todos eles para um único nome de host, para que haja apenas um único registro AAAA a ser atualizado.
fonte
Boas notícias são que o fail2ban lançou recentemente o suporte para IPv6.
Para servidores Debian IPv6, eu recomendaria seguir este tutorial .
Para servidores CentOS IPv6, eu recomendaria fazer o download aqui e, em seguida, execute estes comandos substituindo o número da versão de acordo:
Verifique se uma prisão para sshd está ativada em /etc/fail2ban/jail.local , por exemplo:
fonte