天天看點

centos7.5更新openssh7.4到7.9

漏洞掃描工具掃描出openssh使用者枚舉漏洞,搜尋資料得知無更新檔和更新包,解決這個漏洞得安裝漏洞修複之後的版本version>7.8。

環境

linux版本: CentOS Linux release 7.5.1804

ssh版本: OpenSSH_7.4p1

更新前準備

  • 備份
    • 備份ssh配置

      mkdir -p /bak

      cp -ar /etc/ssh /bak

    • 備份老版本的openssh軟體包

      [[email protected] soft]# rpm -qa|grep openssh

      openssh-7.4p1-16.el7.x86_64

      openssh-server-7.4p1-16.el7.x86_64

      openssh-clients-7.4p1-16.el7.x86_64

      可以去網上下載下傳,這裡上傳的雲盤:

      連結: https://pan.baidu.com/s/1K9PRWji99IeSoWc6O6rcfw 提取碼: ex5v

      下載下傳openssh7.4.zip, 将這些檔案全部上傳至要更新的伺服器。

    • 安裝telnet服務,防止ssh更新後登入不上

      網盤裡telnet.zip解壓安裝即可:

      [[email protected] telnet_dir]# ls
      telnet-0.17-64.el7.x86_64.rpm  telnet-server-0.17-64.el7.x86_64.rpm  xinetd-2.3.15-13.el7.x86_64.rpm
      
      [[email protected] telnet_dir]# rpm -iv --force --nodeps *.rpm
      
      [[email protected] telnet_dir]# chkconfig xinetd on
      注意:正在将請求轉發到“systemctl enable xinetd.service”。
      
      [[email protected] telnet_dir]# chkconfig telnet on
      注意:正在将請求轉發到“systemctl enable telnet.socket”。
      Created symlink from /etc/systemd/system/sockets.target.wants/telnet.socket to /usr/lib/systemd/system/telnet.socket.
      
      [[email protected] telnet_dir]#  systemctl start telnet.socket
      
      [[email protected] telnet_dir]#  systemctl start xinetd
      
      # 測試telnet是否連接配接正常,預設配置不支援root登入,最好建一個普通使用者登入,再su到root,更新完成再userdel -r 删除使用者即可,也可以更改配置允許root通過telnet登入。
      [[email protected] telnet_dir]#  useradd tom
      [[email protected] telnet_dir]#  passwd tom
      進行遠端telnet連接配接測試
                 

建構openssh7.9p1的rpm包

這裡為了更省事,防止網絡等環境問題,建構openssh的rpm包進行安裝。上面從我的網盤連結裡下載下傳了openssh.zip檔案的可以忽略這一步,因為openssh.zip裡面已經建構好了openssh7.9p1的rpm包,直接進行更新安裝即可。

[[email protected] ~]# mkdir -p /usr/src/redhat/{SOURCES,SPECS}

[[email protected] ~]# cd /usr/src/redhat/SOURCES/

[[email protected] SOURCES]# wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-7.9p1.tar.gz

[[email protected] SOURCES]# tar -zvxf openssh-7.9p1.tar.gz openssh-7.9p1/contrib/redhat/openssh.spec

[[email protected] SOURCES]# mv openssh-7.9p1/contrib/redhat/openssh.spec ../SPECS/

[[email protected] SOURCES]# chown sshd:sshd /usr/src/redhat/SPECS/openssh.spec

[[email protected] SOURCES]# cp /usr/src/redhat/SPECS/openssh.spec  /usr/src/redhat/SPECS/openssh.spec_def

[[email protected] SOURCES]# sed -i -e "s/%define no_gnome_askpass 0/%define no_gnome_askpass 1/g" /usr/src/redhat/SPECS/openssh.spec

[[email protected] SOURCES]# sed -i -e "s/%define no_x11_askpass 0/%define no_x11_askpass 1/g" /usr/src/redhat/SPECS/openssh.spec

[[email protected] SOURCES]# mkdir -p ~/rpmbuild/SOURCES/

[[email protected] SOURCES]# cp /usr/src/redhat/SOURCES/openssh-7.9p1.tar.gz ~/rpmbuild/SOURCES/

[[email protected] SOURCES]# cd /usr/src/redhat/SPECS/

[[email protected] SPECS]# rpmbuild -ba openssh.spec


[[email protected] SPECS]# ll /root/rpmbuild/RPMS/x86_64/openssh-*
-rw-r--r-- 1 root root  496204 1月  17 13:31 /root/rpmbuild/RPMS/x86_64/openssh-7.9p1-1.el7.x86_64.rpm
-rw-r--r-- 1 root root  548576 1月  17 13:31 /root/rpmbuild/RPMS/x86_64/openssh-clients-7.9p1-1.el7.x86_64.rpm
-rw-r--r-- 1 root root 2508852 1月  17 13:31 /root/rpmbuild/RPMS/x86_64/openssh-debuginfo-7.9p1-1.el7.x86_64.rpm
-rw-r--r-- 1 root root  391696 1月  17 13:31 /root/rpmbuild/RPMS/x86_64/openssh-server-7.9p1-1.el7.x86_64.rpm


參考:https://blog.csdn.net/qq_42609381/article/details/82855043
# 編譯過程遇到的錯誤: 
錯誤:建構依賴失敗:  openssl-devel < 1.1 被 openssh-7.9p1-1.el7.x86_64 需要
解決:[[email protected] SPECS]# vim openssh.spec   注釋掉  BuildRequires: openssl-devel < 1.1 這一行

錯誤:configure: error: PAM headers not found
RPM 建構錯誤: /var/tmp/rpm-tmp.OB3GHI (%build) 退出狀态不好
解決: yum install pam-devel


錯誤:壞檔案:/root/rpmbuild/SOURCES/x11-ssh-askpass-1.2.4.1.tar.gz: 沒有那個檔案或目錄
解決:
wget http://ftp.riken.jp/Linux/momonga/6/Everything/SOURCES/x11-ssh-askpass-1.2.4.1.tar.gz
cp x11-ssh-askpass-1.2.4.1.tar.gz  /root/rpmbuild/SOURCES/
           

更新

  • 解除安裝目前版本的openssh
    rpm -e `rpm -qa |grep openssh`
    如果有依賴:
    rpm -e `rpm -qa |grep openssh` --nodeps
               
  • 删除/etc/ssh/下所有檔案(注意檢查是否備份)
    rm -rf /etc/ssh/*
               
  • rpm安裝openssh7.9p1
    unzip openssh.zip
    rpm -iv --force --nodeps *.rpm
               
  • 配置服務
    設定開機啟動:
    chkconfig sshd on
    
    編輯ssh配置檔案:
    vim /etc/ssh/sshd_config
    配置: PasswordAuthentication yes
    如果要允許root使用者ssh登入需要配置:PermitRootLogin yes
    
    服務重新開機
    service sshd restart
    
    驗證連接配接和版本
    ssh -V
               
    可以直接恢複之前的ssh配置檔案看能否成功,我這裡直接恢複之前的配置檔案可以啟動但無法連接配接,我注釋掉GSS和PAM後可以連接配接。
#GSSAPIAuthentication yes
  #GSSAPICleanupCredentials no
  #UsePAM yes
           

解除安裝telnet

更新完成之後如果需要解除安裝telnet,進行如下步驟即可(解除安裝之前確定ssh連接配接已經沒有問題):

systemctl stop xinetd
systemctl stop telnet.socket
chkconfig xinetd off
chkconfig telnet off
rpm -e `rpm -qa|egrep "telnet|xinetd"`

# 最後删除之前測試telnet建立的普通使用者
userdel -r tom
           

轉載于:https://www.cnblogs.com/liao-lin/p/10286722.html

繼續閱讀