Mise à niveau d'OpenSSH et OpenSSL sur CentOS 7

Prérequis et Avertissements

Avant d'entamer la procédure, il est impératif de disposer d'un accès console physique ou d'une session alternative (comme Telnet) en cas de perte de connectivité SSH. Une interruption pendant la mise à jour peut verrouiller l'accès distant au serveur.

Environnement cible :

  • Système : CentOS 7.9
  • OpenSSL : Migration de 1.0.2k vers 1.1.1q
  • OpenSSH : Migration de 7.4p1 vers 9.1p1
  1. Récupération des sources

Téléchargez les archives offiicelles depuis les dépôts sécurisés. L'utilisation de variables pour les versions facilite la maintainance du script.

export OPENSSL_VER="1.1.1q"
export OPENSSH_VER="9.1p1"

wget https://www.openssl.org/source/openssl-${OPENSSL_VER}.tar.gz
wget https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/openssh-${OPENSSH_VER}.tar.gz

tar -xzf openssl-${OPENSSL_VER}.tar.gz
tar -xzf openssh-${OPENSSH_VER}.tar.gz
  1. Compilation et Installation d'OpenSSL

La bibliothèque cryptographique doit être mise à jour en premier car OpenSSH en dépend.

# 2.1 Sauvegarde des binaires existants
mv /usr/bin/openssl /usr/bin/openssl.old
mv /usr/include/openssl /usr/include/openssl.old

# 2.2 Compilation
cd openssl-${OPENSSL_VER}
./config shared -fPIC && make -j$(nproc) && make install

# 2.3 Configuration des liens symboliques
ln -sf /usr/local/bin/openssl /usr/bin/openssl
ln -sf /usr/local/include/openssl/ /usr/include/openssl

# 2.4 Mise à jour du cache des bibliothèques dynamiques
echo "/usr/local/lib64" >> /etc/ld.so.conf
/sbin/ldconfig

# 2.5 Contrôle de la version installée
openssl version
  1. Compilation et Installation d'OpenSSH

Assurez-vous que la compilation pointe vers la nouvelle installation d'OpenSSL.

# 3.1 Sauvegarde de la configuration SSH actuelle
mv /etc/ssh /etc/ssh.old

# 3.2 Préparation de l'environnement de build
cd openssh-${OPENSSH_VER}
mkdir -p /usr/local/openssh

# 3.3 Configuration du compilateur
./configure --prefix=/usr/local/openssh \
    --sysconfdir=/etc/ssh \
    --with-openssl-includes=/usr/local/include \
    --with-ssl-dir=/usr/local/lib64 \
    --with-zlib \
    --with-md5-passwords \
    --with-privsep-path=/var/empty

# 3.4 Compilation et installation
make -j$(nproc)
make install

# 3.5 Sécurisation de la configuration sshd
cat << EOF >> /etc/ssh/sshd_config
UseDNS no
PermitRootLogin yes
PubkeyAuthentication yes
PasswordAuthentication yes
X11Forwarding yes
X11UseLocalhost no
XAuthLocation /usr/bin/xauth
EOF

# 3.6 Remplacement des exécutables système
mv /usr/sbin/sshd /usr/sbin/sshd.old
mv /usr/bin/ssh /usr/bin/ssh.old
mv /usr/bin/ssh-keygen /usr/bin/ssh-keygen.old

ln -sf /usr/local/openssh/bin/ssh /usr/bin/ssh
ln -sf /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen
ln -sf /usr/local/openssh/sbin/sshd /usr/sbin/sshd

# 3.7 Vérification de la version client
ssh -V

# 3.8 Gestion du service systemd
mv /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sshd.service.old
cp -a ./contrib/redhat/sshd.init /etc/init.d/sshd
cp -a ./contrib/redhat/sshd.pam /etc/pam.d/sshd.pam

systemctl daemon-reload
systemctl enable sshd
systemctl restart sshd
  1. Validation de la connectivité

Ouvrez une nouvelle fenêtre de terminal pour tester la connexion SSH sans fermer la sesion actuelle. Vérifiez que l'authentification par clé ou par mot de passe fonctionne correctement avec la nouvelle version.

Étiquettes: centos-7 OpenSSH OpenSSL linux-sysadmin security-patch

Publié le 12 août à 02h20