Dicas de Configurações para VPS Linux
LinuxEsses 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.