Bloqueio de ataques de força bruta de SSH no IPv6

10

Recentemente tive que trabalhar com alguns servidores que têm uma conexão IPv6 e fiquei surpreso ao descobrir que o fail2ban não tem suporte a IPv6, nem o denyhosts. Pesquisando no google, descobri que as pessoas geralmente recomendam:

  • Desativando o login do ssh através do IPv6 (não é uma solução para mim)
  • usando somente autenticação de chave privada / pública no servidor, sem autenticação de senha (funciona, mas muitos ataques podem custar muito ao servidor, ou podem até torná-lo indisponível por DDoS-it)
  • usando ip6tables para bloquear ataques consecutivos do mesmo IP
  • usando o sshguard, que tem suporte para IPv6

Pelo que eu recolhi até agora, proibir endereços no IPv6 é um pouco diferente do IPv4 porque os ISPs não dão a um 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 das sub-redes ip6tables e sshguard de bloqueio na detecção de ataques, mas não consegui encontrar nenhuma informação.

Alguém sabe se o sshguard bane sub-redes em ataques IPv6?
Alguém sabe como fazer uma configuração ip6tables para proibir sub-redes em ataques IPv6?
Ou alguém sabe de uma maneira melhor de mitigar os ataques do que eu já encontrei?

PS: Estou usando o CentOS 7 no sistema.

    
por DarthRevan13 17.07.2015 / 11:49

2 respostas

4

Para atacar um servidor, o invasor precisa primeiro saber seu endereço IP. Com o IPv6, você terá tantos endereços para escolher que não é possível encontrar o endereço correto, varrendo 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 ouça apenas o endereço IP recém-atribuído.

Após essa alteração, saber o nome de domínio e o endereço IP do seu site não dará ao invasor qualquer acesso ao seu sshd.

Você precisará, obviamente, de um nome de host secundário para ser usado ao conectar-se usando o ssh. Esse nome de host pode ter muito mais entropia do que um endereço IPv6. Alguém que adivinha o nome do host para o ssh é inconcebível se você usar 63 caracteres alfanuméricos.

Se alguém descobrir o endereço IPv6 usado para o 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, poderá criar um nome de host diferente para cada usuário acessar com o ssh. Inicialmente eu iria CNAME todos eles para um único nome de host, de tal forma que há apenas um único registro AAAA para atualizar.

    
por 20.07.2015 / 11:21
0

Boas notícias são de que o fail2ban liberou suporte para o IPv6 recentemente.

Para servidores Debian IPv6, eu recomendaria seguir este tutorial .

Para os servidores IPv6 do CentOS, recomendo fazer o download aqui e executar esses comandos substituindo o número da versão de acordo:

tar xvfj fail2ban-0.11.0.tar.bz2
cd fail2ban-0.11.0
python setup.py install

Certifique-se de que uma cadeia de sshd esteja ativada em /etc/fail2ban/jail.local , por exemplo:

[sshd]
enabled=1
    
por 17.10.2017 / 21:49