Por que root sobre SSH é ruim
Existem muitos bots por aí que tentam fazer login no seu computador através do SSH. Esses bots funcionam da seguinte maneira.
Eles executam algo como ssh root@$IP
e, em seguida, tentam senhas padrão como "root" ou "password123". Eles fazem isso o máximo que podem, até encontrar 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 subir até 20 por minuto ou mais.
Quando os invasores têm sorte (ou tempo suficiente) e encontram uma senha, eles têm acesso root e isso significa que você está com problemas.
Mas quando você não permite que o root efetue login no SSH, o bot precisa primeiro adivinhar um nome de usuário e depois a senha correspondente. Então, digamos que a lista de senhas plausíveis tenha N
entradas e a lista de usuários plausíveis seja M
grande. O bot possui um conjunto de N*M
entradas a serem testadas, o que torna um pouco mais difícil para o bot em comparação com o caso raiz, onde ele é apenas um conjunto de tamanho N
.
Algumas pessoas dirão que esse adicional M
não é um ganho real em segurança e eu concordo que é apenas um pequeno aprimoramento de segurança. Mas penso nisso mais como esses pequenos cadeados que, por si só, não são seguros, mas impedem muitas pessoas de facilitar o acesso. Obviamente, isso só é válido se 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 o root pode causar muito mais danos à máquina do que um usuário padrão. Portanto, se por acaso encontrarem sua senha, todo o sistema será perdido enquanto com uma conta de usuário padrão, você só poderá manipular os arquivos desse 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 for adivinhada, o sistema também estará totalmente perdido.
Em resumo, eu diria que não importa qual senha de usuário um invasor recebe. Quando eles adivinham uma senha, você não pode mais confiar no sistema. Um invasor pode usar os direitos desse usuário para executar comandos sudo
, o invasor também pode explorar uma fraqueza no seu sistema e obter privilégios de root. Se um invasor tiver acesso ao seu sistema, você não poderá mais confiar nele.
É importante lembrar que todos os usuários do seu sistema que têm permissão para efetuar login via SSH são uma fraqueza adicional. Ao desativar o root, você remove uma fraqueza óbvia.
Por que senhas sobre SSH são ruins
O motivo para desativar as senhas é realmente simples.
- Os usuários escolhem senhas ruins!
Toda a idéia de tentar senhas funciona apenas quando as senhas são possíveis de serem adivinhadas. Portanto, 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 verdadeiramente aleatórias, porque seria difícil lembrar.
Além disso, os usuários tendem a reutilizar suas senhas, usando-as para fazer login no Facebook ou em suas contas do Gmail e no seu servidor. Portanto, quando um hacker obtém a senha da conta do Facebook desse usuário, ele pode entrar no seu servidor. O usuário pode perdê-lo facilmente através de phishing ou o servidor do Facebook pode ser invadido.
Mas quando você usa um certificado para efetuar login, o usuário não escolhe sua senha. O certificado é baseado em uma sequência aleatória que é muito longa, de 1024 bits a 4096 bits (senha de ~ 128 - 512 caracteres). Além disso, este certificado existe apenas para efetuar login no servidor e não é usado com nenhum serviço externo.
Ligações
http://bsdly.blogspot.de/2013/10/the-hail-mary-cloud-and-lessons-learned.html
Este artigo vem dos comentários e eu queria dar uma posição um pouco mais proeminente, já que ele se aprofundou um pouco mais na questão de botnets que tentam efetuar login via SSH, como eles fazem isso, como os arquivos de log se parecem e o que se pode fazer para detê-los. Foi escrito por Peter Hansteen.