Vulnerabilidade SSH pode afetar mais de 11 milhões de servidores
O SSH é um dos protocolos mais utilizados para manutenção de ativos de rede, e uma falha deste porte põe em risco a sua segurança.


Recentemente foi descoberta uma falha no protocolo SSH que afeta mais de 11 milhões de dispositivos em todo o mundo.
Identificado pelas CVE-2023-48795, CVE-2023-46445 e CVE-2023-46446, O SSH Terrapin Attack se aproveita de uma vulnerabilidade descoberta durante a troca de mensagens entre cliente e servidor, onde arbitrariamente um atacante intercepta essa comunicação, conhecida como “handhsake” e modifica o tráfego da conexão.
O SSH é um dos protocolos mais utilizados no mundo para manutenção de ativos na rede via acesso remoto, e uma falha deste porte põe muitos administradores de sistemas em dúvida quanto à sua segurança, onde muitos podem até mesmo cogitar utilizar outras formas de acesso para evitar problemas.
Acontece que independente do protocolo, sempre haverá novas vulnerabilidades, e não é trocando a tecnologia que resolveremos nossos problemas de segurança.
Portanto, nosso objetivo com essa postagem é trazer uma forma de solucionar (mesmo que temporariamente, pois até o momento da redação deste post, ainda não há uma correção oficial por parte da implementação SSH), mas já auxiliará numa correção paliativa.
Mitigação
Como mencionado inicialmente, a ameaça requer que um atacante possa interceptar a sua conexão através de um ataque “Man-in-the-middle (MITM).
Além disso, a falha ocorre através dos algoritmos de encriptação chacha20-poly1305@openssh.com e *-etm@openssh.com. Deste modo, você pode desativar temporariamente estes algoritmos no arquivo de configuração SSH do seu servidor, até que o patch oficial seja disponibilizado.
IMPORTANTE: Caso seja configurado incorretamente, ou seu cliente não suporte esses algoritmos, você pode perder acesso ao seu servidor. Portanto, não altere nenhuma configuração se não tiver certeza do que está fazendo.
Em tempo, versões anteriores do OpenSSH 6.3 são vulneráveis a ataques de estouro de buffer (bufferoverflow) ao utilizar o algoritmo AES-GCM.
A solução acima descrita foi originalmente publicada no site oficial do ataque, o qual disponibiliza várias referências, lista completa de implementações afetadas, estudos técnicos e ferramentas de apoio como scanner de vulnerabilidades.
O SSH Terrapin Attack é apenas uma das inúmeras ameaças existentes na vasta rede mundial de computadores, para os íntimos: internet.
Pensando nisso trouxemos aqui algumas dicas para uma melhor utilização do protocolo SSH através de técnicas básicas de “hardening”, que vão tornar o seu servidor mais seguro e protegido contra ataques simples e explorações de vulnerabilidades comumente conhecidas.
Como melhorar a segurança SSH do meu servidor?
Considerações iniciais
1. A maioria das implementações pode ser feita diretamente no arquivo de configurações do SSH que por padrão fica localizado em /etc/ssh/sshd_config, o qual trataremos a partir de agora como "arquivo de configurações";
2. Caso você não o encontre no local informado, é possível realizar uma busca no sistema, através do seguinte comando:
sudo find / -name sshd_config
3. Para que qualquer alteração surta efeito, será necessário reiniciar o serviço sshd;
4. Caso alguma linha do arquivo de configurações inicie com # e contenha um parâmetro apresentado nas dicas a seguir, demova-o para descomentar aquela regra;
5. Todas as alterações envolvendo o arquivo de configurações podem ser aplicadas de uma única vez.
IMPORTANTE: As técnicas aqui apresentadas podem influenciar na forma como você utiliza servidor e seus respectivos acessos, e qualquer configuração incorreta pode ocasionar a perda do acesso ao seu host. Portanto, antes de qualquer alteração, avalie os impactos e faça os ajustes conforme as suas necessidades.
Alterar a porta padrão
Abra o arquivo de configurações com o editor de texto de sua preferência:
Obs.: Todas as configurações que se encontram comentadas, possuem o seu valor padrão para o sistema.
sudo nano /etc/ssh/sshd_config
Localize a linha onde se encontra a porta e altere para o número de sua preferência (para evitar conflitos, observe se não há outro serviço utilizando a porta escolhida*).
No nosso arquivo de exemplo, altere de:
#Port 22
para
Port 65432
* Você pode conferir quais portas estão em uso com um dos seguintes comandos:
sudo lsof -i -n -P | grep LISTEN
netstat -tulpn
ss -tulpn
IMPORTANTE: Uma vez que a porta tenha sido modificada, será necessário informá-la na hora do seu acesso, seja no campo "porta" de um cliente SSH como o PuTTY ou via linha de comando, através do parâmetro "-p".
Exemplos:
ssh -p 65432 usuario@servidorremoto.com.br
ssh -p 65432 usuario@146.99.25.252
Limitar a quantidade de tentativas de login
No arquivo de configurações, altere para a quantidade de tentativas que desejar. No nosso exemplo, 3
MaxAuthTries 3
Permitir apenas usuários específicos
No arquivo de configurações, altere:
AllowUsers usuario1 usuario2 usuario3
Desabilitar acesso do usuário root
No arquivo de configurações, altere:
PermitRootLogin no
IMPORTANTE: É necessário que você possua outro usuário com acesso garantido ao SSH.
Desabilitar login baseado em senha
No arquivo de configurações, altere:
PasswordAuthentication no
PubKeyAuthentication yes
IMPORTANTE: É necessário ter previamente configurado o acesso por chaves SSH.
Não permitir conexões sem senha
No arquivo de configurações, altere:
PermitEmptyPasswords no
Desativar encaminhamento X11
No arquivo de configurações, altere:
X11Forwarding no
Definir tempo máximo ocioso
No arquivo de configurações, altere:
ClientAliveInterval 300
Obs1.: O tempo é dado em segundos, portanto, neste exemplo, o tempo máximo de inatividade de um cliente será de 5 minutos.
Obs2.: Se você precisa executar comandos que deixarão sua sessão ociosa por um longo período de tempo, considere utilizar um software multiplexador de terminal como o GNU Screen ou o tmux.
Assim, mesmo que sua sessão SSH caia por inatividade, o comando continuará executando em uma sessão interna, que pode ser retomada após reconectar ao servidor.
Bloquear ataques de bruteforce
Existem inúmeras soluções para bloqueio de ataques de força bruta como o Sentry, Denyhosts, SpyLog, SSHGuard, Fail2ban entre outros. Neste post apresentaremos o Fail2ban.
Instale o aplicativo com o seguinte comando em distribuições CentOS, Fedora e "RedHat based":
sudo yum install fail2ban
Para distribuições Ubuntu, Mint e "Debian based", utilize:
sudo apt-get install fail2ban
O arquivo de configurações do fail2ban, por padrão é localizado em /etc/fail2ban/jail.conf
Atenha-se aos seguintes parâmetros:
ignoreip: define quais redes serão ignoradas do monitoramento. Deve ser declarado no formato de CIDR, ex.: 192.168.1.0/255.255.255.0 ou 192.168.1.0/24;
bantime: tempo em segundos que o atacante será banido;
maxretry: define o máximo de tentativas permitidas;
banaction: define qual será a ação que o fail2ban vai tomar, o padrão é bloquear o acesso a todas as portas via iptables.
Essas configurações servem para qualquer serviço e ficam dentro da sessão [DEFAULT]. As diretivas específicas para acesso SSH estão agrupadas na sessão [ssh] e, dentre elas, destacam-se:
enable: habilita o serviço;
port: define a porta do serviço a ser monitorada;
filter: define o filtro que será usado ao analisar os arquivos de logs;
logpath: define o caminho para o arquivo de log que será usado durante o monitoramento;
maxretry: usado para sobrescrever o valor padrão de tentativas global.
Você pode acompanhar o log do fail2ban em tempo real através do comando:
tail -f /var/log/fail2ban.log
Conclusão
A ideia deste guia é fornecer alguns insigts básicos que livrem seu servidor das configurações padrão, e forneçam um maior nível de segurança para seu ambiente.
Você pode consultar mais detalhes das configurações aqui abordadas nos manuais das ferramentas através dos comandos man ssh e man fail2ban.
Novamente lembrando: todas estas técnicas podem influenciar na forma como você utiliza servidor, e qualquer configuração incorreta pode ocasionar a perda do acesso ao seu host. Portanto, antes de qualquer alteração, avalie os impactos e faça os ajustes conforme a sua necessidade. E na dúvida, procure um especialista.
A Overnine oferece várias soluções de segurança para o seu ambiente. Caso tenha ficado com alguma dúvida ou busca uma solução mais robusta de segurança para seu ambiente, entre em contato conosco que estaremos prontos para lhe atender.
Clique aqui para ver outras matérias.