redhat7系列操作系统下的OpenSSL和OpenSSH升级

OpenSSH升级

本文涉及 ZLIB,OPENSSL,OPENSSH 三种软件编译安装说明,如果只升级OPENSSH,则不需要查看 ZLIB 和 OPENSSL 的升级;如果需要升级 OPENSSL,则需要检查 ZLIB 是否符合要求,再参考升级。本文所有路径和版本等信息只供参考,实际操作中,以实际情况为准。升级过程中,无法通过 SSH 和 sftp 链接服务器,一旦断开链接,会导致服务器无法控制,建议按以下步骤开启 telnet 服务。以防万一,还可以开启 vsftpd用于文件交互。

1 开启 telnet 服务

  • Linux 6:

切换至/etc/xinetd.d 目录,编辑 telnet 文件,找到 disable=yes,修改为 disable=no。在重启xinetd服务

yum install -y telnet-server
service xinetd restart

注意使用telnet协议远程登录root用户,需要将/etc/securetty 重命名为/etc/securetty_bak

  • Linux 7:
yum install telnet telnet-server -y
yum install xinetd
systemctl start telnet.socket
systemctl start xinetd

2 准备 openssh 相关文件

根据版本不同,链接会有所变化。

wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.8p1.tar.gz
wget https://www.openssl.org/source/openssl-1.1.1l.tar.gz --no-check-certificate
wget http://www.zlib.net/zlib-1.2.11.tar.gz

上传至服务器某个路径下并解压

tar -xvf openssh-8.8p1.tar.gz
tar -xvf openssl-1.1.1l.tar.gz
tar -xvf zlib-1.2.11.tar.gz

3 编译安装 zlib

cd zlib-1.2.11
./configure --prefix=/usr/local/zlib
make
make install

4 编译安装OpenSSL

cd openssl-1.1.1l
./config shared --prefix=/usr/local/openssl-1.1.1l --shared zlib
make
make install

注意:redhat 6.* 及其衍生版操作系统中,一般默认openssl版本为openssl1.0.1e。

openssl1.0.1e 升级后可能会出现 libcrypto.so.10,libcrypto.so 等错误,需要重新设置软链接。

而在redhat 7.* 及其衍生版操作系统中,一般默认openssl版本为openssl1.0.2,则不需要以下操作。

ln -s /usr/local/openssl-1.1.1l/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.10
ln -s /usr/local/openssl-1.1.1l/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so
ln -s /usr/local/openssl-1.1.1l/lib/libssl.so.1.1 /usr/lib64/libssl.so.10
ln -s /usr/local/openssl-1.1.1l/lib/libssl.so.1.1 /usr/lib64/libssl.so
mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak
ln -s /usr/local/openssl-1.1.1l/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl-1.1.1l/include/openssl /usr/include/openssl
echo "/usr/local/openssl-1.1.1l/lib" >> /etc/ld.so.conf
ldconfig –v
openssl version

5 编译升级OpenSSH

特别注意:

​ 在升级过程中,切勿执行service sshd restart或者systemctl restart sshd.service命令,特别是redhat 6.*及其衍生版操作系统,执行此命令会导致ssh远程链接断开,导致失去对服务器的控制。

  1. sshd_config配置文件是使用服务器原有的配置文件还是使用新版的,需要根据实际情况确定,并根据实际需要调整相关的配置向。
  2. 在高版本的openssh中,默认是禁止root用户直接登录的,需要特别注意PermitRootLogin这个参数,如果在日常使用中是root用户直接ssh登录,则需要添加PermitRootLogin yes,重启sshd服务,root用户才能登录。
  3. 关于PAM,如果sshd_config中启用了PAM,即配置了UsePAM yes,root用户也无法远程登录,需要在 pam目录中增加 sshd的配置
  • 版本升级
#停止ssh服务,并且备份原ssh配置信息
service sshd stop
mv /etc/ssh /opt/etc_ssh_bak
#准备编译新版本
cd openssh-8.8p1
./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-tcp-wrappers --with-zlib
#如果编译安装过 openssl,则需要添加以下参数:
--with-ssl-dir=<OPENSSL_DIR>
#OPENSSL_DIR 通过 openssl version -a 命令获取
#编译过程中,可能会因操作系统安装不一样,导致各种依赖缺失错误,使用yum安装依赖即可
#编译通过后使用make命令进行安装
make
make install
#make完成后,执行以下脚本,配置相关命令和路径(cd openssh-8.8p1)
cp sshd /usr/sbin/
cp contrib/redhat/sshd.init /etc/init.d/sshd
ln -s /usr/local/openssh/bin/ssh /usr/bin/ssh
ln -s /usr/local/openssh/bin/scp /usr/bin/scp
ln -s /usr/local/openssh/bin/ssh-add /usr/bin/ssh-add
ln -s /usr/local/openssh/bin/ssh-agent /usr/bin/ssh-agent
ln -s /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen
ln -s /usr/local/openssh/bin/ssh-keyscan /usr/bin/ssh-keyscan
# openssh 8.7版本开始支持sftp
ln -s /usr/local/openssh/bin/sftp /usr/bin/sftp
  • pam设置

/etc/pam.d/sshd 设置为以下内容:

#%PAM-1.0
auth	   required		pam_sepermit.so
auth       substack     password-auth
auth       include      postlogin
# Used with polkit to reauthorize users in remote sessions
-auth      optional     pam_reauthorize.so prepare
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    include      password-auth
session    include      postlogin
# Used with polkit to reauthorize users in remote sessions
-session   optional     pam_reauthorize.so prepare
  • 启动配置
#设置开机启动
#Linux 6 及以下:
chkconfig --add sshd
chkconfig sshd on
chkconfig --list
service sshd start
#Linux 7 及以上:
systemctl daemon-reload
systemctl enable sshd.service --now
chkconfig --list
  • 版本检查
ssh -V
sshd -V
openssl version –a	

猜你喜欢

转载自blog.csdn.net/m0_38004228/article/details/129323885
今日推荐