Dicas de Configurações para VPS Linux

Linux  

Esses procedimentos foram realizados em uma VPS com o Sistema Operacional Debian. As instruções abaixo visam tornar o ambiente mais seguro, atualizado e organizado. Alguns comandos devem ser executados logado como root ou utilizando sudo em uma conta não privilegiada.

Importante: Os comandos precedidos por # devem ser executados como usuário root ou utilizando sudo. Caso opte por usar sudo, verifique se é necessário adicioná-lo a cada comando individual em sequências encadeadas com &&.

1. Atualização do Sistema Operacional

Mantenha o sistema sempre atualizado, garantindo correções de segurança e melhorias.

# apt update && apt upgrade -y && apt autoremove -y && apt clean

2. Configuração do fuso horário

Ajuste o fuso horário conforme a sua localização.

# dpkg-reconfigure tzdata

Nas caixas de seleção escolha “América” e depois a sua cidade, no meu caso “Belém”.

3. Criação do Arquivo de Swap

Se o seu servidor tiver pouca memória RAM e não contar com uma partição swap configurada, criar um arquivo de swap pode ser uma solução eficaz para melhorar o desempenho do sistema.

Primeiro, execute o comando:

# swapon --show

Se o comando não retornar nada, significa que não há nenhuma partição ou arquivo de swap configurado no sistema. Caso contrário, o comando exibirá uma lista com as áreas de swap configuradas.

Se não houver swap configurado, você pode criar um arquivo para essa finalidade. Para isso execute o comando abaixo, trocando o valor de 2G pelo tamanho desejado:

# fallocate -l 2G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile && echo "/swapfile none swap sw 0 0" >> /etc/fstab
  • fallocate -l 2G /swapfile - Cria um arquivo chamado /swapfile com tamanho de 2GB;
  • chmod 600 /swapfile - Altera as permissões do arquivo /swapfile para que somente o root possa lê-lo e escrevê-lo;
  • mkswap /swapfile - Configura o arquivo /swapfile como um arquivo de swap válido;
  • swapon /swapfile - Ativa o arquivo de swap, tornando-o imediatamente utilizável pelo sistema;
  • echo “/swapfile none swap sw 0 0” » /etc/fstab - Adiciona a entrada no arquivo /etc/fstab para que o swap seja ativado automaticamente durante a inicialização;

Ou caso prefira pode fazer por script, troque o valor de 2G pelo tamanho que você deseja:

#!/bin/bash
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo "/swapfile none swap sw 0 0" >> /etc/fstab

Ajuste do vm.swappiness (opcional): Para reduzir a tendência do sistema em usar o swap quando ainda há RAM disponível:

# echo "vm.swappiness=10" >> /etc/sysctl.conf && sysctl -p

4. Criação de usuário e configuração do SUDO

Crie um usuário comum para evitar trabalhar diretamente como root:

# adduser salomao

Escolha uma boa senha e se quiser responda ou vá dando ENTER para pular as demais perguntas.

Instale o sudo (caso não esteja instalado):

# apt install sudo

Adicione o usuário ao grupo sudo:

# usermod -aG sudo salomao

Agora você pode fazer login com o usuário salomao e usar sudo para tarefas administrativas.

5. Firewall com UFW

O UFW (Uncomplicated Firewall) é uma forma simples de configurar um firewall baseado no iptables.

Instale o UFW:

# apt install ufw -y

Antes de ativá-lo, permita a conexão SSH na porta padrão (22):

# ufw allow ssh

Se você mudou a porta do SSH, por exemplo para 2022, utilize:

# ufw allow 2022/tcp

Caso esteja configurando um servidor web, libere HTTP e HTTPS:

# ufw allow http
# ufw allow https

Para evitar tentativas de força bruta no SSH, você pode limitar o número de conexões:

# ufw limit ssh

Se você estiver utilizando outra porta (ex: 2022), precisará aplicar o comando explicitamente para a nova porta:

# ufw limit 2022/tcp

O comportamento padrão do ufw limit é que se um cliente fizer mais de 6 tentativas de conexão em 30 segundos, o UFW bloqueará temporariamente o IP que está realizando as tentativas excessivas. O bloqueio é temporário e será removido depois de um tempo, permitindo novas tentativas.

O ufw limit não substitui soluções mais robustas como o Fail2Ban, mas é uma medida simples e eficaz para mitigar ataques SSH de forma imediata.

Agora ative o firewall:

# ufw enable

6. Segurança do SSH

A configuração adequada do SSH é essencial para proteger o acesso ao seu servidor. Aqui estão os passos recomendados:

Alterar a Porta SSH

Para adicionar uma camada extra de segurança, considere alterar a porta padrão do SSH (22) para outra porta. No exemplo abaixo, usaremos a porta 2022, mas você pode escolher qualquer outra porta não utilizada. No servidor, edite o arquivo /etc/ssh/sshd_config e ajuste:

Port 2022

Em seguida, ajuste as regras do firewall para permitir conexões na nova porta. No exemplo abaixo, usamos o UFW:

# ufw allow 2022/tcp

Por fim, reinicie o serviço SSH para aplicar as alterações:

# systemctl restart ssh

Desativar o Login root via SSH

Edite o arquivo /etc/ssh/sshd_config e ajuste a linha:

PermitRootLogin no

Reinicie o SSH para aplicar as alterações:

# systemctl restart ssh

Autenticação por Chave Pública

No seu computador local (cliente):

Gere uma chave SSH com o comando:

ssh-keygen -t ed25519 -C "[email protected]"

Será perguntado o caminho para salvar a chave. Você pode aceitar o padrão ou definir outro local e nome. O prompt será algo como:

Enter file in which to save the key (/home/salomao/.ssh/id_ed25519):

No nosso exemplo vamos teclar ENTER para aceitar o padrão. Com isso, no diretório ~/.ssh/ serão criados os arquivos id_ed25519 e id_ed25519.pub.

O arquivo id_ed25519 contém a chave privada. Ele deve ser mantido seguro e protegido, pois é utilizado para autenticar sua identidade no servidor.

Já o arquivo id_ed25519.pub contém a chave pública. Ele será enviado para o servidor remoto e seu conteúdo adicionado ao arquivo authorized_keys.

Se a chave privada foi criada em um local diferente ou movida manualmente, você deverá ajustar as permissões:

chmod 600 ~/.ssh/id_ed25519

Envie a chave pública para o servidor remoto:

ssh-copy-id -i ~/.ssh/id_ed25519.pub salomao@seu_servidor

Depois disso a chave id_ed25519.pub será adicionada como uma linha no arquivo ~/.ssh/authorized_keys do servidor remoto.

Se você não usou ssh-copy-id no envio então logue no servidor, crie o diretório ~/.ssh (caso não exista) e mova o arquivo id_ed25519.pub para ele.

Depois use o comando cat para adicionar o conteúdo do aquivo id_ed25519.pub ao arquivo ~/.ssh/authorized_keys:

cat id_ed25519.pub >> ~/.ssh/authorized_keys

Após isso basta ajustar as permissões:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Agora você pode acessar o servidor sem senha usando:

ssh salomao@seu_servidor

Se existir mais de uma chave privada você pode especificar qual usar:

ssh -i ~/.ssh/id_ed25519 salomao@seu_servidor

Caso você tenha alterado a porta padrão do SSH (por exemplo, para 2022), utilize o parâmetro -p:

ssh -p 2022 salomao@seu_servidor

Gerenciando múltiplas chaves e conexões por alias

Se você precisa gerenciar múltiplas chaves ou simplificar a conexão com servidores SSH, pode configurar aliases no arquivo ~/.ssh/config no seu computador local.

Abra ou crie o arquivo ~/.ssh/config e adicione:

Host meu_servidor
    HostName seu_servidor
    User salomao
    IdentityFile ~/.ssh/id_ed25519

Usando múltiplas chaves e servidores:

Host servidor1
    HostName servidor1.com
    User salomao
    IdentityFile ~/.ssh/id_ed25519

Host servidor2
    HostName servidor2.com
    User salomao
    IdentityFile ~/.ssh/minha_nova_chave

Para servidores com portas customizadas, adicione a configuração da porta:

Host meu_servidor
    HostName seu_servidor
    User salomao
    Port 2022
    IdentityFile ~/.ssh/id_ed25519

Com isso, você pode se conectar usando apenas o alias:

ssh meu_servidor

Desativando a Autenticação por Senha no SSH

Após configurar o acesso ao servidor usando chaves SSH, é recomendável desativar a autenticação por senha para aumentar a segurança. Isso impede que usuários mal-intencionados tentem acessar o servidor por meio de ataques de força bruta ou outras técnicas.

Para isso edite o /etc/ssh/sshd_config e altere/adicione as seguintes linhas:

PasswordAuthentication no
ChallengeResponseAuthentication no

Essas configurações garantem que a autenticação por senha seja completamente desativada.

Certifique-se de que a autenticação por chave pública esteja ativada. Procure a linha abaixo e garanta que ela está definida como yes:

PubkeyAuthentication yes

Para aplicar as alterações, reinicie o serviço SSH:

# sudo systemctl restart ssh

Antes de fechar sua conexão atual com o servidor, teste a nova configuração abrindo uma nova sessão SSH:

ssh salomao@seu_servidor

Se o acesso por chave funcionar corretamente, você pode encerrar a sessão original.

Importante: Antes de desativar a autenticação por senha, certifique-se de que a chave pública foi corretamente configurada e sempre mantenha uma cópia de backup da sua chave privada em local seguro, caso contrário você poderá perder o acesso ao servidor.