Tutorial: Configuração Segura de SSH num Servidor Linux
Introdução
Neste tutorial, vamos configurar um servidor Linux para permitir conexões SSH seguras, com foco no bloqueio de autenticação com o utilizador root, na criação de uma chave para aceder ao servidor Linux sem password e na configuração utilizando o Fail2Ban.
Pré-requisitos
- Uma máquina virtual (VM), preferencialmente Linux, com SSH instalado e para a realização das configurações;
- Acesso à máquina local — pode ser o PC pessoal — para testar a conexão SSH.
1. Desativar Autenticação com o Utilizador Root
O primeiro passo é garantir que não é possível fazer login através do utilizador root via SSH.
- Abra o ficheiro de configuração do SSH:
sudo nano /etc/ssh/sshd_config2. Localize a linha PermitRootLogin e altere para:
PermitRootLogin noNota: No caso de não encontrar o PermitRootLogin no ficheiro, podem adicionar no fim do mesmo.
3. Salve o ficheiro e saia do mesmo (Ctrl + X, Y, Enter).
4. Reinicie o serviço SSH para aplicar as mudanças:
sudo systemctl restart ssh2. Desativar Acesso via SSH sem Senha
- Abra novamente o ficheiro de configuração do SSH:
sudo nano /etc/ssh/sshd_config2. Localize a linha PasswordAuthenticatione altere para:
PasswordAuthentication no3. Salve o ficheiro e saia do mesmo (Ctrl + X, Y, Enter).
4. Reinicie o serviço SSH para aplicar as mudanças:
sudo systemctl restart ssh3. Criar um Banner de Aviso no SSH
- Abra o ficheiro de banner:
sudo nano /etc/issue.net2. Adicione a seguinte mensagem:
Bem-vindo ao SSH de ASS! CUIDADO!3. Salve o ficheiro e saia do mesmo (Ctrl + X, Y, Enter).
4. No ficheiro de configuração do SSH (/etc/ssh/sshd_config), certifique-se de que a linha Banner está configurada:
Banner /etc/issue.net5. Reinicie o serviço SSH para aplicar as mudanças:
sudo systemctl restart ssh4. Alterar o Porto Padrão do SSH
Passo 1: Modificar o ficheiro de configuração do SSH
- Abra o ficheiro de configuração do SSH:
sudo nano /etc/ssh/sshd_config2. Altere a linha Portpara:
Port 55553. Salve o ficheiro e saia do mesmo (Ctrl + X, Y, Enter).
4. Reinicie o serviço SSH para aplicar as mudanças:
sudo systemctl restart sshPasso 2: Atualizar as regras da Firewall
- Verifique se o UFW está instalado
sudo apt list --installed | grep ufwSe não aparecer nada, significa que o UFW não está instalado.
2. Instalar o UFW (caso não esteja instalado):
sudo apt update && sudo apt install ufw -y3. Permitir a porta 5555 e ativar o UFW (se não estiver ativo):
sudo ufw allow 5555/tcp
sudo ufw enable4. Verifique as regras da Firewall:
sudo ufw status5. Criar uma Chave SSH para Acesso Sem Senha
Passo 1: Gerar a chave SSH
No PC pessoal, gere um par de chaves SSH:
ssh-keygen -t rsa -b 4096- Quando pedir um local para guardar a chave, pressiona
Enterpara usar o padrão (~/.ssh/id_rsa). - Se perguntar por uma passphrase, podes deixar em branco.
Passo 2: Copiar a chave para o servidor
Utilize o ssh-copy-id para copiar a chave para o servidor:
ssh-copy-id -i ~/.ssh/id_rsa.pub -p 5555 utilizador@IP_VMPasso 3: Testar a Conexão Sem Senha
Agora, tente conectar-se ao servidor sem precisar de senha:
ssh utilizador@IP_VM -p 55556. Configuração do Fail2Ban
Passo 1: Instalar o Fail2Ban
Caso ainda não estiver instalado, faça a instalação:
sudo apt install fail2banPasso 2: Configurar o Fail2Ban
Edite o ficheiro da configuração:
sudo nano /etc/fail2ban/jail.localAdicione a seguinte configuração para proteger o SSH:
[sshd]
enabled = true
port = 5555
maxretry = 3 # Permitir apenas 3 tentativas de autenticação
bantime = 600
ignoreip = 127.0.0.1 192.168.1.100 # Ignore 2 IPs ou redes à escolha
# Permitir apenas autenticação de dois IPs específicos
filter = sshd
findtime = 600
action = iptables[name=SSH, port=5555, protocol=tcp]Passo 3: Reiniciar o Fail2Ban
Reinicie o Fail2Ban para aplicar as configurações:
sudo systemctl restart fail2ban
sudo systemctl enable fail2banConclusão
Neste tutorial, configurámos o acesso SSH seguro, desabilitámos o login como root, utilizámos as chaves SSH e configurámos o Firewall e o Fail2Ban, cujo objetivo é a proteção do servidor. Assim, o servidor está mais seguro contra ataques de brute-force e de acessos indesejados.
