openssh 8.0你更新了麼?附錄全套攻略,歡迎點贊!

OpenSSH 8.0 發佈了,此版本緩解了 scp(1) 工具和協議漏洞 CVE-2019-6111,該漏洞此前我們之前報導過:知名文件傳輸協議 SCP 被曝存在 35 年曆史的安全漏洞。將文件從遠程系統複製到本地目錄時,SCP 客戶端無法驗證 SCP 服務器返回的對象是否與請求的東西一致,這使得***者可以使用惡意服務器控制的內容創建或破壞本地文件。

OpenSSH 8.0 的緩解措施添加了客戶端檢查,查看從服務器發送的文件名與命令行請求是否匹配。

SCP 協議已經過時,不靈活且不易修復,OpenSSH 官方建議使用更現代的協議進行文件傳輸,如 sftp 和 rsync。

此版本新特性包括:

ssh(1)、ssh-agent(1)、ssh-add(1):PKCS#11 token 中添加對 ECDSA 密鑰的支持。

ssh(1)、sshd(8):基於 Streamlined NTRU Prime 4591^761 和 X25519 的組合,添加實驗性量子計算抗性密鑰交換方法。

ssh-keygen(1):將默認 RSA 密鑰大小增加到 3072 位。

ssh(1):允許“PKCS11Provider = none”覆蓋 ssh_config 中 PKCS11Provider 指令的後續實例。

ssh(1):提示是否錄製新主機密鑰時,輸入密鑰指紋作爲“yes”。

ssh-keygen(1):在單個命令行調用上簽名多個證書時,允許自動遞增證書序列號。

scp(1)、sftp(1):接受 -J 選項作爲 scp 和 sftp 命令行上 ProxyJump 的別名。

ssh-agent(1)、ssh-pkcs11-helper(8)、ssh-add(1):接受“-v”命令行標誌以增加輸出的詳細程度;將詳細標誌傳遞給子進程,例如從 ssh-agent 啓動的 ssh-pkcs11-helper。

ssh-add(1):添加“-T”選項以允許通過執行簽名和驗證來測試代理中的密鑰是否可用。

sshd(8):在 PAM 環境中暴露 $SSH_CONNECTION。


安裝方法(劃重點!)
1、LINUX4.0升級OPENSSH方法
首先需要配置YUM源!!
Yum配置文件在/etc/yum.repos.d/
掛載安裝光盤鏡像到/mnt目錄,並拷貝光盤文件到創建的/rhel-dvd目錄。
mount /dev/cdrom /mnt
屏蔽系統的默認YUM源,並創建新的YUM源文件
cd /etc/yum.repos.d/
mkdir old
mv .repo old/
touch localyum.repo
然後編輯localyunm.repo,內容如下:
[LINUX]
name=LINUX
gpgcheck=0
enable=1
baseurl=file:///mnt
編輯完成後
[root@myhost yum.repos.d]# yum makecache
Loaded plugins: product-id, search-disabled-repos, security, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
LINUX | 4.1 kB 00:00 ...
LINUX /group_gz | 216 kB 00:00 ...
LINUX /filelists_db | 3.4 MB 00:00 ...
LINUX /primary_db | 3.1 MB 00:00 ...
LINUX /other_db | 1.3 MB 00:00 ...
Metadata Cache Created
此方法中的第10步,視情況修改!!!!
1、ssh登錄到要安裝的服務器上,查看當前版本
[root@localhost ~]# ssh -V
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
2、在/目錄下創建/tools目錄,通過FTP工具上傳安裝文件到該目錄下
mkdir /tools
使用yum安裝Telnet服務
3、爲防止重啓SSH後無法登錄,安裝TELNET
yum install -y telnet-server
4、修改telnet文件disable=no(原有值爲yes),允許用戶遠程登錄
sed -i '12 s/yes/no/' /etc/xinetd.d/telnet
echo 'pts/0' >>/etc/securetty
echo 'pts/1' >>/etc/securetty
echo 'pts/2' >>/etc/securetty
echo 'pts/3' >>/etc/securetty
5、然後重啓服務
service xinetd restart
Stopping xinetd: [FAILED]
Starting xinetd: [ OK ]
重啓後,適用telnet登錄LINUX系統。執行之後操作!!
6、用ROOT賬戶使用telnet登錄系統執行修改OPENSSH操作
rpm -e openssh-server-5.3p1-122.el6.x86_64
安裝必要的軟件包
yum install -y gcc

yum -y install pam-devel

7、安裝zlib
cd /tools
tar -xvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure --prefix=/usr/local/zlib && make && make install
cd ..
8、安裝openssl
tar -zxvf openssl-1.0.2h.tar.gz
cd openssl-1.0.2h
./config --prefix=/usr/local/openssl && make depend && make && make install
cd ..
9、安裝openssh
tar -zxvf openssh-8.0p1.tar.gz
cd openssh-8.0p1
10、修改version.h文件,把裏面””裏面的內容改成“空格”。
/ $OpenBSD: version.h,v 1.80 2017/09/30 22:26:33 djm Exp $ /
#define SSH_VERSION " "
#define SSH_PORTABLE " "
#define SSH_RELEASE SSH_VERSION SSH_PORTABLE
11、然後再在執行編譯安裝
./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/openssl --with-zlib=/usr/local/zlib --with-md5-passwords --with-pam --without-hardening && make && make install
12、拷貝SSHD服務文件
cp contrib/redhat/sshd.init /etc/init.d/sshd
chmod +x /etc/init.d/sshd
13、修改SSHD服務文件,修改對應指令的安裝目錄
vi /etc/init.d/sshd
SSHD=/usr/sbin/sshd 爲 SSHD=/usr/local/openssh/sbin/sshd
/usr/bin/ssh-keygen -A 爲 /usr/local/openssh/bin/ssh-keygen -A
14、保存退出
把SSHD加入到系統服務
chkconfig --add sshd
15、查看系統啓動服務是否增加改項
chkconfig --list |grep sshd
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
16、重新啓動SSHD服務。
service sshd start
17、替換SSH及SSL命令
mv /usr/bin/ssh /usr/bin/ssh.old
ln -s /usr/local/openssh/bin/ssh /usr/bin/ssh
mv /usr/bin/openssl /usr/bin/openssl.old
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
18、檢查相關軟件版本
[root@myhost ~]# ssh -V
OpenSSH_8.0p1, OpenSSL 1.0.2h 3 May 2016
[root@myhost ~]# openssl version -a
OpenSSL 1.0.2h 3 May 2016
built on: reproducible build, date unspecified
platform: linux-x86_64
options: bn(64,64) rc4(16x,int) des(idx,cisc,16,int) idea(int) blowfish(idx)
compiler: gcc -I. -I.. -I../include -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack -m64 -DL_ENDIAN -O3 -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
OPENSSLDIR: "/usr/local/openssl/ssl"
升級到新版本後,默認不允許root用戶遠程登錄,修改/etc/ssh/sshd_config配置文件。
PermitRootLogin yes
重新啓動SSHD服務。
service sshd start
測試登錄SSH,測試成功後,刪除TELNET
rpm -e telnet-server-0.17-47.el6_3.1.x86_64
rpm -e xinetd-2.3.14-39.el6_4.x86_64

2、LINUX5.0升級OPENSSH方法
首先需要配置YUM源!!
Yum配置文件在/etc/yum.repos.d/
掛載安裝光盤鏡像到/mnt目錄,並拷貝光盤文件到創建的/rhel-dvd目錄。
mount /dev/cdrom /mnt
屏蔽系統的默認YUM源,並創建新的YUM源文件
cd /etc/yum.repos.d/
mkdir old
mv .repo old/
touch localyum.repo
然後編輯localyunm.repo,內容如下:
[LINUX]
name=LINUX
gpgcheck=0
enable=1
baseurl=file:///mnt
編輯完成後
[root@myhost yum.repos.d]# yum makecache
Loaded plugins: product-id, search-disabled-repos, security, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
LINUX | 4.1 kB 00:00 ...
LINUX /group_gz | 216 kB 00:00 ...
LINUX /filelists_db | 3.4 MB 00:00 ...
LINUX /primary_db | 3.1 MB 00:00 ...
LINUX /other_db | 1.3 MB 00:00 ...
Metadata Cache Created
此方法中的第10步,視情況修改!!!!
1、ssh登錄到要安裝的服務器上,查看當前版本
[root@localhost ~]# ssh -V
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
2、在/目錄下創建/tools目錄,通過FTP工具上傳安裝文件到該目錄下
mkdir /tools
使用yum安裝Telnet服務
3、爲防止重啓SSH後無法登錄,安裝TELNET
yum install -y telnet-server
4、修改telnet文件disable=no(原有值爲yes),允許用戶遠程登錄
sed -i '12 s/yes/no/' /etc/xinetd.d/telnet
echo 'pts/0' >>/etc/securetty
echo 'pts/1' >>/etc/securetty
echo 'pts/2' >>/etc/securetty
echo 'pts/3' >>/etc/securetty
5、然後重啓服務
service xinetd restart
Stopping xinetd: [FAILED]
Starting xinetd: [ OK ]
重啓後,適用telnet登錄LINUX系統。執行之後操作!!
6、用ROOT賬戶使用telnet登錄系統執行修改OPENSSH操作
rpm -e openssh-server-5.3p1-122.el6.x86_64
安裝必要的軟件包
yum install -y gcc

yum -y install pam-devel
7、安裝zlib
cd /tools
tar -xvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure --prefix=/usr/local/zlib && make && make install
cd ..
8、安裝openssl
tar -xvf openssl-1.0.2h.tar.gz
cd openssl-1.0.2h
./config --prefix=/usr/local/openssl && make depend && make && make install
cd ..
9、安裝openssh
tar -xvf openssh-8.0p1.tar.gz
cd openssh-8.0p1
10、修改version.h文件,把裏面””裏面的內容改成“空格”。
/ $OpenBSD: version.h,v 1.80 2017/09/30 22:26:33 djm Exp $ /
#define SSH_VERSION " "
#define SSH_PORTABLE " "
#define SSH_RELEASE SSH_VERSION SSH_PORTABLE
11、然後再在執行編譯安裝
./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/openssl --with-zlib=/usr/local/zlib --with-md5-passwords --with-pam --without-hardening && make && make install
12、拷貝SSHD服務文件
cp contrib/redhat/sshd.init /etc/init.d/sshd
chmod +x /etc/init.d/sshd
13、修改SSHD服務文件,修改對應指令的安裝目錄
vi /etc/init.d/sshd
SSHD=/usr/sbin/sshd 爲 SSHD=/usr/local/openssh/sbin/sshd
/usr/bin/ssh-keygen -A 爲 /usr/local/openssh/bin/ssh-keygen -A
14、保存退出
把SSHD加入到系統服務
chkconfig --add sshd
15、查看系統啓動服務是否增加改項
chkconfig --list |grep sshd
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
16、重新啓動SSHD服務。
service sshd start
17、替換SSH及SSL命令
mv /usr/bin/ssh /usr/bin/ssh.old
ln -s /usr/local/openssh/bin/ssh /usr/bin/ssh
mv /usr/bin/openssl /usr/bin/openssl.old
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
18、檢查相關軟件版本
[root@myhost ~]# ssh -V
OpenSSH_8.0p1, OpenSSL 1.0.2h 3 May 2016
[root@myhost ~]# openssl version -a
OpenSSL 1.0.2h 3 May 2016
built on: reproducible build, date unspecified
platform: linux-x86_64
options: bn(64,64) rc4(16x,int) des(idx,cisc,16,int) idea(int) blowfish(idx)
compiler: gcc -I. -I.. -I../include -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack -m64 -DL_ENDIAN -O3 -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
OPENSSLDIR: "/usr/local/openssl/ssl"
2.19、升級到新版本後,默認不允許root用戶遠程登錄,修改/etc/ssh/sshd_config配置文件。
PermitRootLogin yes
2.20、重新啓動SSHD服務。
service sshd start
2.21、測試登錄SSH,測試成功後,刪除TELNET
rpm -e telnet-server-0.17-47.el6_3.1.x86_64
rpm -e xinetd-2.3.14-39.el6_4.x86_64
3、LINUX6.0升級OPENSSH方法
安裝TELNET,防止OPENSSH服務失敗
安裝telnet-server及xinetd包
適用rpm –ivh安裝這兩個包
如果想直接以root用戶登錄對方主機,可以在修改對方主機上的配置文件/etc/pam.d/remote
註釋/etc/pam.d/remote的第一行,
即:#auth required pam_securetty.so
啓動telnet服務
systemctl start telnet.socket && systemctl start xinetd
之後常用telnet登錄系統

3.1、備份原有配置文件,並修改
cp /etc/pam.d/sshd /root
mv /etc/pam.d/sshd /etc/pam.d/sshd.old

3.2、檢查是否包含openssh-askpass包
執行rpm -qa|grep openssh-askpass
如果返回存在openssh-askpass-<版本>.x86_64包,則需要卸載該安裝包
執行 rpm -e <安裝包名>

3.3、拷貝openssh安裝包到服務器
創建安裝包目錄mkdir /openssl
使用XFTP或其它FTP工具,把以下安裝包拷貝到/openssl目錄
openssh-8.0p1-1.el6.x86_64.rpm
openssh-clients-8.0p1-1.el6.x86_64.rpm
openssh-debuginfo-8.0p1-1.el6.x86_64.rpm
openssh-server-8.0p1-1.el6.x86_64.rpm

3.4、執行升級命令
cd /openssh
rpm -Uvh *.rpm

3.5、恢復配置文件
Vi修改/etc/ssh/sshd_config文件,修改如下內容:

#PermitRootLogin prohibit-password 修改爲PermitRootLogin yes
#UsePAM no 修改爲 UsePAM yes

恢復sshd配置文件
cp /root/sshd /etc/pam.d/
提示輸入y確認

3.6、重新生成加密祕鑰
cd /etc/ssh/
mkdir old
mv sshhost* old
最後重新啓動SSH服務
/etc/init.d/sshd restart
重啓之後檢查ssh -V 當前版本是否爲8.0
4、LINUX7.0升級OPENSSH方法
安裝TELNET,防止OPENSSH服務失敗
安裝telnet-server及xinetd包
適用rpm –ivh安裝這兩個包
如果想直接以root用戶登錄對方主機,可以在修改對方主機上的配置文件/etc/pam.d/remote
註釋/etc/pam.d/remote的第一行,
即:#auth required pam_securetty.so
啓動telnet服務
systemctl start telnet.socket && systemctl start xinetd
之後常用telnet登錄系統

4.1、備份原有配置文件,並修改
cp /etc/pam.d/sshd /root
mv /etc/pam.d/sshd /etc/pam.d/sshd.old

4.2、檢查是否包含openssh-askpass包
執行rpm -qa|grep openssh-askpass
如果返回存在openssh-askpass-<版本>.x86_64包,則需要卸載該安裝包
執行 rpm -e <安裝包名>

4.3、拷貝openssh安裝包到服務器
創建安裝包目錄mkdir /openssh
使用XFTP或其它FTP工具,把以下安裝包拷貝到/openssh目錄
openssh-8.0p1-1.el6.x86_64.rpm
openssh-clients-8.0p1-1.el6.x86_64.rpm
openssh-debuginfo-8.0p1-1.el6.x86_64.rpm
openssh-server-8.0p1-1.el6.x86_64.rpm

4.4、執行升級命令
cd /openssh
rpm -Uvh *.rpm

4.5、恢復配置文件
Vi修改/etc/ssh/sshd_config文件,修改如下內容:

#PermitRootLogin prohibit-password 修改爲PermitRootLogin yes
#UsePAM no 修改爲 UsePAM yes

恢復sshd配置文件
cp /root/sshd /etc/pam.d/
提示輸入y確認

4.6、重新生成key祕鑰
cd /etc/ssh
mkdir key_bak
mv sshhost* key_bak
最後重新啓動SSH服務

4.7、重啓SSHD
/etc/init.d/sshd restart
重啓之後檢查ssh -V 當前版本是否爲8.0

5、UBUNTU系統升級

適用於一下版本UBUNTU
jcadmin@ubuntu:~/deb$ uname -a
Linux ubuntu 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
jcadmin@ubuntu:~/deb$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 12.04 LTS
Release: 12.04
Codename: precise

5.1、安裝必備包
上傳安裝包deb.tar source_ssh.tar ssh5.9.tar
sudo cp /etc/init.d/ssh /etc/init.d/ssh.old
tar -xvf deb.tar
cd deb
sudo dpkg -i *.deb
netstat -a | grep telnet

5.2、telnet 登錄,卸載ssh
sudo dpkg -r openssh-server
sudo dpkg -r openssh-client
cd /etc/
sudo mv ssh/ ssh.old

5.3、安裝軟件包
cd ~
tar -xvf source_ssh.tar
cd source_ssh/
tar -xvf zlib-1.2.8.tar.gz
cd zlib-1.2.8/
sudo ./configure
sudo make && sudo make install
cd ..
tar -xvf openssl-1.0.2s.tar.gz
cd openssl-1.0.2s/
sudo ./config -fPIC
sudo make && sudo make install
cd ..
tar -xvf openssh-8.0p1.tar.gz
cd openssh-8.0p1/
sudo ./configure --sysconfdir=/etc/ssh --with-md5-passwords --with-ssl-dir=/usr/local/ssl
sudo make && sudo make install

如果make install 報錯提示ssh用戶不存在,增加SSH用戶信息
sudo vi /etc/passwd
增加sshd:x:105:65534::/var/run/sshd:/usr/sbin/nologin

5.4、恢復服務
sudo cp /usr/local/sbin/sshd /usr/bin/
sudo cp /usr/local/sbin/sshd /usr/sbin/
sudo cp /etc/init.d/ssh.old /etc/init.d/ssh
sudo service ssh stop
sudo service ssh start
本地ssh -V查看版本
遠程主機telnet 該主機22端口,看返回版本是否爲8.0
適用SSH遠程登錄,測試。
如成功升級,卸載telnetd,執行如下命令:
sudo dpkg -r telnetd

附件i、如果ssh服務開機不自動啓動按如下修改
vim /etc/rc.local
在exit 0上一行添加
/usr/local/openssh/sbin/sshd
所有內容收錄在百度網盤,歡迎下載交流:
鏈接:https://pan.baidu.com/s/1JY4EaBEuRk_8bSn2fgH0KQ
提取碼:60uu

歡迎關注我的個人公衆號

openssh 8.0你更新了麼?附錄全套攻略,歡迎點贊!

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