Este guia demonstra como configurar e proteger seu servidor SSH em servidores Linux, tornando sua conexão mais segura e evitando acessos não autorizados. O SSH (Secure Shell) é o método mais comum para acessar servidores remotamente de forma segura, e existem várias medidas que você pode tomar para fortalecer a segurança.

Na maioria das distribuições Linux, o SSH-Server já vem instalado por padrão. No entanto, se o seu sistema não o tiver, siga as instruções abaixo para instalá-lo.

1. Atualize os Pacotes do Sistema e instale o OpenSSH

sudo apt update -y && sudo apt upgrade -y && sudo apt install openssh-server openssh-client

Após a instalação, verifique se o serviço está rodando:

sudo systemctl status ssh

Os arquivos de configuração do OpenSSH estão localizados em /etc/ssh/. Antes de fazer qualquer alteração, é recomendado fazer um backup do arquivo de configuração principal:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bkp

Nota: Lembre-se de que o arquivo correto a ser editado é o sshd_config (servidor) e não o ssh_config (cliente).

2. Configurações Básicas de Segurança

Após o backup, você pode começar a editar o arquivo de configuração sshd_config. Use o editor de sua preferência, como o nano:

sudo nano /etc/ssh/sshd_config

A primeira configuração à ser realizada é alterar a Porta Padrão de conexão SSH:

Port 2022

[!NOTE] Evite usar portas amplamente conhecidas, como 2022 ou 9022, e caso esteja usando o Fail2Ban, lembre-se de alterar a configuração da porta no Fail2Ban também.

3. Personalizando configurações de segurança

# Desativar Login Root
PermitRootLogin no

# Limitar Tentativas de Login
MaxAuthTries 3

# Tempo de Carência para Login
LoginGraceTime 20

# Desativar Autenticação por Senha
## Se você configurou **chaves SSH** para autenticação, desabilite o login por senha para aumentar a segurança:
PasswordAuthentication no

# Bloquear Logins com Senhas Vazias
PermitEmptyPasswords no

# Desativar Autenticações Desnecessárias
ChallengeResponseAuthentication no
KerberosAuthentication no
GSSAPIAuthentication no

# Desativar Encaminhamento Gráfico (X11)
## Se você não precisa de aplicativos gráficos remotos via SSH, desative o X11 forwarding
X11Forwarding no

# Desativar Túnel e Encaminhamentos de Conexão
## Se o seu servidor não utiliza tunelamento SSH ou encaminhamento de portas, é recomendável desativar essas opções
AllowAgentForwarding no
AllowTcpForwarding no
PermitTunnel no

# Desabilitar Banner Detalhado
DebianBanner no

4. Reiniciando o Serviço SSH

Após realizar todas as alterações no arquivo de configuração, reinicie o serviço SSH para que as mudanças tenham efeito:

sudo systemctl restart sshd

5. Configurações Avançadas

Para adicionar uma camada extra de segurança, é recomendável configurar a autenticação via chave RSA. Isso garante que apenas usuários com a chave correta possam acessar o servidor, eliminando a necessidade de senhas.

Gerando Chaves RSA

As chaves RSA devem ser geradas no dispositivo cliente (seu computador ou celular) e não no servidor. No cliente, use o seguinte comando para gerar as chaves:

ssh-keygen -t rsa

A chave pública gerada deve ser enviada para o servidor.

Adicionando Chave Pública no Servidor

Após gerado a chave basta que faça o envio para os servidores de destino:

ssh-copy-id user@<host>

Configurando SSH para Usar Apenas Chaves RSA

No arquivo de configuração sshd_config do servidor, faça as seguintes alterações para permitir apenas a autenticação via chave pública:

PubkeyAuthentication yes
AuthorizedKeysFile     .ssh/authorized_keys
PasswordAuthentication no

Reinicie o serviço SSH:

sudo systemctl restart sshd

Agora, o servidor só permitirá logins com chave RSA, tornando a autenticação muito mais segura.