OPENSSL、OPENSSH编译升级指南[后篇]

前言:

关键字:SSHD、OPENSSL、OPENSSH、编译升级、CENTOS7;

没想到,博主我竟然还会继续填坑写这个后篇!这应该是博主写过最差的一个博客系列了!为什么这么说,因为前篇博主感觉并没有把事情说清楚,作为一篇以文字传达技术的博文,博主尝试以读者的角度去阅读前篇,感觉即使通篇阅读了内容,但作为一个读者的角度,却很难了解到前篇所说的核心内容或按照博文中的命令去简单的实现博文中的目的;这和以往博主写的一些文章不同[以往博文的核心内容很明显];

博主想过为什么会这样,或许是博文的篇幅过短了,毕竟,前篇的内容实际上包含了"编译环境"、"软件编译"、"编译配置"、"编译依赖"、"软件依赖"、"软件配置"、"系统管理"、"系统安全"等内容,而很多相关的事情,博主并没有有足够的文字去说明清楚[例如,"sshd_config"的配置为什么是这样,影响是什么,博主就并没有详细的说明];是的,或许作为读者你感觉不到,但博主确实是使用到了以上的知识,虽然每个部分使用到的知识点不多,这可以说是一个综合的应用过程。

而作为一个后篇,博主是不是要说清楚这些问题?博主想了想,这不可能啊,这样的话,博主要写到什么时候?那后篇有什么?博主的决定是,博主把自己最终的SSHD升级方案给你们,你们自己拿博主的方案去研究吧……好不好用,采不采用博主的方案,由读者自行决定;下载连接见百度网盘;

本篇博客的内容,是以百度网盘中所提供的文件为依据来写的,所以作为读者,你应该先下载百度网盘中的内容,在CENTOS7中成功模拟使用后,感觉好用后,再决定是不是应该花时间去研究这个内容!!!百度网盘中的提供的OPENSSL、OPENSSH已经是进行了预编译的[即不再需要使用"./configure"操作,直接"make install"即可],而编译过程中的"安装路径"定义,是与脚本中的一些路径变量相关的,关于这部分的关联性,博主也想不到如何去说明,只能靠读者自己去领悟了……

百度网盘下载:下载链接

一、环境相关

你应该在初装的CENTOS7中去测试!另外,下载的文件中使用的OPENSSL版本是"openssl-1.1.1n",和前篇的不同[更新太快了];

  • 操作系统:CENTOS 7

  • OPENSSL版本:openssl-1.1.1n

  • OPENSSH版本:openssh-8.9p1

  • 测试日期:2022年03月27日

特别提示:如果你在实验过程中,直接复制本博客任意博文中的配置/代码,"空格"字符的前面将可能产生不可见的字符"M-BM-",从而造成文件不可用,这是字符编码的问题~若必需使用复制粘贴方式,请务必手动替换掉配置项中的所有空格!!!或尝试使用以下命令过滤掉所有"M-BM-"字符~

二、快速跳转

OPENSSL、OPENSSH编译升级指南[前篇]

三、下载文件结构说明

从百度网盘下载的文件解压后的目录结构如下[]:

由于使用预编译[预编译不需要在升级目标服务器上部署编译环境],所以编译时使用的"编译参数"的定义很重要,"编译参数"的定义影响着后面"安装脚本"中的变量定义[主要是安装路径与配置文件的修改,以及之后的卸载操作],所以,下面提供了"openssh-8.9p1.tgz"与"openssl-1.1.1n.tgz"的"编译参数"定义:

四、更新测试与卸载

确认当前环境为一个初始CENTOS 7环境[类似环境也可以,最重要的一点是,你没有对操作系统上的SSHD服务进行过修改,因为假若你变更过SSHD服务的运行环境,则可能使用本教程所提供的"安装脚本"测试时,可能会出现不可预期的错误];

执行完以上操作,SSHD服务则已经更新成功了,这意味着有关SSHD服务的已知相关漏洞已经完全修复了;注意,现在操作系统上的状态是[由安装脚本实现]:1、停用"sshd.service"服务并禁止开机启动[并没有在操作系统上删除,这意味着可以还原,停用的目的是不要与新的SSHD服务产生端口使用上的冲突];2、现在的SSHD服务是由"sshd.init.service"提供的[这是由"chkconfig"这个命令与"/etc/init.d/sshd.init"共同实现的];3、相关二进制可执行文件均以"链接文件"的方式链接在"/usr/local/sbin"目录下;4、相关的卸载文件保存在"/opt/software/uninstall"目录下;另外,你可以使用下列命令进行检查并查看效果:

以下卸载操作,卸载后的状态为使用原操作系统上的SSHD服务;

执行完以上操作,SSHD服务则还原至由"sshd.service"进行管理;

五、安装脚本与卸载脚本

可以参看目录结构,安装脚本与卸载脚本是配套使用的;关于脚本,博主有想过写相关说明,但是一共有四个脚本啊,所以想想还是算了,有兴趣去使用的读者,博主相信他自己会去看并进行理解的;提示一下,脚本当中最重要就是脚本中相关"变量"的定义了;而且,这篇博文实在是不适合大部分的人,如果有对脚本中的问题,百度一下一般是可以解决的,如有百度解决不了,也可留言,但博主能否看到并什么时候回复,这个只能看天意了……

六、其它或变更

如果你看了这篇博文,并去研究使用了,你会发现一些与前篇不同的内容;主要差异为,SSHD服务的升级方式发生了变化,前篇使用的是修改"/usr/lib/systemd/system/sshd.service"去实现SSHD服务的升级的[前篇的修改方法并不完美],但后篇已经改用了"chkconfig"的方式;产生这种差异的原因是,当时博主并未了解到"chkconfig"这个命令,另一个方面是,使用"chkconfig"的方式,对系统可能产生影响的概率更小[只向原有系统环境增加一个"动态链接库"的更新],所以这是一个更好的方案;

另外有一个很重要的要点,一定要禁用SELINUX,否则使用本方案去升级测试,由于SELINUX的影响,升级后的SSHD服务会产生可以链接但无法成功登录的问题!!!而关于如何解决SELINUX的影响,博主现在还没有解决方案[博主并没有去学习与SELINUX有关的相关知识];所以如果你的生产服务器上使用了SELINX,那么,本升级方法可能不短途你去使用,又或者,你可自行解决有关SELINUX的权限问题;

结、

还好,这篇博文博主并没有花费太多的时间,要不博主又会再一次的加深对写博文的反感了……说点题外话吧,你说这个东西好不好用吧,说真的,这东西就是博主做的,但感觉嘛,是不好用的,但假若比起每一次升级SSHD服务,都需要考虑对操作系统的影响与快速还原SSHD服务的可用性来说,那是比较好的一个方案了;好不好用嘛,是相对的;假若你不需要考虑那些来自安全人员所给的压力,又或者是那些极致的安全要求,那么用"yum"或"apt"是最好的选择~像博主的这种升级方案,很多时候都是一个无奈。

话说,要管理好你的服务器的运行环境,在高安全要求下,博主感觉还真是一件比较难的事情;当然,作为服务器实际上也不是那么容易崩的,但很多时候,像这一类的运维升级,在一些不合适的升级方案下,经年累月的积累下,服务器是会崩的。不知道为什么,在博主了解一些东西后,有这么的一个感觉,服务器很多时候是给运维崩的……

博主的这个东西写出来后,实际上是没有使用的,因为博主工作的地方有一套他们原来的升级方案[安装编译环境的一大堆包并编译安装],使用新的方法,无论好坏,是有压力的[因为需要考虑原有方案与新方案的影响性(原有方案已经变更了官方的系统环境)],再说,这种事博主才不敢打包票,天知道原来的方案把系统环境变更到了什么程度;原来的方案有没有问题,博主认为是有的,首先编译依赖也是需要升级的,管理如此多的编译依赖,是一个难度很高的工作;再次,安装编译依赖,是有可能影响到原有系统上的的服务器[还好现在有DOCKER];

话说,某一天博主听到,用了原有的升级方案后,SSH进不了服务器了……反正也不关博主事,再说,在职场评论别人的升级方案有问题,一般是没好果子吃的也让人反感,博主不会傻到这样做,你们也别这样做……这篇博文也就这样结束吧……

OPENSSL、OPENSSH编译升级指南[后篇]:等您坐沙发呢!

发表评论

表情
还能输入210个字