OpenSSH 升级

升级机器信息收集

OpenSSH/openssl 版本 OpenSSH_6.9p1, OpenSSL 1.0.2j-fips  26 Sep 2016
系统:CentOS release 6.5 (Final)
内核版本:2.6.32-431.el6.x86_64

离线操作说明: 本文是离线操作的,其中依赖的所有的包,都是下载到本地,然后scp 或者其它方式上传到我们的没有外网的机器上的。

主要流程为:

  1. 基于 Dropbear 设置备用 ssh 服务器
  2. 备份 SSH 配置
  3. 编译安装 Openssl (按需)
  4. 升级Openssh
  5. 验证

风险点:

  1. 可能由于 Openssh 更新失败,导致 sshd 服务异常,影响正常登陆。
  2. 也可能存在上述内容升级过程中因依赖问题导致失败。

一、基于 Dropbear 设置备用 ssh 服务器

Dropbear 是一个相对轻量级的SSH服务器和客户端。它是与 OpenSSH 〜/ .ssh / authorized_keys公钥认证兼容的。 我们通过Dropbear 搭建一个新的SSH 服务器。 主要是为了避免在 升级 OpenSSH 的时候,ssh 连接异常,登陆不上服务器。

https://matt.ucc.asn.au/dropbear/dropbear.html

  1. 配置一个新的SSH 服务 dropbear

    wget  https://matt.ucc.asn.au/dropbear/dropbear-2020.80.tar.bz2
    tar -xjf dropbear-2020.80.tar.bz2
    cd dropbear-2020.80
    ./configure && make && make scp && make install
    mkdir /etc/dropbear
    /usr/local/bin/dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key
    /usr/local/bin/dropbearkey -t rsa -s 4096 -f /etc/dropbear/dropbear_rsa_host_key
    /usr/local/sbin/dropbear -p 25022 # 这个加下到开机启动中。 后面再除去。
  2. 测试 dropbear 服务是否可以正常提供SSH 服务

    1. 关闭 sshd,然后通过 dropbear 提供的端口进行登录。 仍然用原来的用户和密码。

二、 Openssh 更新

升级版本为: Openssh7.4 与 阿里云(ECS Centos7.7)版本一致。 OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017

2.1 ssh配置 备份

cp -raf /etc/ssh /etc/ssh.bak2020
cp -raf /etc/init.d/sshd /etc/init.d/sshd.bak2020
cp -raf /root/.ssh/ /root/.ssh.bak2020
cp -raf /home/yeemiao/.ssh/ /home/yeemiao/.ssh.bak2020

2.2 openssh 升级

yum   remove  openssh  # 卸载 openssh
wget https://openbsd.mirror.netelligent.ca/pub/OpenBSD/OpenSSH/portable/openssh-7.4p1.tar.gz
tar -xzvf openssh-7.4p1.tar.gz
cd openssh-7.4p1
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-ssl-dir=/usr/local/openssl102j/ # 注意 --with-ssl-dir 值为 openssl 安装的目录。
make && make install &&
install -v -m755 contrib/ssh-copy-id /usr/bin &&
install -v -m644 contrib/ssh-copy-id.1 /usr/share/man/man1 &&
install -v -m755 -d /usr/share/doc/openssh-7.4p1 &&
install -v -m644 INSTALL LICENCE OVERVIEW README* /usr/share/doc/openssh-7.4p1 mv /etc/init.d/sshd /etc/init.d/sshd.bak2020_2
cp -raf /etc/init.d/sshd.bak2020 /etc/init.d/sshd
mv /etc/ssh/sshd_config /etc/ssh/sshd_config.bak2020_2
cp -raf /etc/ssh.bak2020/sshd_config /etc/ssh/sshd_config service sshd restart
chkconfig sshd on

Openssl 升级(由于Openssh编译失败)

异常信息:

error: *** Can't find recent OpenSSL libcrypto (see confiig.log)

解决办法: 重新编译个 openssl

在测试环境这个问题没有出现,可能由于正式环境原来编辑的 openssl 不完整,重新编译下就行了。

重新编译可以保留原来的 openssl, 然后使用一个新的目录即可。

openssl 备份

cp -raf /usr/bin/openssl /usr/bin/openssl.old
cp -raf /usr/include/openssl /usr/include/openssl.old
cp -raf /usr/lib64/libssl.so /usr/lib64/libssl.so.lod
cp -raf /usr/lib64/libssl.so.1.0.1e /usr/lib64/libssl.so.1.0.1e.old
cp -raf /usr/lib64/libssl.so.10 /usr/lib64/libssl.so.10.old
cp -raf /usr/lib64/libcrypto.so.10 /usr/lib64/libcrypto.so.10.old

openssl 安装

Openssl 下载地址: https://www.openssl.org/source/old/1.0.2/

我这使用的版本是 openssl-1.0.2j

tar  -xzvf  openssl-1.0.2j.tar.gz
cd openssl-1.0.2j/
./config --prefix=/usr/local/openssl102j shared
make && echo $?
make test && echo $?
make install && echo $?

openssl 配置

#  以下删除的前面都已经备份
rm -rf /usr/bin/openssl
ln -s /usr/local/openssl102j/bin/openssl /usr/bin/openssl
rm /usr/include/openssl
ln -s /usr/local/openssl102j/include/openssl /usr/include/openssl
rm /usr/lib64/libssl.so
ln -s /usr/local/openssl102j/lib/libssl.so.1.0.0 /usr/lib64/libssl.so
rm /usr/lib64/libssl.so.10
ln -s /usr/local/openssl102j/lib/libssl.so.1.0.0 /usr/lib64/libssl.so.10
rm /usr/lib64/libcrypto.so.10
ln -s /usr/local/openssl102j/lib/libcrypto.so.1.0.0 /usr/lib64/libcrypto.so.10 echo "/usr/local/openssl102j/lib" >> /etc/ld.so.conf

加载依赖和检查

ldconfig -v
openssl version -a

参考文献

Openssl 下载地址: https://www.openssl.org/source/old/1.0.2/

https://www.cnblogs.com/leekeggs/p/9557205.html

https://blog.csdn.net/u012949658/article/details/53771871

Centos6.5 离线 Openssh 升级的更多相关文章

  1. CentOS6.5的openssl升级

    CentOS6.5的openssl升级:(修复心脏漏血漏洞) [root@linux1 ~]# rpm -qi openssl|grep VersionVersion : 1.0.1e Vendor: ...

  2. Centos 6.x Openssh 升级 7.7p1 版本

    OpenSSH 升级 目前在一家金融公司上班,正好赶上金融公司各种暴雷,本人心里慌慌的. 然后就是金融公司要进行的最低的三级等保评测,各种修改系统安全,密码强度.WAF.防火墙等各种. 评测公司对我司 ...

  3. 记录openssl和openssh升级中遇到的问题以及解决方法

    本文档讲述的升级操作是基于操作系统centos6.5,使用的openssl版本是openssl-1.0.2l.tar.gz,openssh版本是openssh-7.6p1.tar.gz. 1. 依赖检 ...

  4. 【原创】大叔问题定位分享(28)openssh升级到7.4之后ssh跳转异常

    服务器集群之间忽然ssh跳转不通 # ssh 192.168.0.1The authenticity of host '192.168.0.1 (192.168.0.1)' can't be esta ...

  5. centos6.5源码升级内核

    centos6.5源码升级内核 升级前 系统版本:  CentOS5.5 内核版本:  2.6.18-194.el5 升级前做过简单配置文件修改 yum -y upgrade    升级后 系统版本: ...

  6. CentOS6.x服务器OpenSSH平滑升级到7.3p版本——拒绝服务器漏洞攻击

    对于新安装的Linux服务器,默认OpenSSH及OpenSSL都不是最新的,需要进行升级以拒绝服务器漏洞攻击.本次介绍的是升级生产环境下CentOS6.x系列服务器平滑升级OpenSSL及OpenS ...

  7. CentOS6.x服务器OpenSSH平滑7.3p版本——拒绝服务器漏洞攻击

    对于新安装的Linux服务器,默认OpenSSH及OpenSSL都不是最新的,需要进行升级以拒绝服务器漏洞攻击.本次介绍的是升级生产环境下CentOS6.x系列服务器平滑升级OpenSSL及OpenS ...

  8. centos7生产环境下openssh升级

    由于生产环境ssh版本太低,导致使用安全软件扫描时提示系统处于异常不安全的状态,主要原因是ssh漏洞.推荐通过升级ssh版本修复漏洞 因为是生产环境,所以有很多问题需要注意.为了保险起见,在生产环境下 ...

  9. CentOS openssh升级到openssh-7.2版本

    查看现在的版本SSH -V 一.准备 备份ssh目录(重要) cp -rf /etc/ssh /etc/ssh.bak [ 可以现场处理的,不用设置 安装telnet,避免ssh升级出现问题,导致无法 ...

随机推荐

  1. NOSQL基础

    一.mongoDB介绍和使用 1.分布式文件储存数据库,使用C++开发的,可以存储任意数据(文件),允许在服务器端执行脚本,使用JSON形式储存数据{key:value} 2.支持的编程语言有:PHP ...

  2. Burp Suite 爆破high级别的DVWA

    Step1:调整 DVWA 为 high 级别,然后点击进入 Brute Force . Step2:输入正确的账号,和一个假的密码,使用BP进行拦包. Step3:Ctrl+i 将拦到的包发送到 I ...

  3. 编译原理根据项目集规范族构造LR(0)分析表

    转载于https://blog.csdn.net/Johan_Joe_King/article/details/79058597?utm_medium=distribute.pc_relevant.n ...

  4. 月历输出php代码

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. Z shell (zsh) 安装

    1. 安装 zsh 和一些依赖 sudo apt update sudo apt install -y zsh python-pygments autojump 2.下载推荐配置文件 3. 在家目录解 ...

  6. Shell编程—gawk进阶

    1使用变量 awk编程语言支持两种不同类型的变量: 内建变量 自定义变量 1.1内建变量 1. 字段和记录分隔符变量 数据字段变量允许你使用美元符号($)和字段在该记录中的位置值来引用记录对应的字段. ...

  7. Java多线程_同步工具CyclicBarrier

    CyclicBarrier概念:CyclicBarrier是多线程中的一个同步工具,它允许一组线程互相等待,直到到达某个公共屏障点.形象点儿说,CyclicBarrier就是一个屏障,要求这一组线程中 ...

  8. Docker 学习笔记(二)

    进入当前正在运行的容器 # 我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置 # 命令: docker exec -it 容器 id bashshell 测试 我们通常容器都是使用后台方 ...

  9. 新手学习seo写原创文章的方法

    http://www.wocaoseo.com/thread-102-1-1.html 前两天都是写自己公司克拉玛依电信公司年终活动和总结的事,今天继续学习seo技术,其实说难也难说容易也容易,关键的 ...

  10. 基于.NetCore3.1系列 —— 日志记录之初识Serilog

    一.前言 对内置日志系统的整体实现进行了介绍之后,可以通过使用内置记录器来实现日志的输出路径.而在实际项目开发中,使用第三方日志框架(如: Log4Net.NLog.Loggr.Serilog.Sen ...