Segurança SSH · 5 min read · Dec 28, 2025

Guia de Fortalecimento de Segurança do OpenSSH para Linux

SSH é um dos protocolos mais amplamente utilizados para administração de sistemas em plataformas Linux. Está disponível para muitos sistemas operacionais baseados em Unix, Linux e MacOS. É baseado no modelo cliente-servidor, onde uma máquina executa o componente do servidor e a outra usa uma ferramenta cliente para acessá-lo.

Como o SSH funciona?

O cliente (ssh) inicia a conexão enviando um pedido ao servidor. O servidor escuta os pedidos de entrada usando o daemon do servidor (sshd). Ele usa sua chave pública para se autenticar ao cliente que tenta se conectar:

Dessa forma, o cliente tem a certeza de que está se conectando ao servidor SSH correto. Quando isso é feito, o cliente pode acessar o servidor. Se você estiver em um cliente Windows, terá que usar ferramentas como putty para se conectar ao servidor. Tanto o cliente quanto o servidor podem ser instalados no mesmo sistema, isso significa que você pode usar a ferramenta cliente para acessar outras máquinas ou seu sistema pode ser o próprio servidor que pode ser acessado por outros. Nesse caso, o arquivo de configuração é colocado no mesmo diretório, mas com um nome ligeiramente diferente. A localização do diretório é ‘/etc/ssh’ e o nome do arquivo de configuração do cliente ssh é ‘ssh_config’ e o do arquivo de configuração do servidor é ‘sshd_config’:

listando diretório ssh

Em caso de você ter ambos os arquivos em seu sistema, deve escolher sabiamente qual arquivo você precisa configurar. Na maioria dos casos, é o servidor que precisamos configurar para segurança, pois ele abre a porta para acessos potenciais no sistema.

Primeiro, começamos verificando o status do daemon SSH ou sshd em nosso servidor. Dessa forma, podemos ver se ele está em execução e habilitado para iniciar automaticamente na inicialização. O comando abaixo verificará o status do sshd:

$ systemctl status ssh.service

Ou use o abaixo:

$ systemctl status sshd.service

status do serviço ssh

Na captura de tela, podemos ver que o serviço está ativo e habilitado. Ele está em execução há 6 horas. Quando você expande a visualização do terminal pressionando a seta para a direita, notará que ele está ouvindo na porta padrão 22.

Às vezes, fazemos alterações no arquivo de configuração SSH do sistema remoto enquanto estamos conectados a ele usando o próprio SSH. Nesse caso, devemos usar o comando reload em vez do restart. Dessa forma, é menos provável que sejamos desconectados.

Configurando o SSH usando as Melhores Práticas

Acho que agora é hora de começar a configurar a configuração do servidor SSH. Antes de sujar as mãos com o arquivo de configuração SSH, devemos fazer um backup do arquivo com as configurações padrão:

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

Após realizar o backup, temos a certeza de que, se bagunçarmos o arquivo principal e quebrarmos nosso SSH, podemos usar o arquivo de backup para voltar à normalidade.

1. Mudando a Porta Padrão

O daemon sshd, por padrão, escuta na porta 22 do servidor. É recomendado mudar esse valor para algum outro número de forma a reduzir o escopo de ataques automatizados usando scripts. Essa abordagem é chamada de segurança através da obscuridade. Para isso, abra o arquivo abaixo e procure pela linha contendo o texto ‘#Port 22’.

$ sudo nano /etc/ssh/sshd_config

Descomente a linha ‘#Port 22’ e mude ‘22’ para algum outro número de porta, que não esteja em uso em seu sistema. Precisamos mudá-lo para ‘222’ e reiniciar o serviço. Agora use o comando ssh com a opção ‘p’ para especificar a nova porta:

$ ssh user@system_ip -p 222

2. Desabilitando o login como usuário Root

Root é o usuário supremo em qualquer sistema Linux com acesso a todos os recursos do seu sistema. Caso você não precise de um acesso root estrito, deve desabilitar a facilidade de login root em seu servidor. Para isso, abra o mesmo arquivo acima:

$ sudo nano /etc/ssh/sshd_config

E defina o parâmetro ‘PermitRootLogin’ como ‘no’. Isso garantirá que o servidor estará protegido contra os ataques aleatórios direcionados à conta root. A opção padrão é ‘prohibit-password’, que permite o login baseado na autenticação por chave pública, mas nega os logins baseados em senha.

3. Definindo a Versão do Protocolo

A versão antiga do protocolo SSH é 1 e é menos segura em comparação com SSH2, e eles têm implementações de rede diferentes e também não são compatíveis entre si. Para verificar qual versão do protocolo está ativa em seu servidor, abra o arquivo sshd_config novamente e procure pela linha ‘Protocol’:

$ cat /etc/ssh/sshd_config | grep ‘Protocol’

Caso você tenha uma saída vazia, o OpenSSH pode estar provavelmente usando a versão 2, como foi o nosso caso. Outra maneira é usar a utilidade de comando netcat:

$ nc localhost 22


Saída de Exemplo:

SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.4

A partir da saída, podemos ver que o SSH2 está ativo em nosso sistema.

Para verificar quais versões de protocolos um servidor remoto está executando, tente se conectar a ele usando um cliente ssh com a opção -Q (consulta):

$ ssh -Q protocol-version user@server_name

Consulta de protocolo SSH

A imagem acima mostra uma versão SSH 2 ao acessar um servidor ssh Ubuntu a partir de um Kali Linux.

4. Complexidade da Senha

Senhas fracas são sempre vulneráveis a serem exploradas, então senhas vazias são mais propensas a serem exploradas. A opção PermitEmptyPasswords deve, portanto, ser definida como ‘no’ no arquivo sshd_config. Da mesma forma, o número de tentativas de login com senha errada deve ser limitado para reduzir as chances de ataque de força bruta. Isso pode ser alcançado com a opção ‘MaxAuthTries’ definida para um valor menor, como 3.

Limitando tentativas de login via ssh

A partir da imagem acima, podemos ver que, quando definimos o valor de ‘MaxAuthTries’ para 3, somos negados o SSH após três senhas erradas. Outro aspecto importante de segurança é usar autenticação por chave pública para login. Os modelos de autenticação baseados em chave são menos vulneráveis a ataques de força bruta. Da mesma forma, podemos usar o módulo de autenticação PAM para fortalecer ainda mais o servidor SSH.

Conclusão

Neste guia, tentamos cobrir os pontos mais importantes para proteger um servidor SSH e resumi-los em quatro pontos principais. Embora este guia não seja completo, você pode encontrar mais áreas para fortalecer ainda mais seu servidor SSH. Por exemplo, você pode tentar adicionar uma mensagem de banner para alertar os usuários sobre o uso do seu sistema via SSH. Você também pode negar o login com uma senha e usar autenticação baseada em chave para login sem senha. Outra coisa interessante é que você pode limitar o número de usuários SSH e seu tempo de conexão.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.