Mise à niveau d'OpenSSH et OpenSSL sur CentOS 8

Avant de commencer la mise à niveau, il est crucial de vérifier la version actuelle du système, d'OpenSSH et d'OpenSSL. ### Vérification des versions

Identifiez la version de votre système d'exploitation CentOS :

cat /etc/redhat-release

Vérifiez la version d'OpenSSH installée :

ssh -V

Vérifiez la version d'OpenSSL :

openssl version

Téléchargement des paquets

Les sources d'OpenSSH sont disponibles sur openssh.com, et celles d'OpenSSL sur openssl.org.

Installation des dépendances

Avant de compiler et d'installer les nouveaux paquets, assurez-vous que toutes les dépendances nécessaires sont présentes. ### Mise à jour des miroirs Yum

Il est recommandé d'utiliser des miroirs à jour pour garantir l'accès aux derniers paquets. Si wget n'est pas installé, installez-le d'abord :

yum install wget -y

Naviguez jusqu'au répertoire de configuration des dépôts Yum et sauvegardez le fichier de configuration actuel :

cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.bak

Téléchargez un fichier de configuration de miroir récent (par exemple, d'Aliyun) :

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo

Nettoyez et régénérez le cache Yum :

yum clean all
yum makecache

Configuraton d'un accès de secours (Telnet)

Pour éviter toute interruption de connexion SSH pendant la mise à niveau, configurez Telnet comme solution de secours. Installez les paquets nécessaires :

yum install -y telnet telnet-server xinetd

Démarrez et activez les services Telnet :

systemctl start xinetd && systemctl start telnet.socket

Ouvrez le port 23 dans le pare-feu :

firewall-cmd --zone=public --add-port=23/tcp --permanent
firewall-cmd --complete-reload

Vérifiez que le port est ouvert :

firewall-cmd --query-port=23/tcp

Autorisez la connexion Telnet en modifiant le fichier PAM :

sed -i 's/^auth\[\[:space:\]\]\\+required\[\[:space:\]\]\\+pam\_securetty.so/#&/' /etc/pam.d/remote

Testez la connexion Telnet :

telnet <adresse_ip_du_serveur></adresse_ip_du_serveur>

Configurez Telnet pour qu'il démarre au lancement :

systemctl enable telnet.socket

Une fois Telnet fonctionnel, effectuez les étapes de mise à niveau via une session Telnet.

Installation des outils de compilation et des bibliothèques

Assurez-vous que les outils de développement essentiels sont installés :

yum install -y gcc gcc-c++ make autoconf openssl openssl-devel pam-devel
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y perl-IPC-Cmd perl-CPAN

Mise à niveau d'OpenSSL

Décompression et configuration

Placez le fichier source d'OpenSSL téléchargé dans un répertoire approprié, par exemple /usr/local/src. Décompressez l'archive :

cd /usr/local/
tar -zxvf openssl-X.Y.Z.tar.gz

Naviguez dans le répertoire décompressé :

cd openssl-X.Y.Z/

Configurez la compilation en spécifiant le répertoire d'installation et en activant la génération de bibliothèques partagées :

./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl -d shared

Compilation et installation

Compilez et installez OpenSSL :

make && make install

Sauvegarde et liaison des fichiers OpenSSL

Sauvegardez les binaires et bibliothèques OpenSSL existants :

mv /usr/bin/openssl /usr/bin/openssl.old
mv /usr/lib64/openssl /usr/lib64/openssl.old
mv /usr/lib64/libssl.so /usr/lib64/libssl.so.old

Créez des liens symboliques vers la nouvelle installation :

ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -sf /usr/local/openssl/include/openssl /usr/include/openssl
ln -sf /usr/local/openssl/lib/libssl.so /usr/lib64/libssl.so

Mettez à jour le cache du lieur dynamique :

echo "/usr/local/openssl/lib64" >> /etc/ld.so.conf
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
ldconfig -v

Vérification de la version d'OpenSSL

Confirmez que la nouvelle version est active :

openssl version

Mise à niveau d'OpenSSH

Désinstallation de la version existante

Arrêtez le service SSH :

service sshd stop

Désinstallez OpenSSH via RPM, en ignorant les dépendances pour assurer une désinstallation complète :

rpm -e `rpm -qa | grep openssh` --nodeps

Sauvegardez le répertoire de configuration SSH et supprimez son contenu :

cp -r /etc/ssh/ /etc/ssh_bak
rm -rf /etc/ssh/*

Décompression et configuration

Placez le fichier source d'OpenSSH téléchargé dans /usr/local/src et décompressez-le :

cd /usr/local/
tar -xzvf openssh-X.Y.Z.tar.gz
chown -R root:root openssh-X.Y.Z

Accédez au répertoire décompressé :

cd openssh-X.Y.Z/

Configurez la compilation en spécifiant les chemins pour l'installation, la configuration, et les dépendances OpenSSL et Zlib :

./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/openssl --without-openssl-header-check --with-pam --with-privsep-path=/var/lib/sshd --with-md5-passwords --with-zlib=/usr/local/src/zlib

Compilation et installation

Compilez et installez OpenSSH :

make -j $(nproc) && make install

Configuration du service et des liens

Copiez le script d'initialisation d'OpenSSH dans /etc/init.d/ et renommez-le en sshd :

cp -p contrib/redhat/sshd.init /etc/init.d/sshd
cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam

Copiez les binaires et outils OpenSSH vers les emplacements système standard :

cp -rf sbin/sshd /usr/sbin/sshd
cp -rf bin/ssh /usr/bin/ssh
cp -rf bin/ssh-keygen /usr/bin/ssh-keygen

Configuration de SSH et redémarrage

Activez la connexion root et l'authentification par mot de passe si nécessaire dans le fichier de configuration SSH :

echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config
echo 'PasswordAuthentication yes' >> /etc/ssh/sshd_config

Redémarrez le service SSH :

/etc/init.d/sshd restart

Vérifiez le statut du service SSH :

/etc/init.d/sshd status

Ajoutez le service SSH au démarrage automatique du système :

chkconfig --add sshd
chkconfig sshd on

Vérification de la version d'OpenSSH

Confirmez la version mise à jour d'OpenSSH :

ssh -V

Résolution des problèmes courants

Erreur zlib.h manquante

Si la compilation échoue avec un message indiquant que zlib.h est manquant, téléchargez et installez la bibliothèque zlib depuis sa source officielle. Décompressez-la dans /usr/local/src et suivez les instructions de compilation pour zlib.

Permissions des clés d'hôte incorrectes

Si le service SSH ne démarre pas en raison de permissions incorrectes sur les fichiers de clés d'hôte (par exemple, ssh_host_rsa_key), corrigez les permissions pour restreindre l'accès :

chmod 600 /etc/ssh/ssh_host_rsa_key
chmod 600 /etc/ssh/ssh_host_ecdsa_key
chmod 600 /etc/ssh/ssh_host_ed25519_key

Après avoir corrigé les permissions, redémarrez le service SSH.

Étiquettes: CentOS OpenSSH OpenSSL mise à niveau compilation

Publié le 21 juillet à 14h30