Linux升級OpenSSH和OpenSSL,解決XMSS Key 解析整數溢出漏洞、OpenSSL 拒絕服務漏洞


OpenSSH和OpenSSL
🔧OpenSSL
OpenSSL其實是一個開源的C函數庫,多用於加密依賴,很多程序的編譯,需要OpenSSL作為依賴包。

🖥OpenSSH
OpenSSH 是 SSH (Secure SHell) 協議的免費開源實現,類似於OpenJDK和OracleJDK的區別。需要用到OpenSSL的函數庫,所以在更新OpenSSH前,最好先更新OpenSSL。

SSH協議族可以用來進行遠程控制, 或在計算機之間傳送文件。相對於傳統方式,OpenSSH提供了服務端后台程序和客戶端工具,並且加密遠程控制和文件傳輸過程中的數據。

簡單地說,日常使用OpenSSH:遠程控制服務器端,如:遠程登錄訪問Linux的Terminal。且過程中加密傳輸。

OpenSSL 拒絕服務漏洞
拒絕服務漏洞,代號為:CVE-2021-3449:

  • 主要是一些操作,可能會讓OpenSSL TLS 強行停止。【我感覺這個漏洞不是很嚴重啦,但是大家都覺得很嚴重……那還是有必要修復一下╮( ̄▽ ̄"")╭】

    解決方法很簡單:升級OpenSSL版本。

XMSS Key 解析整數溢出漏洞
XMSS Key漏洞,代號為:CVE-2019-16905:

  • 主要是非法用戶,可以通過此漏洞,跳過OpenSSH的認證,遠程登錄到你服務器【不過計算難度挺高的,而且條件苛刻……】。
    但是,總歸是重大漏洞,需要修復:

解決方法很簡單:升級OpenSSH版本。
升級的方法很簡單:

  • 下載新版本OpenSSL源碼
  • 備份舊版本OpenSSL
  • 編譯安裝新版本OpenSSL
    下載新版本OpenSSL源碼
    這邊推薦下載地址:https://ftp.openssl.org/source

    比如,我這邊下載openssl-1.1.1k.tar.gz。到Linux控制台內,使用wget下載即可(你也可以使用寶塔等軟件下載,但是記得權限問題):
    wget 'https://ftp.openssl.org/source/openssl-1.1.1k.tar.gz'


    之后,我們解壓這個tar.gz文件夾,並進入:
# 使用tar工具包解壓
tar -xf openssl-1.1.1k.tar.gz
# 進入文件夾
cd openssl-1.1.1k


備份舊版本OpenSSL
為了避免編譯過程中,出現意外(如:遠程SSH突然斷連,導致編譯失敗);我們提前備份舊版本OpenSSL,給回滾“留條路”(如果你之前都沒有安裝OpenSSL,這步可以跳過):

# 備份OpenSSL到用戶目錄,並重命名為openBak
mv openssl ~/openBak

編譯安裝新版本OpenSSL
剛剛我們已經在新的OpenSSL目錄,所以我們可以直接開始編譯。首先,設置配置。我們使用默認的即可:
./config

之后,進行make編譯操作:
make -j 4
最后,進行make install安裝操作:
make install



操作完成后/usr/bin下重新有openssl文件。我們只需要重新建立軟連接即可:
ln -s /usr/local/bin/openssl /usr/bin/openssl

到此,OpenSSL升級完成。重新騰訊雲安全檢測:

升級OpenSSH
OpenSSH的升級的方法也很簡單:

下載新版本OpenSSH源碼

備份(移除)舊版本OpenSSH
我們要移除舊版本的OpenSSH配置:

# 備份舊文件
cp /etc/ssh ~/sshBak
# 刪除舊文件  #這步可以忽略不操作
rm -rf /etc/ssh/*

1、依賴軟件包:
yum install wget gcc -y
yum install -y zlib-devel openssl-devel 
yum install pam-devel libselinux-devel zlib-devel openssl-devel -y 

2、下載安裝包OpenSSH8.4上傳至服務器或wget直接下載
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.4p1.tar.gz

3、刪除低版本OpenSSH的的rpm包
rpm -e --nodeps `rpm -qa | grep openssh` 

4、安裝openssh
(1).解壓
  tar -zxvf openssh-8.4p1.tar.gz
  cd  openssh-8.4p1

(2).配置 #參數根據自己需要追加
 ./configure   --prefix=/usr   --sysconfdir=/etc/ssh    --with-md5-passwords   --with-pam --with-zlib   --with-tcp-wrappers    --with-ssl-dir=/usr/local/ssl   --without-hardening

(3).編譯安裝
  make -j 4 
  make install

(4)賦權
  chmod 600 /etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_ecdsa_key /etc/ssh/ssh_host_ed25519_key

(5)復制配置文件並設置允許root用戶遠程登錄
  cp -a contrib/redhat/sshd.init  /etc/init.d/sshd
  cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
  chmod u+x /etc/init.d/sshd
  vim /etc/ssh/sshd_config 
 1.修改#PermitRootLogin prohibit-password項,去掉注釋#並把prohibit-password改為yes,修改后即為PermitRootLogin yes
 2.去掉注釋#PasswordAuthentication yes變為PasswordAuthentication yes

(6)添加添加自啟服務ssh到開機啟動項
  chkconfig --add sshd
  chkconfig sshd on
  或者 systemctl enable sshd

(7)重啟服務
  systemctl restart sshd

(8)查看下安裝結果:
  ssh -V

ssh真實升級案例
公司:貝塔數據
服務器:騰訊雲虛擬主機
系統版本:CentOS Linux release 8.4.2105
內核版本:4.18.0-305.10.2.el8_4.x86_64

# wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.8p1.tar.gz
# rpm -qa | grep openssh
# cp /etc/ssh ~/sshBak -r
# tar zxvf openssh-8.8p1.tar.gz 
# cd openssh-8.8p1/
# yum install wget gcc -y
# yum install -y zlib-devel openssl-devel 
# yum install pam-devel libselinux-devel zlib-devel openssl-devel -y 
# ssh -V
# which ssh
# cp /usr/bin/ssh /tmp/
# rpm -e --nodeps `rpm -qa | grep openssh` 
# rpm -qa | grep openssh

#  ./configure   --prefix=/usr   --sysconfdir=/etc/ssh    --with-md5-passwords   --with-pam --with-zlib   --with-tcp-wrappers
# make -j 4
# echo $?
# make install
# echo $?
# ssh -V
# chmod 600 /etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_ecdsa_key /etc/ssh/ssh_host_ed25519_key
# cp -a contrib/redhat/sshd.init  /etc/init.d/sshd
# cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
# chmod u+x /etc/init.d/sshd
# vim /etc/ssh/sshd_config 
 1.修改#PermitRootLogin prohibit-password項,去掉注釋#並把prohibit-password改為yes,修改后即為PermitRootLogin yes
 2.去掉注釋#PasswordAuthentication yes變為PasswordAuthentication yes

[root@VM-16-15-centos openssh-8.8p1]# ssh -V
OpenSSH_8.8p1, OpenSSL 1.1.1g FIPS  21 Apr 2020

[root@VM-16-15-centos openssh-8.8p1]# systemctl enable sshd
sshd.service is not a native service, redirecting to systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable sshd

systemctl restart sshd  #一定要重啟


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM