热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linuxsshyum升级_安全加固浅谈OpenSSH版本升级

近期,接到安全加固任务,要对目标主机漏洞--OpenSSH用户枚举漏洞(CVE-2018-15919)进行修复。经查找相关资料,该漏洞影响

近期,接到安全加固任务,要对目标主机漏洞--OpenSSH用户枚举漏洞(CVE-2018-15919)进行修复。经查找相关资料,该漏洞影响OpenSSH 7.8及之前版本,于是决定将openssh升级到最新版本。

OpenSSH官网显示,最新版本为7.9。

30be37e6cd819e8cb56fb976f4c2b9a4.png

为保证OpenSSH升级不影响系统稳定运行,故先在本地搭建测试环境如下:

操作系统:centOS 7.3

OpenSSH:6.6.1p1

OpenSSL:1.0.1e

有消息称, OpenSSH7.9不支持OpenSSH1.1.x以上,本人有点调皮,不信这个邪,决定仍将Openssl升级至1.1.1。

话不多说,接下来为各位简述升级过程。

一.   先升级OpenSSL至最新版本1.1.1b

1、安装OpenSSL升级所需的包:gccgcc-c++ zlib zlib-devel

使用yum直接安装:yum install gcc gcc-c++ zlibzlib-devel -y

竟然报错:

f2191a9d544a8960b5d0c3cddc515b02.png

万能的度娘提示:yum的意义在于能很自动化的安装软件,这样的安装自然也有限制,也就是同时只能安装yum方式安装一个软件,所以yum也只能有一个进程。额……这个情况可能会是自动更新的时候安装软件导致冲突,可以取消自动更新或者重新启动,或者使用kill -9 36603(36603 为上图中yum报错信息里面的进程号)解决。

2、下载OpenSSL最新安装包:openssl-1.1.1b.tar.gz。目前最新版本的OpenSSL下载地址为:http://www.openssl.org/source/openssl-1.1.1b.tar.gz(也可直接使用wget下载,前提是服务器可直接访问到互联网)。

3、将下载的文件上传至服务器并解压:tar -zxvf openssl-1.1.1b.tar.gz

此处也可以使用-C命令将文件解压到制定目录(如解压到/usr/local/目录下):tar zxvfopenssl-1.1.1b.tar.gz -C /usr/local/

baae7e137153e49c06ca6084227a17ef.png

4进入解压后的文件openssl-1.1.1b:cd openssl-1.1.1b/

5、开始安装:设定Openssl 安装,( --prefix )参数为欲安装的目录,也就是安装后的档案会出现在该目录下。

执行命令: ./config--prefix=/usr/local/openssl

出现以下信息表示ok,可继续下一步:

04ad489a19a1647c0ea7e5cadd876ba5.png

6、开始编译:make&&makeinstall

7、将新编译的openssllibrary 加入系统动态库链接中

echo /usr/local/openssl/lib >> /etc/ld.so.conf

ldconfig -v

8、备份和移除旧的openssl

mv /usr/bin/openssl /tmp/openssl_old  

rm -rf /usr/include/openssl

9、对新openssl建立软连接

ln -s /usr/local/openssl/bin/openssl/ /usr/bin/openssl

ln -s /usr/local/openssl/include/openssl/ /usr/include/openssl

ldd /usr/local/openssl/bin/openssl

e0b42022bb63200f2c1d992a09a3050e.png

10、查看版本:opensslversion -a

dbe8051d21ad4337b4910f9f121fd896.png

二.   升级OpenSSH至最新版本

1、在升级OpenSSH之前,需要为服务器开启telnet功能,防止服务器升级OpenSSH过程中断开连接。具体方法如下所示:

在安装Telnet前先检查系统是否安装了telnet-server和xinetd

rpm -qa telnet-server

rpm -qa xinetd

f37bf6e52c1ddd7c72c66db1c8f5c379.png

发现服务器并没有安装telnet-server和xinetd,安装之前先查找Telnet的安装包

yum list | grep telnet-server

yum list | grep xinetd

6172c2f656d74689736db36d4c472b19.png

执行安装,安装过程没有截图,正常情况执行以下命令后会安装成功,如不确定是否安装成功可以执行上面的命令再确认一下

yum -y install telnet-server.x86_64

yum -y install telnet.x86_64

yum -y install xinetd.x86_64

4a25d2973035f4994387696304044cc4.png

通常情况下,能显示上述图片中信息即表示安装成功。

  • 配置并启动Telnet,xinetd和telnet必须设置开机启动,否则无法启动Telnet服务

systemctl enable xinetd.service

systemctl enable telnet.socket

  • 接下来启动服务

systemctl start telnet.socket

systemctl start xinetd

  • 为了防止因系统防火墙防护功能导致无法正常运行,此处我选择关闭系统防火墙功能。也可以在防火墙中添加规则,此处不再演示该步骤。

查看状态: systemctl status firewalld

关闭: systemctl stop firewalld

开机禁用  :systemctl disable firewalld

  • 在Windows终端使用命令telnet+目标主机IP,连接目标服务器,显示如下信息表示连接成功:

    e4244dcf7c3aaca2593656293d7899a9.png

注:telnet默认不允许使用root登录。

顺便提下:systemd是Linux下的一款系统和服务管理器,兼容SysV和LSB的启动脚本,systemd 相关的绝大多数任务都是通过 systemctl 命令管理的,融合之前service和chkconfig的功能于一体。同时,在centos7.3默认使用的是firewall作为防火墙,并非iptables。

2、安装OpenSSH依赖包:yum install pam pam-devel -y

9f65d47d65c5f4390de5173788551f1f.png

3、备份sshd文件:mv /etc/ssh  /etc/ssh_bak

4、卸载旧的openssh

rpm -qa openssh

rpm -e openssh-6.6.1p1-31.el7.x86_64 --nodeps

5、上传最新版本OpenSSH,解压,编译安装

解压:tar -zxfopenssh-7.9p1.tar.gz

cd openssh-7.9p1/

编译:./configure--prefix=/usr --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/openssl--without-zlib-version-check --with-md5-passwords --with-pam

01e36c2de3951acd15f921e99e820d0e.png

安装:make && make install

c2183c0d67fe8028862998cf71df0ff8.png

安装完成后,系统可能默认不允许使用root登录,为方便使用,修改配置文件/etc/ssh/sshd_config:将#PermitRootLogin prohibit-password 复制并修改为PermitRootLoginyes。

13c437768515f41c094772f9d406766c.png

重启服务:systemctl restart sshd.service

设置开机自启: systemctlenable sshd.service

Reboot重启系统,使用ssh -V查看ssh版本信息。

6cc137aa42281c4d47735dca5632c963.png

升级成功。

友情提示:如非必要,操作完成后请及时关闭telnet服务。




推荐阅读
  • Ubuntu16.0464位安装armlinuxgcc交叉编译器以及samba服务器
    交叉编译器是嵌入式开发的必要工具,但是由于目前大多数人使用64位ubuntu,在照着很多教程做的时候,就会失败,失败原因是64位ubuntu需要额外安装32位的兼容包。以arm-l ... [详细]
  • 缓冲区溢出实例(一)–Windows
    一、基本概念缓冲区溢出:当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被填满从而覆盖了相邻内存区域的数据。可以修改内存数据,造成进程劫持,执行恶意代码,获 ... [详细]
  • Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理,现在在企业中的使用率也是很广的。git是一个分布式的版本控制系统,不像以前的svn,svn是 ... [详细]
  • DDOSDDOS的中文名叫分布式拒绝服务***,俗称洪水***DDoS***概念DoS的***方式有很多种,最基本的DoS***就是利用合理的服务请求来 ... [详细]
  • 安全加密C语言库OpenSSL,在Android中服务器和客户端之间的签名验证和数据加密通信等。OpenSSL系列文章:一、AndroidCMake轻松 ... [详细]
  • 开发笔记:深度探索!Android之OkHttp网络架构源码解析
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了深度探索!Android之OkHttp网络架构源码解析相关的知识,希望对你有一定的参考价值。 ... [详细]
  • TLB 缓存延迟刷新漏洞 CVE201818281 解析 ... [详细]
  • IIS6.0提供一个重新设计的万维网发布服务(WorldWideWebPublishingService)架构,可以帮助你为你的网站构建更好的性能、可靠、可扩展性(scalabil ... [详细]
  • 简介时间同步是指以中心控制系统的标准时钟作为基准使各分布系统和终设备的时钟与中心控制系统时钟进行同步的过程。随着5G和工业5.0的到来,网络终端设备和网络业务的飞速增 ... [详细]
  • *MIME:百度百科,就是通知浏览器是什么多媒体类型的类型。*ASP.NET:执行用户,2k3中是NETWORKSERVICE,其它系统是ASPNET帐 ... [详细]
  • 近期因为内部培训有序列化的需求,于是趁此机会由浅入深的剖析一下序列化相关内容。之前也写过由浅入深的xml漏洞系列,欢迎阅读:https:skysec.top20180817浅析xml及其安全问题 ... [详细]
  • 前言可能你并不太了解msys2,但是作为一个程序员,你一定知道mingw,而msys2就集成了mingw,同时msys2还有一些其他的特性,例如包管理器等。msys2可以在wind ... [详细]
  • 开发笔记:Linux学习笔记4CentOS7中redis3.2.9安装教程
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Linux学习笔记4-CentOS7中redis3.2.9安装教程相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 坚果云怎么下载电脑客户端 坚果云是上海亦存网络科技有限公司研发,以便捷、安全可靠为核心目标的云存储产品,致力于让用户可以随时随地访问自己的文件,轻松的将文件分享给其他用户。坚果云是 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
author-avatar
sundy柳
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有