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
- 重啟OpenSSH進程服務(重要‼️)
下載新版本OpenSSH源碼
同樣,這邊推薦下載地址:http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/
https://cdn.openbsd.org/pub/OpenBSD/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 #一定要重啟