升級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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章