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
参考链接&鸣谢:文章来源:https://www.toymoban.com/news/detail-525577.html
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相关文章来源地址https://www.toymoban.com/news/detail-525577.html
到了这里,关于CentOS升级openssh的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!