Infraestrutura TI

Configuração Inicial do Servidor com Ubuntu

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"
JavaScript

Aqui 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
JavaScript

Caso 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
JavaScript

Após editar o arquivo, ele deve ficar parecido com o exemplo abaixo.

Para aplicar as mudanças, reinicie o servidor:

sudo systemctl restart ssh
JavaScript

Principais 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
JavaScript

No exemplo, temos OpenSSH e Samba instalados. Podemos liberar um deles assim:

sudo ufw allow OpenSSH
JavaScript

Liberando 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
JavaScript

Após garantir que todas as portas necessárias foram liberadas, podemos finalmente ativar o firewall:

sudo ufw enable
JavaScript

Conclusã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.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.