肥宅钓鱼网
当前位置: 首页 钓鱼百科

ubuntu openssl系统路径设置(RHELCentOS7下OpenSSL1.0.2s)

时间:2023-07-19 作者: 小编 阅读量: 3 栏目名: 钓鱼百科

它会加密所有流量,以消除窃听,连接劫持和其他攻击。此外,OpenSSH还提供大量安全隧道功能,多种身份验证方法和复杂的配置选项。OPENSSH官网最近发布了OpenSSH8.0,并提供了许多新功能和错误修复。可能同一个CVE安全漏洞中,在两个厂商发布的不同软件版本中都有可能被修复。红帽原厂在受理该CASE的时候,明确拒绝提供进一步支持。需要运维人员自行回退,方可恢复正常安装。

这是小编自己工作中整理的一个干货记录,仅供大家参考,也欢迎大家一起共同讨论,学习,谢谢!

目录

1. 前言1

2. 操作系统补丁升级方式的选择与建议1

3. 安装要求8

4. 注意事项9

5. 配置本地yum源仓库9

6. 开通telnet服务11

6.1. 安装telnet-server及telnet服务11

6.2. 启动xinetd及telnet并做开机自启动12

6.3. 修改/etc/securetty文件12

6.4. 临时禁用iptables或者Firealld服务12

6.5. 测试telnet能否登录12

7. 升级openssl13

7.1. 安装相关依赖包13

7.2. 下载OpenSSL的源码13

7.3. 解压OpenSSL的源码13

7.4. 查看旧版本信息13

7.5. 配置openssl源码编译13

7.6. 编译安装(不能使用中文路径和特殊字符)14

7.7. 重命名原来的openssl文件14

7.8. 重命名原来的openssl目录14

7.9. 将编译包的对应的openssl软链接到相关目录中14

7.10. 在/etc/ld.so.conf文件中写入openssl库文件的搜索路径14

7.11. 刷新缓存文件14

7.12. 查看OPENSSL版本15

8. 升级Openssh15

8.1. 备份原先的SSH文件15

8.2. 下载OpenSSH源码包15

8.3. 解压安装15

8.4. 编译安装16

8.5. 配置sshd服务18

8.6. 关闭selinux服务20

8.7. 重启服务20

8.8. 查看当前ssh版本20

8.9. 重启主机测试ssh是否可用20

8.10. 关闭并禁用telnet服务21

1. 前言

OpenSSH是一个免费、开源并完全实现了SSH协议2.0的安全连接工具。它会加密所有流量,以消除窃听,连接劫持和其他攻击。此外,OpenSSH还提供大量安全隧道功能,多种身份验证方法和复杂的配置选项。它提供了许多工具,用于安全地访问和管理远程计算机系统,以及管理身份验证密钥,例如ssh(telnet的安全替代),scp,sftp(ftp的安全替换),ssh-keygen,ssh-copy-id ,ssh-add等等。OPENSSH官网最近发布了OpenSSH 8.0,并提供了许多新功能和错误修复。

2. 操作系统补丁升级方式的选择与建议

重要:本文提供该编译升级方法仅供有需要的客户进行选择升级,在升级前,应认真阅读本节内容。

此次升级的测试环境为CentOS7.6,使用的是OpenSSL、OpenSSH维护社区发布的软件包进行编译升级,虽然通过该编译升级方法可以手动修复Openssh相关漏洞。但该编译方法并不是推荐的升级方法,包括红帽原厂也强烈不建议使用该方式升级,所以请大家根据客户环境,技术条件先尝试进行沟通,尽量引导客户使用我们建议的补丁升级规范与标准进行升级(使用操作系统自身的官方软件包进行升级),然后根据客户作出的选择再决定下一步升级操作。

Centos的补丁升级方法与补丁源码与RHEL都是互相兼容可用的。可以通过https://wiki.centos.org/zh/Manuals/ReleaseNotes/CentOS7.1810官网看到:Centos只是对操作系统去除了Redhat的商标与美工图,该版本更适合没有购买红帽支持服务的客户环境。

因为RHEL/Centos 都有自己的一套补丁管理体系,补丁包版本会根据上游社区的软件源代码进行更新维护,并发布自己的一套软件版本号。本文中操作系统所用到的Openssh、Openssl组件是由openssh.org/openssl.com发布,发布的又是另外一个版本号。可能同一个CVE安全漏洞中,在两个厂商发布的不同软件版本中都有可能被修复。

例如在RHEL7.6中截止2019-8-14 红帽官方最新发布的Openssh版本版本号为:7.4p1-21.el7,并且在最新的软件包版本中会将相关CVE安全公告号的漏洞进行修复维护,已修复的CVE漏洞可以在对应的软件版本更改日志中查到,或者通过红帽知识库查到。

例如CVE-2016-0777、CVE-2016-0778在OpenSSH官网 OPENSSH 7.1p2版本已经修复。

而在红帽官网安全勘误号RHSA-2016:0043中针对CVE-2016-0777、CVE-2016-0778的漏洞已修复的SSH版本则为:openssh-6.6.1p1-23.el7_2.x86_64。

即使在2019-8-14找到红帽官网最新的Openssh软件版本,也只是Openssh 7.4p1-21.el7,而openssh.org发布的则是Openssh 8.0版本。

由此说明,软件包维护社区及操作系统维护厂商都有一套自己的包管理体系,不建议在具有支持服务的操作系统上(RHEL)使用第三方社区提供的编译方式升级软件包。如果使用了第三方社区(例如openssh.org/openssl.com)提供的软件包进行升级,则可能会导致红帽操作系统补丁无法进行自有管理。

红帽补丁管理方案有很多种(例如通过红帽内容网络进行单台主机更新升级、通过红帽Satellite补丁管理工具统一管理等),但是每一种方案都是根据红帽自己发布的版本号进行补丁管理与迭代更新。

而使用第三方软件包进行编译升级,除了包版本管理混乱之外,还会使得具有支持服务的红帽操作系统变得不可支持,如下是红帽官网的产品支持政策:

明确说明红帽支持服务不支持经过改动的RPM包,第三方软件等程序。

https://access.redhat.com/zh_CN/support/offerings/production/soc

并且在运维过程中,发现编译安装的软件包,还会因为升级人员的技术水平参差不齐,导致升级失败,或者产生其他无法预料到的遗留问题。

以下是编译升级OPENSSH遇到的一些问题:

案例一、例如升级过程不严谨,未严格测试,导致生产环境在升级OPENSSH后出现无法远程登陆,OPENSSH功能异常等问题。已经遇到很多厂商出现这种情况。

案例二、导致红帽补丁管理工具Satellite agent软件在部署实施阶段遇到OPENssl、OPENSSH动态库缺失的问题无法安装。红帽原厂在受理该CASE的时候,明确拒绝提供进一步支持。需要运维人员自行回退,方可恢复正常安装。如果编译升级台数较多,升级方法不统一,均需要运维人员根据每个厂商不同的实际升级方法进行人工回退,而人工回退的工作工作量庞大又复杂。

综上所述,如果使用第三方编译软件包进行升级,除了导致具有支持服务的红帽操作系统变得不受支持之外,还会给操作系统补丁管理、运维管理带来更大挑战!对于长期运维规划来说,使用编译升级不是一种良好的解决方案。

本文之所以提供编译升级方式也是为了满足某些特殊客户场景需要。因为在一些客户现场,使用的是绿盟的一套漏扫设备进行漏洞扫描。但是该工具只认可openssh.org发布的OPENSSH 版本号,例如CVE-2018-15473要求升级到OPENSSH7.7以后,而使用红帽操作系统最新软件包也无法达到这个扫描器版本要求。

下图是RHEL7.6未使用红帽操作系统OEPNSSH包前的版本信息与漏扫结果:

下图是RHEL7.6已经使用红帽官方最新的OEPNSSH包升级后的版本信息与漏扫结果:

所以我们得出结论,即使升级到红帽官方最新的OPENSSH组件,也只是小版本号已经迭代更新,由Openssh7.4p1-16升级到Openssh7.4p1-21。

如果漏扫工具使用的是原理扫描,在使用红帽官方最新Openssh包后则可以看到已经修复CVE-2018-15919漏洞,但如果漏扫工具使用的是版本匹配方式扫描,则会因为红帽官方的软件包的版本与第三方社区发布的版本号不一致,出现误报的结果。

下图是Openssh第三方编译包升级后的版本信息与漏扫结果,中高危漏洞均已显示修复:

如果出现误报的情况的具体漏洞则可以先询问红帽原厂确认安全漏洞修复细节,确认是否已经在某个版本中得到修复。然后将该扫描器相关漏洞误报细节反馈至客户,由客户统一协调至绿盟漏扫厂商,或者等保安评机构,确认是否能及时更正设备相关漏扫规则或者是等保测评结果。由客户根据实际情况灵活选择升级方式。

在这里多说一句,不同客户不同情况,有些客户我说半句就已经明白我的好意,并认可我们使用官方软件包进行补丁维护的运维安全标准。虽然漏扫设备是死的,但是人是活的嘛。而有的客户则选择放任不管,或者是懒得改变现在的烂摊子局面,这里就会有很多客观因素是我们技术人无力改变的了。

3. 安装要求

· 一个于Debian / Ubuntu或RHEL / CentOS的 Linux系统

· C编译器

· Zlib 1.1.4或1.2.1.2或更高版本

· LibreSSL或OpenSSL> = 1.0.1 <1.1.0

本次升级的软件包发布时间如下:

OpenSSH 8.0:2019年4月18日发布

openssl-1.0.2s.tar.gz 2019年5月28日发布

4. 注意事项

升级前需提前做好快照备份,相关配置文件备份及开启TELNET服务以防升级过程中断开连接,提前将相关软件包上传到指定目录中。

5. 配置本地yum源仓库

先在虚拟机中挂载光驱介质,然后在操作系统上挂载光驱。

[root@gxzkBackup ~]# mount /dev/sr0 /mntmount: /dev/sr0 写保护,将以只读方式挂载[root@gxzkBackup ~]# df -h文件系统 容量 已用 可用 已用% 挂载点/dev/mapper/centos-root 15G 1.8G 14G 12% /devtmpfs 7.8G 0 7.8G 0% /devtmpfs 7.8G 0 7.8G 0% /dev/shmtmpfs 7.8G 8.9M 7.8G 1% /runtmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup/dev/sdb 40G 98M 40G 1% /appdata/dev/sda1 1014M 145M 870M 15% /boottmpfs 1.6G 0 1.6G 0% /run/user/010.16.1.50:/publicdata 200G 18G 183G 9% /publicdata/dev/sr0 4.2G 4.2G 0 100% /mnt

确保已经重命名/etc/yum.repos.d/不必要的repo文件。

下图中只配置了一个local.repo

[root@gxzkBackup ~]# cat /etc/yum.repos.d/CentOS-Base.repo.bak CentOS-Media.repo.bakCentOS-CR.repo.bak CentOS-Sources.repo.bakCentOS-Debuginfo.repo.bak CentOS-Vault.repo.bakCentOS-fasttrack.repo.bak local.repoCentOS-local.repo.bak

配置本地local.repo文件:

[root@gxzkBackup ~]# cat /etc/yum.repos.d/local.repo[local]name=localbaseurl=file:///mnt/enabled=1gpgcheck=0

清除yum源缓存

[root@gxzkBackup yum.repos.d]# yum clean allFailed to set locale, defaulting to CLoaded plugins: fastestmirrorCleaning repos: localCleaning up list of fastest mirrorsOther repos take up 130 M of disk space (use --verbose for details)

列出yum仓库

[root@gxzkBackup yum.repos.d]# yum repolistFailed to set locale, defaulting to CLoaded plugins: fastestmirrorDetermining fastest mirrorslocal | 3.6 kB 00:00(1/2): local/group_gz | 166 kB 00:00(2/2): local/primary_db | 3.1 MB 00:00repo id repo name statuslocal local 3971repolist: 3971

升级前查看OPENSSH版本与OPENSSL版本

[root@gxzkBackup mnt]# ssh -VOpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017[root@gxzkBackup mnt]# rpm -qa|grep sshopenssh-clients-7.4p1-16.el7.x86_64openssh-7.4p1-16.el7.x86_64openssh-server-7.4p1-16.el7.x86_64libssh2-1.4.3-12.el7.x86_64[root@gxzkBackup mnt]# rpm -qa|grep sslopenssl-libs-1.0.2k-16.el7.x86_64openssl-devel-1.0.2k-16.el7.x86_64xmlsec1-openssl-1.2.20-7.el7_4.x86_64openssl-1.0.2k-16.el7.x86_64

6. 开通telnet服务

为了防止升级过程中ssh断连,保险起见,先安装telnet并设置启动。

6.1. 安装telnet-server及telnet服务

yum install -y telnet-server* telnet

6.2. 启动xinetd及telnet并做开机自启动

systemctl enable telnet.socketsystemctl start telnet.socket

6.3. 修改/etc/securetty文件

默认情况下,系统是不允许root用户telnet远程登录的。如果要使用root用户直接登录,需向/etc/securetty中追加pts/0等内容,执行命令如下:

echo 'pts/0' >>/etc/securettyecho 'pts/1' >>/etc/securettyecho 'pts/2' >>/etc/securettyecho 'pts/3' >>/etc/securettyecho 'pts/4' >>/etc/securetty

6.4. 临时禁用iptables或者Firealld服务

[root@gxzkBackup mnt]# systemctl stop firewalld[root@gxzkBackup mnt]# systemctl disable firewalldRemoved symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

6.5. 测试telnet能否登录

测试能否通过telnet正常登陆到主机,检查开机自启是否生效。

7. 升级OpenSSL

7.1. 安装相关依赖包

yum install -y gcc zlib zlib-devel openssl-devel

7.2. 下载OpenSSL的源码

wget https://www.openssl.org/source/openssl-1.0.2s.tar.gz

7.3. 解压OpenSSL的源码

tar zxvf openssl-1.0.2s.tar.gz

7.4. 查看旧版本信息

[root@study ~]# openssl versionOpenSSL 1.0.2k-fips 26 Jan 2017yum -y install openssh[root@study ~]# ssh -VOpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017

7.5. 配置openssl源码编译

#openssl的安装目录默认是/usr/local/ssl(由于系统环境差异路径可能不一致)

#注意添加zlib-dynamic参数,使其编译成动态库

[root@study ~]#cd openssl-1.0.2s/[root@study ~]#./config --shared zlib-dynamic

7.6. 编译安装(不能使用中文路径和特殊字符)

make && make install

7.7. 重命名原来的openssl文件

mv /usr/bin/openssl /usr/bin/openssl.bak`date%Y%m%d`

7.8. 重命名原来的openssl目录

mv /usr/include/openssl /usr/include/openssl.bak`date%Y%m%d`

7.9. 将编译包的对应的openssl软链接到相关目录中

ln -s /usr/local/ssl/bin/openssl /usr/bin/opensslln -s /usr/local/ssl/include/openssl/ /usr/include/openssl

7.10. 在/etc/ld.so.conf文件中写入openssl库文件的搜索路径

echo "/usr/local/ssl/lib/" >> /etc/ld.so.conf

7.11. 刷新缓存文件

ldconfig -v

7.12. 查看OPENSSL版本

可以看到已经升级成功。

[root@localhost ~]# openssl versionOpenSSL 1.0.2s 28 May 2019

8. 升级OpenSSH

8.1. 备份原先的ssh文件

[root@gxzkBackup mnt]# cp /etc/ssh /etc/ssh.bak`date%Y%m%d`[root@gxzkBackup mnt]# cp /usr/bin/ssh /usr/bin/ssh.bak`date%Y%m%d`[root@gxzkBackup mnt]# cp /usr/sbin/sshd /usr/sbin/sshd`date%Y%m%d`

8.2. 下载OpenSSH源码包

OpenSSH_8.0下载地址:https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.0p1.tar.gz

8.3. 解压安装

将安装包上传到/usr/local/src下

解压

cd /usr/local/srctar -zxvf openssh-8.0p1.tar.gz

8.4. 编译安装

cd openssh-8.0p1/# 需要指定openssh的安装路径/usr/local/ssh./configure --prefix=/usr/local/ssh --sysconfdir=/usr/local/ssh --with-pam --with-zlib --with-md5-passwords --with-tcp-wrappers --without-openssl-header-check --with-ssl-dir=/usr/local/ssl

如果顺利的话,最后会出现如下界面:

make

查看make有无其他报错,如果没有则执行下一步

执行make install

make install

在执行完make install命令后可能就会有关于key文件的警告信息,这个时候需要将涉及到的key文件的权限改成600,如果没修改,则重启sshd服务时将报错。

解决办法:

1、修改如下文件权限:

chmod 600 /etc/ssh/ssh_host_rsa_keychmod 600 /etc/ssh/ssh_host_ecdsa_keychmod 600 /etc/ssh/ssh_host_ed25519_key

2、将所提示的报错选项进行注释,如图将第79、80、96行这些不支持的选项进行注释:

vi /etc/ssh/sshd_config

8.5. 配置sshd服务

复制启动文件到/etc/init.d/下并命名为sshd

cp -p /usr/local/src/openssh-8.0p1/contrib/redhat/sshd.init /etc/init.d/sshd

添加执行权限

chmodx /etc/init.d/sshd

添加到开启自启服务中

systemctl enable sshd

备份SSH启动服务文件

cp /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sshd.service_bk

将SSH启动服务文件里面内容清空

> /usr/lib/systemd/system/sshd.service

修改SSH启动服务文件/usr/lib/systemd/system/sshd.service,并将如下内容粘贴到/usr/lib/systemd/system/sshd.service文件中:

[Unit]Description=OpenSSH server daemonDocumentation=man:sshd(8) man:sshd_config(5)After=network.target sshd-keygen.serviceWants=sshd-keygen.service[Service]#Type=notifyEnvironmentFile=/etc/sysconfig/sshdExecStart=/usr/sbin/sshd -D $OPTIONSExecReload=/bin/kill -HUP $MAINPIDKillMode=processRestart=on-failureRestartSec=42s[Install]WantedBy=multi-user.target

8.6. 关闭selinux服务

为避免对OPENSSH的影响,可以把不用的SELINUX给关闭

sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config#sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/configsed -i 's/SELINUX=permissive/SELINUX=disabled/g' /etc/selinux/configsetenforce 0

8.7. 重启SSH服务

重新加载sshd的服务:

systemctl daemon-reload

重启sshd的服务:

systemctl restart sshd

检查sshd的服务:

systemctl status sshd

8.8. 查看当前ssh版本

[root@kvm ~]# ssh -VOpenSSH_8.0p1, OpenSSL 1.0.2k-fips 26 Jan 2017

8.9. 重启主机测试ssh是否可用

操作系统使用编译版本的OPENSSH升级后,默认已经禁止ROOT直接远程登陆,所以在重启前,先创建一个普通用户用于跳转登陆。

8.10. 关闭并禁用telnet服务

重启确定操作系统可以正常登陆后即可以关闭TELNET服务。

systemctl disable telnet.socketsystemctl stop telnet.socket

    推荐阅读
  • 叶卡捷琳娜二世一代帝王的崛起(叶卡捷琳娜二世)

    痛苦的婚姻1745年,女皇下令二人定于7月1日结婚,二人婚后,在俄国秘密与普鲁士通信的母亲约翰娜也被女皇赶回了普鲁士,叶卡捷琳娜完全被伊丽莎白掌控了起来,女皇的目的很简单,希望二人尽快生出继承人。但是彼得与叶卡捷琳娜并不顺女皇的意,8个月过去了,依然没有动静,愤怒的伊丽莎白认为这都是叶卡捷琳娜的错,藐视自己。

  • 煮肉的方法技巧(煮肉有哪些技巧)

    接下来我们就一起去了解一下吧!煮肉的方法技巧肉在炖之前,放进淘米水中浸泡,可以去掉杂质异物,化解其中油腻,同时也能够防止肉变硬、变干。焯水可以将肉中含带的血水去除。如果使用热水,只能将表面的部分去掉,而内部还有大量残留。使用冷水,水中可能会有杂质,所以焯肉的时候最好用白开水。在炖肉的时候,可以加入一些高度白酒,起去腥提鲜的作用。加入白酒后,不要盖上锅盖,让蒸汽挥发,加速腥味的去除过程。

  • 石斛粉怎么冲泡不结块(石斛粉怎么泡开水不会颗粒)

    石斛粉怎么冲泡不结块石斛粉进行冲泡的时候容易结块,结块是粉质类食物泡水的特性,无法解决,但充分搅拌可以打散。石斛粉的正确吃法石斛粉一般是泡水喝的,但是也可以熬粥或者煮汤喝。石斛粉一天吃多少克为好5-8克为宜。小贴士石斛的性质较为寒凉,脾胃虚寒的人群日常食用石斛粉以3-5克为佳,过量食用不利于健康。石斛粉能长期服用吗适量的话可以长期服用。

  • 空调最常用的风量调节方法(空调怎么调)

    空调最常用的风量调节方法如果中央空调可以调节的话,那么此时就会有三个方面的内容需要确认调节。温度调节一般有一个上下的按钮是调节温度用的。上是温度增加,下是温度降低。风速是影响室内温度一个关键因素。风速一般在中央空调调节器上,是一个小风扇,点击风扇,在调节的案板界面上就会有风扇展示,风扇扇叶密度大,表示风速快。按一下增加一档风量,按到最大之后再按一下就会回到最低风量。

  • 屹字怎么读音(屹字怎么读?)

    、屹蹬蹬、岿然屹立、屹峙、惊屹、屹嶝嶝、巍峨屹立、屹崪、屹糁糁、屹然山立、屹蹶、屹立不倒。

  • 夸人的句子带幽默(有什么夸人的幽默句子)

    以下内容希望对你有帮助!夸人的句子带幽默尽管你身材纤弱娇小,说话柔声细气,然而却很有力量,这是一种真正的精神美!看见你,我觉得再没有什么是不美的,因为你用你的美,点缀了所有的一切。那份温柔、那份美感、那份妩媚,使我久久难以忘怀。那稳重端庄的气质,再调皮的人见了你都会小心翼翼。你的眼神如此撩人,让我忍不住地去吻她,别动,你会让我越陷越深的。

  • 猪肝能和木耳一起炒吗(猪肝和木耳一起炒吗)

    营养学研究显示:每100克黑木耳里含铁98毫克,比动物性食品中含铁量最高的猪肝高出约5倍,比绿叶蔬菜中含铁量最高的菠菜高出30倍。因此,黑木耳被营养学家誉为“素中之王”。中医则认为,黑木耳有益气补血、润肺镇静、凉血止血的功效。早在汉代,黑木耳就被用作补血的良药了。猪肝中含有丰富的维生素A,常吃猪肝,可逐渐消除眼科病症。

  • 空调的保温方法(空调管道保温施工与方法)

    T型结构的安装:取一段管材,错开管材开口处开一个与安装管相同直径的孔,形成一个T型接点,在孔上向开口管管缝开一条缝,便于安装;将管材安装在T型管的直管上,在开口缝处涂上胶水,粘合。

  • 提车的感悟(提车日记)

    跟着小编一起来看一看吧!提车的感悟骑行小白,之前没有买过山地车。今日怒提进藏神车,美利达公爵600,全款拿下,没有分期,感觉没有必要。又不是没有那个实力首日下班从车行骑行回家25公里,感觉不是很累。刹车感觉有点软,不是特别灵敏,老板说新刹车片磨合磨合就好了。主要用于上下班通勤,单程约20公里。先这样以后会不定时分享使用心得,欢迎大家一起学习交流。

  • 得过妈妈手腱鞘炎的经历(有一种爱叫妈妈手)

    哈尔滨市第五医院手外科分院医生表示,因抱娃导致腱鞘炎患者较多,要多注意负重时间和负重姿势。哈市第五医院手外科分院郝旭光医生通过查体发现张女士在按压腕关节桡骨茎突的位置反应疼痛,为张女士确诊为患有腱鞘炎,最后以药物治疗和康复锻炼进行恢复。不乏有腱鞘炎患者选择按摩缓解,反倒加重了患处疼痛,出现明显红肿,这将可能导致腱鞘炎与周围组织的粘连从而反复发炎,不利于治疗恢复。