最近安全攻防演练中Linux系统报了openSSH版本过低的漏洞,要将OpenSSH的版本升级到7.6或以上,但是使用yum进行升级,升级后的版本达不到7.6,故而思考使用源码进行安装,以下是OpenSSH升级的过程,记录于此,以供参考~
注意:升级过程中OpenSSL和OpenSSH无需卸载以前的版本!!!
1、首先将下载好的tar包上传到Linux上,我的tar包存放位置目录是:/opt/software
2、由于我现在机器上的yum源是本地的,需要将其修改为阿里云的,此操作如果已经修改过或yum源本身没问题的,可以直接跳过。
(1)去到相应的目录下,修改下图中的两个文件
修改结果如下图所示,其中,CentOS-Base.repo配置的为阿里云的yum源。
(2)执行yum makecache操作,生成缓存
3、使用yum安装相关的依赖
yum -y install gcc make perl zlib zlib-devel pam pam-devel
4、安装openSSH之前,首先要安装OpenSSL。
(1)解压上传好的tar包
tar -zxvf ./openssl-1.1.1b.tar.gz -C ./
(2)到解压目录下执行config
cd openssl-1.1.1b
./config --prefix=/opt/modules/ssl/
(3)make
(4)make install
(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
(6)将OpenSSL添加到环境变量
vi ~/.bashrc
在文件最后添加如下命令:
export PATH="/opt/modules/ssl/bin:${PATH}"
保存并退出,source一下:
source ~/.bashrc
查看环境变量是否添加成功:
whereis openssl
查看OpenSSL的版本:
openssl version
至此,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
(3)make
(4)make install
安装过程中会报一个权限的问题,此处可以先不用管,后面手动修改权限即可。
(5)验证版本
/opt/modules/ssh/bin/ssh -V
(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
(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
(14)修改安装过程中出现的权限问题
chmod 600 /etc/ssh/*
(15)卸载之前的OpenSSH版本
使用如下命令进行卸载:
rpm -e --nodeps ******
(16)恢复配置文件
cd /etc/ssh/
cp ./sshd_config.rpmsave ./sshd_config
(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
(15)重启服务器
reboot
(16)查看sshd的状态
systemctl status sshd
至此,OpenSSH升级完成。
你们在此过程中遇到了什么问题,欢迎留言,让我看看你们都遇到了哪些问题。