Qual é o limite de taxa de tentativas de login padrão?

3

Em uma instalação Linux padrão com o OpenSSH, qual é o limite de taxa padrão para tentativas de login de SSH usando autenticação de senha?

Quantas senhas um invasor pode adivinhar por hora?

    
por Zaz 21.11.2016 / 19:38

2 respostas

3

Em todas as conexões, há um limite específico de prompts de senha. Ele é definido pela opção MaxAuthTries (o padrão é 6). Mas você não pode fazer todas as tentativas de uma só vez. Após cada falha, você receberá uma penalidade de tempo (~ 3 segundos para percorrer a pilha do PAM com atraso).

O invasor pode emitir as conexões na taxa limitada pelo MaxStartups (o padrão é 10: 30: 100, que começará a rejeitar a conexão se houver 10 conexões não autenticadas abertas).

A opção LoginGraceTime não está relacionada ao invasor, porque define apenas o tempo máximo antes de a conexão ser encerrada pelo servidor, caso o invasor não tenha êxito na autenticação.

O fator limitante aqui é principalmente a troca de chaves, o que leva tempo porque:

  • a criptografia envolvida leva o tempo da CPU - depende do servidor e dos processadores ou aceleradores clientes
  • tempos de ida e volta - depende da distância geográfica

Meu teste rápido mostrou que estabelecer conexão com o Raspberry Pi na outra sala leva aproximadamente 1 segundo. Mas pode ser mais rápido e o SSHD pode lidar com mais solicitações paralelas. O prompt de senha do host local é quase imediato.

Digamos que o invasor possa simplesmente emitir 10 conexões em paralelo, aguardar 1 segundo por prompt, escrever uma senha, aguardar 3 segundos pelo segundo prompt (ou confirmação de que a senha estava correta) (... repete 6 vezes até que para fora). Isso leva 1 + 3 * 6 segundos (19 segundos) para 6 tentativas de senha em thread único, 60 tentativas de senha em 10 threads. Arredondando para 180 em um minuto e 10k em uma hora neste caso otimista.

Observe que o invasor pode aumentar a quantidade de encadeamentos para 20 ou mais com uma probabilidade de rejeição bastante baixa, mas chegando às duas vezes mais tentativas (ou até mais, mas não pode ultrapassar 100). É por isso que o fail2ban existe.

    
por 21.11.2016 / 23:06
0

man sshd_config:

 MaxStartups
         Specifies the maximum number of concurrent unauthenticated con‐
         nections to the SSH daemon.  Additional connections will be
         dropped until authentication succeeds or the LoginGraceTime
         expires for a connection.  The default is 10:30:100.

         Alternatively, random early drop can be enabled by specifying the
         three colon separated values “start:rate:full” (e.g. "10:30:60").
         sshd(8) will refuse connection attempts with a probability of
         “rate/100” (30%) if there are currently “start” (10) unauthenti‐
         cated connections.  The probability increases linearly and all
         connection attempts are refused if the number of unauthenticated
         connections reaches “full” (60).
    
por 21.11.2016 / 19:43