Existem várias vulnerabilidades de segurança em versões anteriores ao OpenSSH 9.3. Por esse motivo, precisamos atualizar o OpenSSH para a versão 9.3 mais recente.
Execute: ssh -V, podemos ver a versão atual do openssh
Para evitar acidentes durante o processo de atualização que possam fazer com que o servidor não funcione corretamente, é recomendável realizar um backup instantâneo do servidor antes da operação! ! !
1. Faça backup do arquivo sshd no pam.d original
mv /etc/pam.d/sshd /etc/pam.d/sshd-bak
ls -l /etc/pam.d/sshd*
cp /etc/ssh/ /etc/ssh-bak/
Ao fazer backup do arquivo sshd em pam.d, se você descobrir que esse arquivo não existe no caminho, você pode copiá-lo de outro servidor ou executar: vi /etc/pam.d/sshd. Você também pode digitá-lo à mão. O conteúdo é o seguinte:
#%PAM-1.0
auth substack password-auth
auth include postlogin
account required pam_sepermit.so
account required pam_nologin.so
account include password-auth
password include password-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open env_params
session required pam_namespace.so
session optional pam_keyinit.so force revoke
session optional pam_motd.so
session include password-auth
session include postlogin
2. Instale o telnet
O processo de atualização desinstalará o ssh antigo e impedirá o acesso remoto, portanto instale primeiro um Telnet. Se você não usar o servidor durante a instalação, poderá ignorar a instalação do telnet (afinal, há um backup instantâneo do servidor)
Verifique se o servidor e cliente telnet foram instalados no sistema. Os comandos são os seguintes:
rpm -q telnet-server
rpm -q telnet
Quando o telnet não estiver instalado no sistema, a seguinte mensagem será reportada:
Execute o comando para instalar o telnet
yum install telnet-server -y
yum install telnet -y
Configure a inicialização e inicie o telnet
systemctl enable telnet.socket
systemctl start telnet.socket
Abra a porta 23 no firewall e use o telnet ip para conectar e fazer login. Por padrão, o usuário root não tem permissão para fazer login usando telnet, então precisamos autorizá-lo.
echo 'pts/0' >>/etc/securetty
echo 'pts/1' >>/etc/securetty
Quando não podemos fazer login normalmente ao fazer login, o lado do host executa
tail /var/log/secure
Se o que vemos é: acesso negado: tty 'pts/3' não é seguro!
Neste ponto, se virmos o número de pontos, adicione o número
echo 'pts/3' >>/etc/securetty
Certifique-se de reiniciar o telnet após adicionar
3. Baixe o pacote openssh para atualizar
cd /opt/
wget http://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.3p1.tar.gz
Descompactar
tar -zxvf openssh-9.3p1.tar.gz
cd openssh-9.3p1
Desinstalar versão antiga
rpm -e --nodeps `rpm -qa | grep openssh`
Instale dependências relacionadas
yum -y install gcc pam-devel zlib-devel openssl-devel
Configuração de compilação
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-zlib --with-md5-passwords --with-pam
Compilar e instalar
make && make install
Autorização de arquivo
chmod 600 /etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_ecdsa_key /etc/ssh/ssh_host_ed25519_key
Copiar arquivo de configuração
cp -a contrib/redhat/sshd.init /etc/init.d/sshd
chmod u+x /etc/init.d/sshd
Restaurar arquivo de configuração
cp /etc/pam.d/sshd-bak /etc/pam.d/sshd
cp /etc/ssh-bak/sshd_config /etc/ssh/sshd_config
Adicionar inicialização automática na inicialização
chkconfig --add sshd
chkconfig sshd on
Execute: sshd -t para verificar se o arquivo de configuração está correto
Neste ponto, vimos que esses dois atributos não são suportados na versão atual do openssh. Entramos no arquivo de configuração e comentamos esses dois atributos.
vi /etc/ssh/sshd_config
Reinicie o SSD
systemctl restart sshd
Execute: ssh -V Neste ponto já podemos ver que o openssh foi atualizado para 9.3
4. Armadilhas encontradas durante o processo de atualização
4.1 Após a atualização, a ferramenta ssh não conseguiu se conectar com sucesso (ou conectou, mas a caixa preta não pôde ser aberta).Depois de pesquisar muitas informações, finalmente descobri que o problema estava no selinux. Neste ponto só precisamos executar: setenforce 0 e então reiniciar o serviço openssh.
setenforce 0
systemctl restart sshd
Neste ponto descobriremos que a ferramenta ssh pode se conectar com sucesso ao servidor
4.2 Após atualizar a ferramenta ssh, a janela sftp não pode ser aberta. Isso é fácil de resolver. Você só precisa configurar sshd_config para resolvê-lo facilmente.
vi /etc/ssh/sshd_config
Comente a linha Subsystem e adicione outra linha
Reinicie o serviço openssh. Observe que a ferramenta ssh usada também é fechada e reiniciada (pode ser devido ao status da conexão, mas o sftp não pode ser aberto. No entanto, esse problema foi resolvido até agora, então também precisa ser fechado e reaberto).