Este post é checklist a seguir ao configurar um servidor Linux recém instalado. Numa instalação nova do Linux em um servidor é preciso configurar algumas coisas para se certificar que o sistema está seguro e atualizado.

Para acessar um servidor Linux, o padrão é usar o SSH com o comando:

ssh root@<endereco-do-servidor>

1. Criar usuário

Em sistemas Linux recém instalados o usuário inicial, geralmente, é o root. É recomendado criar um usuário próprio. Para isso execute o comando:

useradd <nome-do-usuario>

Após executar o comando insira uma senha para o novo usuário.

Concedendo privilégios administrativos

Após criar seu próprio usuário é preciso adicioná-lo ao grupo sudo para podermos executar algumas tarefas administrativas no sistema usando o comando sudo. Execute o seguinte comando para adicionar o usuário criado ao grupo sudo:

usermod -aG sudo <nome-do-usuario>

No Fedora, o usuário deve ser adicionado ao grupo wheel:

usermod -aG wheel <nome-do-usuario>

Após criar o seu próprio usuário já podemos desconectar do servidor pelo usuário root e conectar pelo nosso usuário e senha usando SSH.

2. Chave SSH

Para reforçar a segurança do servidor e maior conveniência ao conectar pelo SSH podemos usar chaves SSH. Com isso não será preciso digitar nenhuma senha para nos conectarmos.

No Windows 10, para criar uma chave SSH, bastar rodar o seguinte comando:

ssh-keygen -t ed25519

Nesse comando, o -t ed25519 especifica o algoritmo de criptografia da chave que queremos criar, nesse caso Ed25519. O programa vai perguntar onde deseja salvar as chaves pública e privada. Pode deixar no local padrão apertando Enter. Também vai perguntar por uma senha. Geralmente, deixe em branco em máquinas na qual somente você tenha acesso.

Pronto! O par de chaves SSH está criado. Agora temos que copiar a chave pública no servidor Linux para que ele aceite a conexão usando a correspondente chave privada.

Para copiar a chave pública no servidor basta usar o comando scp.

No Windows, através do Powershell, o comando é:

scp $env:USERPROFILE/.ssh/id_ed25519.pub <nomedousuario>@<enderecodoservidor>:~/.ssh/authorized_keys

No Linux o comando é:

scp ~/.ssh/id_ed25519.pub <nomedousuario>@<enderecodoservidor>:~/.ssh/authorized_keys

3. Desabilitar acesso root e acesso por senha

Após criar um usuário próprio e configurar uma chave SSH é mais do que recomendado desabilitar o acesso pelo usuário root e desabilitar o acesso por senha. Para fazer isso edite o arquivo /etc/ssh/sshd_config com algum editor de texto (vim, nano, emacs).

sudo nano /etc/ssh/sshd_config

Para desabilitar acesso root troque PermitLoginRoot yes por PermitLoginRoot no

Para desabilitar acesso por senha substitua PasswordAuthentication yes por PasswordAuthentication no

Após salvar o arquivo de configuração editado é preciso reiniciar o daemon:

sudo systemctl restart sshd

4. Firewall

O Uncomplicated Firewall (UFW) é uma interface simplificada do iptables para configurar um firewall para permitir e bloquear tráfego de rede em sistemas Linux. Para instalar use o APT:

sudo apt install ufw

Para listar as portas abertas no Linux use o comando:

sudo ss -tupln

Para permitir ou bloquear tráfego pelo número da porta use o comando:

sudo ufw allow <numero-da-porta>  # permite
sudo ufw deny <numero-da-porta>   # bloqueia

É possível especificar o nome do serviço, ao invés do número da porta, para permitir ou bloquear o tráfego. Para listar os serviços disponíveis:

sudo ufw app list

Então, para permitir ou bloquear acesso pelo nome do serviço:

sudo ufw allow <nome-do-aplicativo>  # permite acesso
sudo ufw deny <nome-do-aplicativo>   # bloqueia acesso

Após definir as regras de permissão e bloqueio de tráfego é preciso habilitar o UFW:

sudo ufw enable

Depois disso, sempre que você fizer alguma mudança nas regras do UFW será preciso recarregar com o comando:

sudo ufw reload

Referências: