Como (e por que) desativar o login root por SSH no Linux

Laptop Linux mostrando um prompt do bash

Efetuar login como usuário root do Linux é uma prática recomendada. Fazer login como root em uma conexão SSH é ainda pior. Dizemos por quê e mostramos como evitá-lo.

A espada de dois gumes

Você precisa de alguém com autoridade para possuir e administrar as partes do seu sistema operacional que são muito importantes ou muito sensíveis para serem tratadas por usuários comuns. É aí que entra o root. root é o superusuário todo-poderoso dos sistemas operacionais Unix e Linux.

A conta do usuário root, como todas as contas, é protegida por uma senha. Sem a senha do usuário root, ninguém mais poderá acessar essa conta. Isso significa que os privilégios e poderes do root não podem ser usados ​​por mais ninguém. O outro lado é que a única defesa entre um usuário mal-intencionado e os poderes do root é essa senha. As senhas, é claro, podem ser adivinhadas, deduzidas, localizadas e escritas em algum lugar ou forçadas com força bruta .

Se um invasor mal-intencionado descobrir a senha do root, ele poderá fazer login e fazer o que quiser em todo o sistema. Com os privilégios elevados do root, não há restrições sobre o que eles podem fazer. Seria como se o usuário root tivesse saído de um terminal sem sair, permitindo acesso oportunista à sua conta.

Por causa desses riscos, muitas distribuições modernas do Linux não permitem que o root faça login no computador localmente , muito menos por SSH. O usuário root existe, mas não possui uma senha definida para ele. E ainda assim, alguém precisa ser capaz de administrar o sistema. A solução para esse enigma é a

 sudo  

comando.

Recomendado:  Como abrir notificações com uma mão em um Google Pixel

sudopermite que usuários indicados usem temporariamente privilégios de nível raiz em suas próprias contas de usuário. Você precisa se autenticar para usar o sudo, o que é feito inserindo sua própria senha. Isso lhe dá acesso temporário aos recursos do root.

Seus poderes de root morrem quando você fecha a janela do terminal em que foram usados. Se você deixar a janela do terminal aberta, eles atingirão o tempo limite, retornando automaticamente ao status de usuário normal. Isso fornece outro tipo de proteção. Ele protege você de você mesmo.

Se você costuma fazer login como root em vez de como uma conta normal, qualquer erro cometido na linha de comando pode ser catastrófico. Ter que usar sudopara realizar a administração significa que você terá mais chances de se concentrar e ter cuidado com o que digita.

Permitir login root por SSH aumenta os riscos porque os invasores não precisam ser locais; eles podem tentar forçar seu sistema remotamente.

O usuário root e acesso SSH

É mais provável que você encontre esse problema ao administrar sistemas para outras pessoas. Alguém pode ter decidido definir uma senha de root para poder fazer login. Outras configurações precisam ser alteradas para permitir que o root faça login por SSH.

Essas coisas não acontecerão por acidente. Mas isso pode ser feito por pessoas que não compreendem os riscos associados. Se você assumir a administração de um computador nesse estado, precisará informar aos proprietários por que isso é uma má ideia e, em seguida, reverter o sistema para um funcionamento seguro. Se foi algo configurado pelo administrador do sistema anterior, os proprietários podem não saber disso.

Recomendado:  O que é DeFi? Noções básicas de finanças descentralizadas

Aqui está um usuário em um computador executando o Fedora, fazendo uma conexão SSH com um computador Ubuntu como usuário root do computador Ubuntu.

ssh root@ubuntu-22-04.local

O usuário root se conectando a um computador remoto usando SSH

O computador Ubuntu permite que o usuário root faça login via SSH. No computador Ubuntu, podemos ver que uma conexão ativa está em andamento do usuário root.

Quem

Usando o comando who para listar usuários logados

O que não podemos ver é quem está usando aquela sessão. Não sabemos se a pessoa do outro lado da conexão SSH é o usuário root ou alguém que conseguiu obter a senha do root.

Desativando o acesso SSH para root

Para desabilitar o acesso SSH para o usuário root, precisamos fazer alterações no arquivo de configuração SSH. Ele está localizado em “/etc/ssh/sshd_config.” Precisaremos usar sudopara escrever alterações nele.

sudo gedit /etc/ssh/sshd_config

Editando o arquivo sshd-config

Percorra o arquivo ou procure a string “PermitRootLogin”.

O arquivo sshd_config aberto em um editor com a linha PermitRootLoging destacada

Defina como “não” ou comente a linha colocando um hash ” #” como o primeiro caractere da linha. Salve suas alterações.

O arquivo sshd_config aberto em um editor com a linha PermitRootLoging definida como

Precisamos reiniciar o daemon SSH para que nossas alterações tenham efeito.

sudo systemctl reiniciar ssh

Reiniciando o daemon sshd

Se você também deseja impedir logins locais, desative a senha do root. Estamos adotando uma abordagem de cinto e suspensórios e usando as opções -l(bloquear) e -d(excluir senha).

sudo senha root -ld

Bloqueando a conta root e removendo a senha root

Isso bloqueia a conta e também remove a senha da conta. Mesmo que o usuário root esteja fisicamente sentado em frente ao seu computador, ele não conseguirá fazer login.

Uma maneira mais segura de permitir acesso SSH root

Às vezes você encontrará resistência gerencial para remover o acesso root por SSH. Se eles realmente não ouvirem, você poderá se encontrar em uma posição em que precisará restabelecê-lo. Se for esse o caso, você deverá ser capaz de fazer concessões de uma forma que reduza o risco e ainda permita logins remotos do usuário root.

Recomendado:  Dica rápida: você pode mover e renomear documentos macOS na barra de título

Usar chaves SSH para fazer uma conexão via SSH é muito mais seguro do que usar senhas. Como não há senhas envolvidas, elas não podem ser forçadas, adivinhadas ou descobertas de outra forma.

Antes de bloquear a conta root local, configure chaves SSH no computador remoto para que o usuário root possa se conectar ao seu computador local. Em seguida, exclua a senha e bloqueie a conta local.

Também precisaremos editar o arquivo “sshd_config” mais uma vez.

sudo gedit /etc/ssh/sshd_config

Editando o arquivo sshd-config

Altere a linha “PermitRootLogin” para que use a opção “proibir senha”.

O arquivo sshd_config aberto em um editor com a linha PermitRootLoging definida como

Salve suas alterações e reinicie o daemon SSH.

sudo systemctl reiniciar ssh

Reiniciando o daemon sshd

Agora, mesmo que alguém restabeleça a senha do usuário root, não será possível fazer login via SSH usando uma senha.

Quando o usuário root remoto faz uma conexão SSH com o computador local, as chaves são trocadas e examinadas. Se eles passarem na autenticação, o usuário root será conectado ao seu computador local sem a necessidade de uma senha.

ssh root@ubuntu-22-04.local

O usuário root se conectando a um computador remoto usando SSH sem senha

Entrada proibida

Recusar conexões remotas do usuário root é a melhor opção. Permitir que o root se conecte usando chaves SSH é a segunda melhor opção, mas ainda é muito melhor do que usar senhas.