CentOS升级openssh
CentOS升级openssh
公司几台服务器扫出了几个openssh相关的漏洞,解决办法就是升级openssh版本。升级过程中踩坑较多,故作此博客记录。
!!!前排提示:离线环境可用以下命令在本地预先下载好依赖包
法一:
yum install yum-plugin-downloadonly -yyum install --downloadonly --downloaddir=路径 安装包名
法二:
yum install yum-utils -yyumdownloader --resolve --destdir 路径 安装包名
以上两个方法仅会将主软件包和基于你现在的操作系统所缺少的依赖关系包一并下载。若是将下载的rpm包上传至其他机器进行离线安装很有可能还是会缺少依赖,这时可以使用repotrack进行下载。
法三:
yum -y install yum-utilsrepotrack --download_path=路径 安装包名
然后将下载好的依赖包上传至离线环境的服务器,用以下命令安装依赖包
rpm -ivh *.rpm --force
一、查看当前openssl和openssh版本
openssl version -assh -V
二、安装并启用telnet服务(预防升级过程中连接中断,无法再次连接机器)
yum -y install telnet-server xinetd
设置开机自启(非必须操作)
systemctl enable xinetd.servicesystemctl enable telnet.socket
启动服务
systemctl start telnet.socketsystemctl 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/0pts/1
重启telnet服务和守护进程
systemctl restart telnet.socketsystemctl 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-certificatetar -zxvf openssl-3.0.7.tar.gzcd 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#编译安装makemake install###升级openssl时无需卸载老版本,可将老版本备份后,再安装新版本即可#备份老版本opensslmv /usr/bin/openssl /usr/bin/openssl.bakmv /usr/include/openssl /usr/include/openssl.bak#软连接刚编译好的新版本opensslln -s /usr/local/openssl/bin/openssl /usr/bin/opensslln -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.gztar -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.bakcp -a /usr/sbin/sshd /usr/sbin/sshd.bakcp -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#编译安装makemake 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.socketsystemctl disable telnet.socket#删除防火墙放行端口firewall-cmd --remove-port=23/tcp --permanentfirewall-cmd --reload
参考链接&鸣谢:
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://blog.csdn.net/qq_26057083/article/details/129751118
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341