Por que o login root via SSH é tão ruim que todos recomendam desativá-lo?

79

Todo mundo na Internet aconselha a desabilitar o login root via SSH , pois é uma prática ruim e uma brecha na segurança. sistema, mas ninguém explica por que é assim.

O que é tão perigoso ao habilitar o login root (especialmente com o login de senha desativado)?

E qual é a diferença entre o nome de usuário do símbolo X e a senha do símbolo Y ou o nome de usuário root e a senha do símbolo X + Y do ponto de vista da segurança, caso a autenticação por senha seja permitida?

    
por rush 11.07.2013 / 12:54

5 respostas

57

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

link

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.

    
por 11.07.2013 / 14:01
8

Estas podem ser algumas das razões pelas quais o login direto na raiz não deve ser permitido.

  • Tentativas de força bruta. O login direto na raiz pode resultar em mais danos em um ataque bem-sucedido de bruteforce.
  • Missconfiguração em chaves SSH "sem senha" (erro humano acontece) pode expor sua máquina à internet

Mas esta é apenas a ponta do iceberg. Você precisa configurar outras restrições e configurações como:

  • Alterar a porta padrão (22)
  • Senhas strongs e frase secreta
  • Desativar a autenticação baseada em host
  • Crie uma lista de usuários permitidos
  • Configurar tempo de espera inativo
  • Forçar o protocolo SSHv2
  • Desativar senhas vazias
  • Use o fail2ban como medida contra a força bruta
  • Registrar tudo
  • Configure as chaves SSH e confie apenas nas chaves públicas em .ssh / authorized_keys
por 11.07.2013 / 13:33
8

Você está certo que o nome de usuário root e a senha do símbolo X + Y são criptograficamente pelo menos tão seguros quanto um nome de usuário com símbolo X + senha do símbolo Y. Na verdade, é ainda mais seguro, porque os nomes das pessoas são fáceis de adivinhar (bots podem tentar john, mike, bill, etc ... e btw: é o que muitos deles fazem em vez de tentar usar o root). E você está especialmente sem sorte se for um ataque direcionado, porque se alguém quiser quebrar o servidor de uma empresa, não seria um problema descobrir o nome (nick) do administrador de sistema.

E assim que o invasor tiver acesso à conta, o administrador do sistema usará os logins do ssh (e usará su ou sudo para executar suas tarefas), ele poderá infectar a sessão desse usuário com um programa que enviará o invasor senha de root quando o sysadmin digita na próxima vez.

É qualquer tipo de logins raiz que são (ou devem ser) considerados más práticas do ponto de vista de segurança. O login de usuário "normal" - > A cadeia su / sudo adiciona uma trilha de auditoria. Em inglês simples: torna possível descobrir quem fez o quê.

Um caso especial pode ser aquele em que apenas uma pessoa tem acesso root. Nesse caso, usar o usuário "normal" adicional não adicionará muito valor (pelo menos eu nunca consegui ver esse valor). Mas de qualquer forma - você deve ter um usuário simples no sistema de qualquer maneira (para tarefas não administrativas, executando o wget, etc ;-)).

    
por 12.07.2013 / 04:49
3

What is so dangerous in enabling root login ( especially with disabled password login )?

O atacante (bot / botnet / hacker) só precisa adivinhar a senha e tem controle total sobre o seu sistema, se você estiver aberto à internet. Além disso, nenhuma das contas do sistema (www-data, proxy, etc.) deve poder fazer o login via SSH, pelas mesmas razões.

Se você desativou o login de senha (usando a chave pública, por exemplo), leve em consideração que quem quer que tenha acesso à chave privada obtém controle total sobre o sistema. Veja por que usar a chave pública com um usuário é melhor abaixo.

And what is the difference between X symbol username and Y symbol password or root username and X+Y symbol password from security point of view in case password authentication is allowed?

O nome de usuário extra pode adicionar uma camada de segurança, uma vez que: a) o invasor deve conhecer o par, o nome de usuário e a senha; b) no caso de um invasor violar seu sistema, ele não terá acesso imediato a uma conta privilegiada, adicionando um pouco de nuance para o invasor.

Nesse caso, a chave pública também é uma vantagem, já que:

  1. O invasor precisa da sua chave pública
  2. O invasor precisa da senha (ou método de autenticação) para obter privilégios elevados
por 11.07.2013 / 13:50
0

Não é exatamente ruim, desde que você tenha tomado precauções de segurança. Como exemplo, você pode instalar o CSF (Configure Server Firewall) e definir o número de tentativas de falha permitidas, portanto, se alguém tentar, digamos, mais de 5 tentativas de falha, elas serão automaticamente bloqueadas. Portanto, toda a primeira parte do melhor respondente não será um problema. Isso aconteceu comigo muitas vezes e, felizmente, todos os apresentadores foram bloqueados permanentemente. Eu acho que para um servidor não é um grande problema se você é a única pessoa que gerencia o servidor, mas é claro que se houver muitos administradores de sistema, ou se você estiver trabalhando em uma organização, então obviamente não use raiz. Também para um PC de mesa, acho que usar outra conta é melhor, pois há um risco de segurança, já que você usa muito software, mas em um servidor, você não precisa de um software aleatório em que não confia. para mantê-los tão baixo quanto possível. Portanto, a conclusão é: Não, não é realmente prejudicial se você souber gerenciar um servidor adequadamente.

    
por 13.01.2017 / 18:32