Por que o root sobre SSH é ruim
Há muitos bots por aí que tentam se conectar ao seu computador via SSH. Esses bots funcionam da seguinte maneira.
Eles executam algo como ssh root@$IP e depois tentam senhas padrão como "root" ou "password123".
Eles fazem isso o máximo que podem, até encontrarem a senha correta.
Em um servidor acessível em todo o mundo, você pode ver muitas entradas de log em seus arquivos de log. Eu posso ir até 20 por minuto ou mais.
Quando os atacantes tiverem sorte (ou tempo suficiente) e encontrarem uma senha, eles terão acesso root e isso significa que você está com problemas.
Mas quando você não permitir que o root faça o login via SSH, o bot precisa primeiro adivinhar um nome de usuário e depois a senha correspondente.
Então vamos dizer que a lista de senhas plausíveis tem N entradas e a lista de usuários plausíveis é M entradas grandes. O bot tem um conjunto de N*M entradas para testar, então isso torna um pouco mais difícil para o bot em comparação com o caso raiz, onde é apenas um conjunto de tamanho N .
Algumas pessoas dirão que esse M adicional não é um ganho real em segurança e concordo que é apenas um pequeno aprimoramento de segurança. Mas penso nisso mais como esses pequenos cadeados, que não são seguros, mas impedem que muitas pessoas tenham acesso fácil. Isto, obviamente, só é válido se a sua máquina não tiver outros nomes de usuário padrão, como tor ou apache.
A melhor razão para não permitir root é que a raiz pode causar muito mais danos na máquina do que um usuário padrão pode fazer. Então, se por acaso eles encontrarem a sua senha, todo o sistema é perdido enquanto que com uma conta de usuário padrão, você só pode manipular os arquivos daquele usuário (o que ainda é muito ruim).
Nos comentários foi mencionado que um usuário normal poderia ter o direito de usar sudo e se a senha desse usuário fosse adivinhada, o sistema também estaria totalmente perdido.
Em resumo, eu diria que não importa qual senha do usuário um atacante recebe. Quando eles descobrem uma senha, você não pode mais confiar no sistema. Um invasor pode usar os direitos desse usuário para executar comandos com sudo , o invasor também pode explorar uma fraqueza em seu sistema e obter privilégios de root. Se um invasor tiver acesso ao seu sistema, você não poderá mais confiar nele.
A coisa a ser lembrada aqui é que todo usuário em seu sistema que tem permissão para efetuar login via SSH é uma fraqueza adicional. Ao desabilitar o root, você remove uma fraqueza óbvia.
Por que senhas sobre SSH são ruins
O motivo para desabilitar senhas é muito simples.
- Os usuários escolhem senhas incorretas!
Toda a ideia de tentar senhas só funciona quando as senhas são adivinhadas. Então, quando um usuário tem a senha "pw123", seu sistema fica inseguro. Outro problema com as senhas escolhidas pelas pessoas é que suas senhas nunca são realmente aleatórias, porque isso seria difícil de lembrar.
Também é o caso que os usuários tendem a reutilizar suas senhas, usando-as para entrar no Facebook ou em suas contas do Gmail e para o seu servidor. Então, quando um hacker recebe a senha da conta do Facebook desse usuário, ele pode entrar em seu servidor. O usuário pode facilmente perdê-lo através de phishing ou o servidor do Facebook pode ser hackeado.
Mas quando você usa um certificado para fazer login, o usuário não escolhe sua senha. O certificado é baseado em uma string aleatória que é muito longa, de 1024 bits até 4096 bits (senha de 128 a 512 caracteres). Além disso, este certificado só existe para entrar no seu servidor e não é usado com nenhum serviço externo.
Links
Este artigo vem dos comentários e eu queria dar a ele uma posição um pouco mais proeminente, já que é um pouco mais profundo sobre a questão dos botnets que tentam efetuar login via SSH, como eles fazem isso, como os arquivos de log parece e o que se pode fazer para detê-los. Foi escrito por Peter Hansteen.