升级openssh、openssl

伊言:当 Telenet 已经渐渐退出历史舞台后,SSH ( Security SHell ) 就成为几乎所有 Linux 操作系统的远程登录连接协议。
但是,目前很多 Linux 发行版中集成的 SSH 软件版本都比较老,存在着一些漏洞和安全隐患,因而升级 SSH 服务软件修补漏洞提升系统安全成为 Linux 系统安全中非常重要的一个环节。
下面就讲述一下如何升级 SSH 服务继上篇Linux下本地yum源配置(内网、无连接公网)


SSH 有许多标准,通常 Linux 中 ( Redhat, CentOS, SuSE 等 )使用的是开源版本的 OpenSSH,
所以我们就是对 OpenSSH 进行升级。在升级 OpenSSH 之前,需要升级系统中的 OpenSSL (OpenSSL 可以为 OpenSSH 提供加密传输支持,
是 OpenSSH 的一个中间件)版本和 Zlib (提供压缩传输支持)版本,以达到最好的安全性
 升级前需要开启telnet,防止升级失败,系统无法登录,对应的防火墙需要开启23端口,安装需要telnet相关包(推荐通过系统ISO安装)
 升级过程中需要刷新lib库:ldconfig -v;
 升级顺序:顺序是zlib库-> openssl -> openssh;

升级需要gcc、make、perl、zlib、zlib-devel、pam、pam-devel;

  • ===============升级前工作:1、创建2、关=======

1、关闭selinux
     到/etc/sysconfig/selinux里,SELINUX=enforcing改成SELINUX=disabled
    
     
    查看状态getenforce
    然后重启reboot查看getenforce是否生效
2、关闭防火墙(升级完毕要打开)
    查看防火墙状态:

    [root@centos6 ~]# service iptables status

    iptables:未运行防火墙。

    开启防火墙:

    [root@centos6 ~]# service iptables start

    关闭防火墙:

    [root@centos6 ~]# service iptables stop
3、以防ssh升级后不能链接、可以把telnet打开最后ssh可以链接后一定要关闭、危险性很大
    yum install telnet-server -y

    chkconfig telnet on

    /etc/init.d/xinetd restart

    先把telnet开起来,我们登录上去看下

    [root@RHEL5 ~]# rpm -qa | grep telnet
    telnet-0.17-38.el5
    telnet-server-0.17-38.el5

    因为telnet最大的缺点是不安全,采用明文传输用户名和口令。现需要彻底从系统中删除telnet,过程如下(升级openssh成功后)

    [root@RHEL5 ~]# rpm -e telnet-0.17-38.el5 # -e参数表示删除rpm包
    [root@RHEL5 ~]# rpm -e telnet-server-0.17-38.el5
    warning: /etc/xinetd.d/telnet saved as /etc/xinetd.d/telnet.rpmsave

    检查:

    [root@RHEL5 ~]# rpm -qa | grep telnet

  • ==================================================

准备好1、perl-5.16.0.tar.gz 2、openssl-1.1.1.tar.gz  3、openssh-8.0p1.tar.gz 4、libperl.so文件。在相对应的目录都移到服务器的(/usr/bin/)目录下
(yum要是没有在公网的话,需要把yum源指向本地的镜像、详细参考yum本地配置)
 yum install zlib-devel.x86_64 -y
 yum install perl-Params-Validate.x86_64 -y
 yum install perl-Module-Load-Conditional -y
 yum install pam-devel -y
 (yum install zlib-devel.x86_64 perl-Params-Validate.x86_64 perl-Module-Load-Conditional pam-devel -y)
    
先perl、再ssl、最后ssh

1.升级 perl-5.16.0 太旧的版本,可能需要先升级perl
        perl   -V 
        perl   -version查看版本
      cd /usr/bin/
      ls
      tar xvf perl-5.16.0.tar.gz
    cd perl-5.16.0

    ./Configure -des -Dprefix=/usr
    make
    make test
    rpm -e --nodeps perl
    make install
    perl装完,把libperl.so这个文件放到/lib64下面(链接提供)
    安装过程中还有缺什么包,可以直接yum install xxxxx -y
2.升级 openssl-1.1.1
    openssl version查看版本
    tar xvf openssl-1.1.1.tar.gz
    cd openssl-1.1.1
    ./config --prefix=/usr --openssldir=/etc/ssl --shared zlib
    make
    make test (这一步很重要哦!是进行 SSL 加密协议的完整测试,如果出现错误就要一定先找出哪里的原因,否则一味继续可能导致最终 SSH 不能使用,后果很严重哦!)
    make install

    3.升级 openssh-8.0p1
    tar -xvf openssh-8.0p1.tar.gz
    cd openssh-8.0p1
    ./configure --prefix=/usr --sysconfdir=/etc/sshd --with-zlib=/usr --with-ssl-dir=/usr --with-pam --with-md5-passwords --with-ssl-engine
    (注意,如果 configure 时提示 PAM 有错误,那一般是因为系统中没有安装 pam-devel RPM 包,找到安装光盘,安装 pam-devel 就可以解决啦)
    
    make
    make install

4.重启服务并检查是否成功
    service sshd restart
    ssh -V

  • ========关闭telnet========

 因为telnet最大的缺点是不安全,采用明文传输用户名和口令。现需要彻底从系统中删除telnet,过程如下(升级openssh成功后)

    [root@RHEL5 ~]# rpm -e telnet-0.17-38.el5 # -e参数表示删除rpm包
    [root@RHEL5 ~]# rpm -e telnet-server-0.17-38.el5
    warning: /etc/xinetd.d/telnet saved as /etc/xinetd.d/telnet.rpmsave

    检查:

    [root@RHEL5 ~]# rpm -qa | grep telnet

  • ======有可能运到的问题==========

    openssh升级后root无法连接问题:把sshd_config里面的相对应内容改成PermitRootLogin yes
    cd /etc/sshd/
    [root@localhost sshd]# vi sshd_config 
    改变:PermitRootLogin yes
    [root@localhost sshd]# service sshd restart
    停止 sshd:                                                [确定]
    正在启动 sshd:                                            [确定]
    [root@localhost sshd]# service sshd restart
    停止 sshd:                                                [确定]
    正在启动 sshd:                                            [确定]
    [root@localhost sshd]# 
    [root@localhost sshd]# 
    [root@localhost sshd]# 
    [root@localhost sshd]# 
    [root@localhost sshd]# cat /etc/sshd/sshd_config | grep Root
    PermitRootLogin yes
    # the setting of "PermitRootLogin without-password".

 

    service iptables start 无反应的解决方法
    [root@lt ~]# service iptables start
    [root@lt ~]# service iptables status
    防火墙已停
    解决方法:
一、初始化iptables。
    iptables -F
    service iptables save
    service iptables restart

有啥不合理地方 望请指正哈。
 ok---恰同学少年-19.8.6

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值