CentOS升级openssh

CentOS升级openssh

公司几台服务器扫出了几个openssh相关的漏洞,解决办法就是升级openssh版本。升级过程中踩坑较多,故作此博客记录。

!!!前排提示:离线环境可用以下命令在本地预先下载好依赖包
法一:

yum install yum-plugin-downloadonly -y
yum install --downloadonly --downloaddir=路径 安装包名

法二:

yum install yum-utils -y
yumdownloader --resolve --destdir 路径 安装包名

以上两个方法仅会将主软件包和基于你现在的操作系统所缺少的依赖关系包一并下载。若是将下载的rpm包上传至其他机器进行离线安装很有可能还是会缺少依赖,这时可以使用repotrack进行下载。

法三:

yum -y install yum-utils
repotrack --download_path=路径 安装包名

然后将下载好的依赖包上传至离线环境的服务器,用以下命令安装依赖包

rpm -ivh *.rpm --force

一、查看当前openssl和openssh版本

openssl version -a
ssh -V

二、安装并启用telnet服务(预防升级过程中连接中断,无法再次连接机器)

yum -y install telnet-server xinetd

设置开机自启(非必须操作)

systemctl enable xinetd.service
systemctl enable telnet.socket

启动服务

systemctl start telnet.socket
systemctl start xinetd

配置防火墙
法一:直接对外开发23端口(高风险)

firewall-cmd --add-port=23/tcp --permanent    #--permanent 为永久开启,不加此参数重启防火墙后规则不保存
firewall-cmd --reload   #重启防火墙

法二:只对特定IP开放

firewall-cmd  --permanent --add-rich-rule='rule family=ipv4 source address=192.168.12.1 port protocol=tcp port=23 accept'
firewall-cmd --reload

允许root远程登录
修改/etc/securetty文件,在末尾添加

pts/0
pts/1

重启telnet服务和守护进程

systemctl restart telnet.socket
systemctl restart xinetd.service

测试通过telnet登录服务器

三、升级openssl(3.0.x LTS版本)

#下载、解压安装包
wget http://www.openssl.org/source/old/3.0/openssl-3.0.7.tar.gz --no-check-certificate
tar -zxvf openssl-3.0.7.tar.gz
cd openssl-3.0.7

#安装依赖
yum install -y gcc gcc-c++ glibc make automake autoconf pam pam-devel zlib zlib-devel
#编译预配置
./config shared --prefix=/usr/local/openssl
###报错:Can't locate IPC/Cmd.pm in @INC
#继续安装依赖
yum install -y perl-IPC-Cmd perl-Data-Dumper perl-Digest-SHA
#再次预配置
./config shared --prefix=/usr/local/openssl enable-fips

#编译安装
make
make install
###升级openssl时无需卸载老版本,可将老版本备份后,再安装新版本即可
#备份老版本openssl
mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak

#软连接刚编译好的新版本openssl
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl

#配置库文件路径
echo '/usr/local/openssl/lib64' > /etc/ld.so.conf.d/openssl-x86_64.conf #注意检查左边的路径下确有.so文件
#使配置生效
ldconfig -v

四、升级openssh至最新版本(截至2023-03-24)

#下载、解压安装包
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.3p1.tar.gz
tar -zxvf openssh-9.3p1.tar.gz
#更改用户组和所有者
chown -R root.root ./openssh-9.3p1

#!!!
#!!!接下来的步骤建议使用telnet的方式连接服务器后再操作
#!!!

#停止当前ssh服务
systemctl stop sshd

#备份当前ssh服务及配置
cp -a /etc/ssh /etc/ssh.bak
cp -a /usr/sbin/sshd /usr/sbin/sshd.bak
cp -a /usr/bin/ssh /usr/bin/ssh.bak
#删除老配置
rm -rf /etc/ssh/*

#卸载已安装的openssh相关软件包
rpm -e `rpm -qa | grep openssh` --nodeps

#编译预配置
cd openssh-9.3p1
./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-zlib --with-ssl-dir=/usr/local/openssl --with-md5-passwords --with-pam

#编译安装
make
make install

#检查并删除老版本启动脚本
ls /usr/lib/systemd/system/ssh*
rm -f /usr/lib/systemd/system/ssh*

# 拷贝启动脚本
cp contrib/redhat/sshd.init /etc/init.d/sshd
#拷贝sshd.pam配置文件
cp contrib/redhat/sshd.pam /etc/pam.d/

#建立软连接
ln -s /usr/local/openssh/sbin/sshd /usr/sbin/
ln -s /usr/local/openssh/bin/* /usr/bin/    #若报错可将已存在的文件重命名,再执行软连接

systemctl daemon-reload

#启动并设置开机自启动
systemctl start sshd && systemctl enable sshd
#允许root远程登录
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
#重启ssh服务
systemctl restart sshd
#查看openssh版本,验证是否升级成功
ssh -V

#!!!测试ssh连接是否正常,测试没问题后就可以关闭telnet服务了

#关闭telnet服务
systemctl stop telnet.socket
systemctl disable telnet.socket

#删除防火墙放行端口
firewall-cmd --remove-port=23/tcp --permanent
firewall-cmd --reload

参考链接&鸣谢:

1.https://blog.csdn.net/m0_60356178/article/details/126784397 下载依赖到本地;
2.https://blog.csdn.net/sd4493091/article/details/122220902 感谢博主及评论区“追梦者永恒”大佬;
3.https://zhuanlan.zhihu.com/p/553012987;升级openssl;
4.https://zhuanlan.zhihu.com/p/553027729 升级openssh;
5.https://blog.csdn.net/lhrm0213/article/details/123862835 安装配置telnet相关

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值