Você instalou o sistema operacional Ubuntu Server em seu PC ou servidor e agora tem um usuário root e uma senha. Quais são os próximos passos?
Pré-requisitos
Como a ideia desse tutorial é ser um ponto de partida para aqueles que acabaram de instalar o Ubuntu server, nosso unico requisito é que você tenha acesso a maquina, seja fisicamente ou por meio de conexões SSH.
Efetuando login como root
Assim que você cria uma nova instalação do Ubuntu Server 22.04, o usuário padrão é o root. Fazer login é simples: basta acessar via SSH da seguinte forma:
ssh root@IP
Caso você não tenha um terminal SSH, é possível instalar o Git Bash ou outras ferramentas similares. Para este guia, vamos partir do princípio de que você já possui um terminal pronto para uso.
O que é o Root?
Se você ainda não está familiarizado com o Linux, aqui vai uma breve explicação sobre o usuário root: ele é o usuário administrador do sistema operacional, com permissões máximas. No entanto, não recomendamos o uso do root no dia a dia, principalmente por ele ser o usuário padrão. Ataques de força bruta frequentemente utilizam o usuário root em tentativas de invasão. Além disso, o root está sempre com todas as permissões ativadas, o que pode ser arriscado.
Criando um novo usuário
Para este exemplo, vou criar um usuário com o meu nome. Faça o mesmo no seu caso. Como já estamos usando o usuário root, não será necessário o comando sudo
. Caso você esteja utilizando outro usuário, lembre-se de adicionar sudo
antes do comando.
adduser danilodorgam
Ao executar esse comando, você será solicitado a informar alguns dados, como a senha do usuário, nome completo, telefone, entre outros. Com exceção da senha, todos os demais dados podem ser pulados, se desejar.
Após concluir o processo, o novo usuário estará pronto para uso. No entanto, ainda não será possível se conectar com ele via SSH ou realizar tarefas que exijam permissões de administrador.
Dando acesso de administrador ao seu usuario
Em um servidor, é comum precisar de permissões elevadas para tarefas como instalar, atualizar ou remover pacotes. Para evitar a necessidade de fazer login diretamente como root, podemos simplesmente adicionar nosso usuário ao grupo sudo.
O sudo no Linux é um grupo especial de usuários que têm permissões para executar comandos com privilégios de superusuário (ou root) de forma temporária.
O comando para adicionar um usuário ao grupo sudo é:
usermod -aG sudo danilodorgam
Neste comando:
usermod
: Utilizado para modificar a conta de um usuário.-a
(append): Garante que o usuário será adicionado ao grupo especificado sem ser removido de outros grupos.-G
(groups): Especifica o grupo ao qual o usuário será adicionado.sudo
: Nome do grupo que concede permissões de superusuário temporárias.danilodorgam
: Nome do usuário que será adicionado ao grupo sudo.
A partir de agora, no nosso tutorial, vamos continuar usando o novo usuário. Para isso, troque para o usuário recém-criado da seguinte forma:
su danilodorgam
Agora, quando você estiver logado com seu usuário e precisar executar uma tarefa que requer privilégios de administrador, basta adicionar sudo
antes do comando. Por exemplo:
sudo apt update
Desabilitando login com root
Agora que já temos nosso usuário, não precisamos mais permitir que outras pessoas façam login com o usuário root. Para isso, é necessário ajustar as configurações do servidor SSH, editando o arquivo sshd_config
:
sudo nano /etc/ssh/sshd_config
Procure pela linha #PermitRootLogin yes
. Quando encontrá-la, remova o símbolo de comentário (#) e altere o valor de yes para no, deixando assim:
Esse arquivo contém outras opções. Recomendamos que você analise cada uma delas com cuidado e ajuste conforme necessário.
Alterando a porta padrão do Servidor SSH
Manter valores padrão em ambientes de produção não é recomendado, e isso inclui a porta 22 do SSH. No mesmo arquivo onde desabilitamos o login do usuário root, podemos alterar a porta 22 para outra.
Para isso, basta descomentar a linha #Port 22
e substituir o valor 22 pela porta desejada. Lembre-se de que, de acordo com a RFC 6335, a nova porta deve estar no intervalo de 1024 a 49151.
Recomendamos também verificar se a porta que você pretende usar já está em uso. Para isso, execute o seguinte comando:
ss -tuln | grep 2222
No exemplo, estamos verificando se algum programa está rodando na porta 2222. Como não havia nenhum serviço usando essa porta, a configuração final ficou assim:
Permitindo login apenas com chave de identidade
Outro ponto importante é desabilitar o acesso ao servidor por senha. Dessa forma, utilizaremos nossa chave SSH para o login e, para atividades que requerem o uso do sudo
, continuaremos usando a senha.
Configurando a chave SSH
Esse é um trecho das dicas sobre SSH. Veja todas elas em: Fundamentos Essenciais de SSH: Domine os Comandos Básicos. Com o terminal aberto, execute o seguinte comando:
ssh-keygen -t ed25519 -C "comentario opcional"
JavaScriptAqui estamos usando o programa ssh-keygen
para gerar um par de chaves com o algoritmo de criptografia ed25519
. No final, adicionamos um comentário opcional vinculado à chave.
Nos próximos passos, basta pressionar Enter. Para entender melhor o que cada comando faz, recomendamos a leitura completa do artigo mencionado.
Depois de gerar a chave na sua máquina pessoal, vamos vinculá-la ao servidor. Para isso, execute o seguinte comando:
ssh-copy-id -i /home/danilodorgam/.ssh/id_ed25519.pub danilodorgam@192.168.31.243
JavaScriptCaso tenha escolhido um caminho diferente ao salvar sua chave, utilize a opção -i com o caminho correto.
Desabilitando login por senha no SSH
Agora, de volta ao servidor, vamos editar o arquivo sshd_config
novamente. Se o seu SSH incluir o arquivo Include /etc/ssh/sshd_config.d/*.conf,
será necessário editá-lo. Caso contrário, procure pela linha PasswordAuthentication yes
e altere o valor para no
.
sudo nano /etc/ssh/sshd_config
sudo nano /etc/ssh/sshd_config.d/50-cloud-init.conf
JavaScriptApós editar o arquivo, ele deve ficar parecido com o exemplo abaixo.
Para aplicar as mudanças, reinicie o servidor:
sudo systemctl restart ssh
JavaScriptPrincipais ajustes no firewall
Se o seu servidor estiver em um provedor que não oferece configurações de firewall externas, recomendamos o uso do UFW, disponível por padrão no Ubuntu. Caso seu provedor ofereça um firewall externo, escolha um dos dois para utilizar, pois usar ambos pode resultar em armadilhas difíceis de depurar.
Como primeiro comando para validar a execução do firewall, vamos rodar:
sudo ufw status
Se ele estiver desabilitado, antes de ativá-lo, vamos adicionar os serviços que queremos acessar. Podemos fazer isso de duas maneiras:
Liberando aplicações no Firewall
Para liberar uma aplicação, precisamos primeiro descobrir quais estão disponíveis. Para isso, executamos o comando:
sudo ufw app list
JavaScriptNo exemplo, temos OpenSSH e Samba instalados. Podemos liberar um deles assim:
sudo ufw allow OpenSSH
JavaScriptLiberando permissão no firewall via porta
Caso, por algum motivo, o UFW não reconheça sua aplicação, podemos liberar o acesso pela porta desejada da seguinte forma:
sudo ufw allow 2222
JavaScriptApós garantir que todas as portas necessárias foram liberadas, podemos finalmente ativar o firewall:
sudo ufw enable
JavaScriptConclusão
Após essas configurações, temos um servidor menos padronizado e, portanto, um pouco mais seguro. O que achou dessas dicas? Gostaria de ver algum desses tópicos mais detalhadamente? Deixe um comentário, e podemos aprofundar o assunto.
No seu servidor, você costuma fazer algo diferente? Comente o que você faz e o motivo, e juntos podemos melhorar ainda mais este artigo.