伊言:當 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