Recentemente, devido a uma reforma de segurança, muitos clientes enfrentaram o problema do CVE-2024-6387, um vulnerabilidade de execução remota no servidor OpenSSH. Outros profissionais também têm trabalhado na correção dessa falha. Durante o processo, encontrei dificuldades com o uso do SFTP após a atualização, e compilei este guia passo a passo.
Baixando os Pacotes
Os arquivos foram baixados diretamente para o diretório raiz, ou seja, /root.
cd ~
wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1w.tar.gz
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz
Para ambientes offline, é necessário preparar previamente pacotes yum ou imagens do sistema.
yum -y install zlib zlib-devel gcc openssl-devel pam-devel make build-essential gcc-c++ libtool openssl openssl-devel unzip net-tools vim telnet tree pstree cmake telnet zip xz
Verificando a versão atual do SSH: ssh -V. O resultado geralmente será algo como:
[root@ceshi0826 ~]# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
Ativando o acesso via Telnet (opcional)
Após desinstalar o SSH, não será possível conectar-se em novas janelas, mas ainda é possível usar a janela atual. Para garantir acesso ao servidor em caso de falha na reinstalação ou interrupções de rede, ative o serviço telnet:
# Instale o servidor telnet
yum install -y telnet-server
rpm -ivh telnet-server-0.17-66.el7.x86_64.rpm
# Inicie o serviço
systemctl start telnet.socket
# Crie um usuário regular e defina uma senha
add greatmap
passwd greatmap
Teste o acesso via telnet a partir de outro servidor:
telnet endereço_do_servidor 23
Instalando o OpenSSL
Desinstale a versão atual do OpenSSL:
yum remove openssl
Compile e instale o novo OpenSSL:
tar -xzvf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w/
./config --prefix=/usr
make && make install
cd ..
Verifique a versão instalada: openssl version
[root@ceshi0826 ~]# openssl version
OpenSSL 1.1.1w 11 Sep 2023
Instalando o OpenSSH
Faça backup dos arquivos de configuração (observe o caminho, pois será usado posteriormente):
mkdir -p /bak/ssh
cp -ra /etc/ssh/sshd_config /bak/ssh/
cp -ra /etc/pam.d/sshd /bak/ssh/
Remova a versão anterior do OpenSSH:
rpm -e --nodeps `rpm -qa | grep openssh`
rpm -qa openssh
Altere as permissões dos arquivos-chave:
chmod 600 /etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_ecdsa_key /etc/ssh/ssh_host_ed25519_key
Compile e instale o OpenSSH:
cd ~
tar -zxvf openssh-9.8p1.tar.gz
cd openssh-9.8p1
./configure --prefix=/usr/local/openssh --exec-prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-selinux --with-tcp-wrappers --with-ssl-dir=/usr/local/ssl --without-hardening
# Em caso de erro, tente esta alternativa
./configure --prefix=/usr/local/openssh --exec-prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-selinux --with-tcp-wrappers --with-ssl-dir=/usr/local --without-hardening
make && make install
Copei o script de inicialização do serviço:
cp contrib/redhat/sshd.init /etc/init.d/sshd
chmod u+x /etc/init.d/sshd
Restaure os arquivos de configuração salvos anteriormente:
cp -ar /bak/ssh/sshd_config /etc/ssh/
cp -ar /bak/ssh/sshd /etc/pam.d/
Ajustando Configurações
Mova a pasta do pacote para o diretório de instalação do SSH:
mv /root/openssh-9.8p1 /usr/local/openssh/
Edite o arquivo sshd_config para ajustar o caminho do servidor SFTP:
vim /etc/ssh/sshd_config
Altere a linha:
Subsystem sftp /usr/local/openssh/openssh-9.8p1/sftp-server
Se a opção de login root estiver comentada, descomente:
PermitRootLogin yes
Adicione o serviço ao arranque automático e reinicie:
chkconfig --add sshd
chkconfig sshd on
systemctl restart sshd
Confirme a nova versão:
[root@ceshi0826 ~]# ssh -V
OpenSSH_9.8p1, OpenSSL 1.1.1w 11 Sep 2023