Il existe diverses failles de sécurité dans les versions antérieures à OpenSSH 9.3. Pour cette raison, nous devons mettre à niveau OpenSSH vers la dernière version 9.3.
Exécuter : ssh -V, nous pouvons voir la version actuelle d'openssh
Afin d'éviter des accidents pendant le processus de mise à niveau qui pourraient empêcher le serveur de fonctionner correctement, il est recommandé d'effectuer une sauvegarde instantanée du serveur avant l'utilisation ! ! !
1. Sauvegardez le fichier sshd sous le pam.d d'origine
mv /etc/pam.d/sshd /etc/pam.d/sshd-bak
ls -l /etc/pam.d/sshd*
cp /etc/ssh/ /etc/ssh-bak/
Lors de la sauvegarde du fichier sshd sous pam.d, si vous constatez qu'il n'y a pas de fichier de ce type dans le chemin, vous pouvez le copier depuis un autre serveur, ou exécuter : vi /etc/pam.d/sshd. Vous pouvez également le saisir à la main. Le contenu est le suivant :
#%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. Installez Telnet
Le processus de mise à niveau désinstallera l'ancien ssh et empêchera l'accès à distance, installez donc d'abord un Telnet. Si vous n'utilisez pas le serveur lors de l'installation, vous pouvez ignorer l'installation telnet (après tout, il existe une sauvegarde instantanée du serveur)
Vérifiez si le serveur telnet et le client ont été installés sur le système. Les commandes sont les suivantes :
rpm -q telnet-server
rpm -q telnet
Lorsque telnet n'est pas installé sur le système, le message suivant sera signalé :
Exécutez la commande pour installer telnet
yum install telnet-server -y
yum install telnet -y
Configurer le démarrage et démarrer Telnet
systemctl enable telnet.socket
systemctl start telnet.socket
Ouvrez le port 23 sur le pare-feu et utilisez l'adresse IP telnet pour vous connecter et vous connecter. Par défaut, l'utilisateur root n'est pas autorisé à se connecter via telnet, nous devons donc l'autoriser.
echo 'pts/0' >>/etc/securetty
echo 'pts/1' >>/etc/securetty
Lorsque nous ne pouvons pas nous connecter normalement lors de la connexion, le côté hôte exécute
tail /var/log/secure
Si ce que nous voyons est : accès refusé : le tty 'pts/3' n'est pas sécurisé !
À ce stade, si nous voyons le nombre de pts, ajoutez le nombre
echo 'pts/3' >>/etc/securetty
Assurez-vous de redémarrer Telnet après avoir ajouté
3. Téléchargez le package openssh pour mettre à niveau
cd /opt/
wget http://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.3p1.tar.gz
Décompresser
tar -zxvf openssh-9.3p1.tar.gz
cd openssh-9.3p1
Désinstaller l'ancienne version
rpm -e --nodeps `rpm -qa | grep openssh`
Installer les dépendances associées
yum -y install gcc pam-devel zlib-devel openssl-devel
Compiler la configuration
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-zlib --with-md5-passwords --with-pam
Compiler et installer
make && make install
Autorisation de fichier
chmod 600 /etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_ecdsa_key /etc/ssh/ssh_host_ed25519_key
Copier le fichier de configuration
cp -a contrib/redhat/sshd.init /etc/init.d/sshd
chmod u+x /etc/init.d/sshd
Restaurer le fichier de configuration
cp /etc/pam.d/sshd-bak /etc/pam.d/sshd
cp /etc/ssh-bak/sshd_config /etc/ssh/sshd_config
Ajouter le démarrage automatique au démarrage
chkconfig --add sshd
chkconfig sshd on
Exécutez : sshd -t pour vérifier si le fichier de configuration est correct
À ce stade, nous avons vu que ces deux attributs ne sont pas pris en charge dans la version actuelle d'Opensh. Nous entrons dans le fichier de configuration et commentons ces deux attributs.
vi /etc/ssh/sshd_config
Redémarrer sshd
systemctl restart sshd
Exécuter : ssh -V À ce stade, nous pouvons déjà voir que openssh a été mis à niveau vers 9.3
4. Pièges rencontrés lors du processus de mise à niveau
4.1 Après la mise à niveau, l'outil ssh n'a pas pu se connecter correctement (ou il s'est connecté, mais la boîte noire n'a pas pu être ouverte). Après avoir recherché de nombreuses informations, j'ai finalement découvert que le problème venait de selinux. À ce stade, il suffit d'exécuter : setenforce 0 puis de redémarrer le service openssh.
setenforce 0
systemctl restart sshd
À ce stade, nous constaterons que l'outil ssh peut se connecter avec succès au serveur
4.2 Après la mise à niveau de l'outil ssh, la fenêtre sftp ne peut pas être ouverte. Ceci est facile à résoudre. Il vous suffit de configurer sshd_config pour le résoudre facilement.
vi /etc/ssh/sshd_config
Commentez la ligne du sous-système et ajoutez une autre ligne
Redémarrez le service openssh. Notez que l'outil ssh utilisé est également fermé et redémarré (cela peut être dû à l'état de la connexion, mais sftp ne peut pas être ouvert. Cependant, ce problème a été résolu jusqu'à présent, il doit donc également être fermé et rouvert).