最近安全攻防演练中Linux系统报了openSSH版本过低的漏洞,要将OpenSSH的版本升级到7.6或以上,但是使用yum进行升级,升级后的版本达不到7.6,故而思考使用源码进行安装,以下是OpenSSH升级的过程,记录于此,以供参考~

注意:升级过程中OpenSSL和OpenSSH无需卸载以前的版本!!!


1、首先将下载好的tar包上传到Linux上,我的tar包存放位置目录是:/opt/software

centos卸载ffplay centos卸载openssh_centos卸载ffplay

2、由于我现在机器上的yum源是本地的,需要将其修改为阿里云的,此操作如果已经修改过或yum源本身没问题的,可以直接跳过。

(1)去到相应的目录下,修改下图中的两个文件

centos卸载ffplay centos卸载openssh_OpenSSH_02

修改结果如下图所示,其中,CentOS-Base.repo配置的为阿里云的yum源。

centos卸载ffplay centos卸载openssh_Linux_03

(2)执行yum makecache操作,生成缓存

centos卸载ffplay centos卸载openssh_centos 7_04

3、使用yum安装相关的依赖

yum -y install gcc make perl zlib zlib-devel pam pam-devel

centos卸载ffplay centos卸载openssh_OpenSSH_05

4、安装openSSH之前,首先要安装OpenSSL。

(1)解压上传好的tar包

tar -zxvf ./openssl-1.1.1b.tar.gz -C ./

centos卸载ffplay centos卸载openssh_Linux_06

(2)到解压目录下执行config

cd openssl-1.1.1b
./config --prefix=/opt/modules/ssl/

centos卸载ffplay centos卸载openssh_Linux_07

(3)make

centos卸载ffplay centos卸载openssh_centos 7_08

(4)make install

centos卸载ffplay centos卸载openssh_OpenSSL_09

(5)执行以下命令查看安装后的版本

/opt/modules/ssl/bin/openssl version

发现此时报了如下的错误:

/opt/modules/ssl/bin/openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

这是因为OpenSSL库的位置不正确导致的,可以使用如下命令创建软连接:

ln -s /opt/modules/ssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /opt/modules/ssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

centos卸载ffplay centos卸载openssh_centos 7_10

(6)将OpenSSL添加到环境变量

vi ~/.bashrc

在文件最后添加如下命令:

export PATH="/opt/modules/ssl/bin:${PATH}"

centos卸载ffplay centos卸载openssh_centos卸载ffplay_11

保存并退出,source一下:

source ~/.bashrc

查看环境变量是否添加成功:

whereis openssl

centos卸载ffplay centos卸载openssh_Linux_12

查看OpenSSL的版本:

openssl version

centos卸载ffplay centos卸载openssh_centos 7_13

至此,OpenSSL升级成功。

5、接下来是OpenSSH的安装。

(1)解压OpenSSH的tar包并去到解压目录下

tar -zxvf openssh-7.9p1.tar.gz -C ./
cd openssh-7.9p1

(2)执行config

./configure --prefix=/opt/modules/ssh --sysconfdir=/etc/ssh --with-ssl-dir=/opt/modules/ssl

centos卸载ffplay centos卸载openssh_OpenSSL_14

(3)make

centos卸载ffplay centos卸载openssh_OpenSSH_15

(4)make install

centos卸载ffplay centos卸载openssh_OpenSSL_16

安装过程中会报一个权限的问题,此处可以先不用管,后面手动修改权限即可。

(5)验证版本

/opt/modules/ssh/bin/ssh -V

centos卸载ffplay centos卸载openssh_OpenSSH_17

(6)设置sshd开机自启

cp /opt/software/openssh-7.9p1/contrib/redhat/sshd.init /etc/init.d/sshd

(7)给sshd赋权

chmod u+x /etc/init.d/sshd

(8)添加sshd服务

chkconfig --add sshd

(9)替换配置文件

cp /opt/software/openssh-7.9p1/sshd_config /etc/ssh/sshd_config

(10)修改配置文件sshd_config,将subsystem sftp路径变更为实际路径

vi /etc/ssh/sshd_config

centos卸载ffplay centos卸载openssh_centos卸载ffplay_18

(11)备份命令

cd /usr/bin
mv ./scp ./scp_bak
mv ./sftp ./sftp_bak
mv ./ssh ./ssh_bak
mv ./ssh-add ./ssh-add_bak
mv ./ssh-agent ./ssh-agent_bak
mv ./ssh-keygen ./ssh-keygen_bak
mv ./ssh-keyscan ./ssh-keyscan_bak
cd /usr/sbin
mv ./sshd ./sshd_bak

(12)拷贝命令

cp /opt/modules/ssh/bin/* /usr/bin/
cp /opt/modules/ssh/sbin/sshd /usr/sbin/

(13)修改配置文件sshd_config,密码认证和允许root用户远程直接登录

vi /etc/ssh/sshd_config


#PasswordAuthentication yes 行取消注释
PasswordAuthentication yes
并在下面添加:
PermitRootLogin yes

centos卸载ffplay centos卸载openssh_OpenSSH_19

(14)修改安装过程中出现的权限问题

chmod 600 /etc/ssh/*

(15)卸载之前的OpenSSH版本

centos卸载ffplay centos卸载openssh_Linux_20

使用如下命令进行卸载:

rpm -e --nodeps ******

centos卸载ffplay centos卸载openssh_Linux_21

(16)恢复配置文件

cd /etc/ssh/
cp ./sshd_config.rpmsave ./sshd_config

centos卸载ffplay centos卸载openssh_centos 7_22

(17)拷贝ssh-keygen和sshd文件

cp /opt/modules/ssh/bin/ssh-keygen /usr/bin/
cp /opt/modules/ssh/sbin/sshd /usr/sbin/

(18)重启sshd并查看状态

systemctl restart sshd

centos卸载ffplay centos卸载openssh_centos 7_23

(15)重启服务器

reboot

(16)查看sshd的状态

systemctl status sshd

 

centos卸载ffplay centos卸载openssh_centos卸载ffplay_24

至此,OpenSSH升级完成。

 

你们在此过程中遇到了什么问题,欢迎留言,让我看看你们都遇到了哪些问题。