centos6.5中openssh從5.3升級到7.3

studywell發表於2018-12-05

centos6.5中openssh從5.3升級到7.3

參考:


相關說明

CentOS6.5 自帶的SSH版本5.3太低,安全檢查報有漏洞,需要升級版本。

本文使用openssh-7.3p1的版本進行原始碼升級安裝。

升級OpenSSH不難,難的是在升級前的基礎環境安裝。需要以下的軟體:gcc-c++,zlib,OpenSSL,pam


升級過程ssh中斷,需先將telnet服務開啟。如能直接登陸系統,則不需要安裝telnet.

需要先安裝xinted,telnet-server

參考:http://www.cnblogs.com/xlmeng1988/archive/2012/04/24/telnet-server.html

需要安裝如下包:

telnet-server-1.2-134.24.1.x86_64.rpm

xinetd-2.3.14-40.el6.x86_64.rpm

xinetd-2.3.14-40.el6.src.rpm  


啟動TELNET服務

編輯/etc/xinetd.d/telnet, 將其中的 disable = yes 的yes改為no.

使用chkconfig命令直接開啟:[root@localhost loong]# chkconfig telnet on

啟用xinetd服務:service xinetd restart

允許root使用telnet登陸:不建議開放telnet的root登入,容易帶來安全隱患。

注:預設情況下,系統只允許普通使用者telnet登入,不允許root使用者登入。要想獲得root許可權,可以使用普通使用者登入,然後執行su,來獲得root許可權。

或使用一下方法,允許root登入telnet:

方法一:# mv /etc/securetty /etc/securetty.bak (不建議這種方法,測試完後再改回去吧!)

方法二:修改/etc/pam.d/remote,註釋掉:auth       required     pam_securetty.so


升級OpenSSH

基礎環境安裝三種方式,YUM、rpm、原始碼安裝

1、yum安裝

應該是最方便的方法了。

yum -y gcc-c++,zlib,zlib-devel,openssl,openssl-devel,pam-devel


2、rpm安裝

2.1、gcc-c++安裝步驟

順序不能顛倒,否則會報錯

rpm -ivh ppl-0.10.2-11.el6.x86_64.rpm 

rpm -ivh cloog-ppl-0.15.7-1.2.el6.x86_64.rpm 

rpm -ivh mpfr-2.4.1-6.el6.x86_64.rpm 

rpm -ivh cpp-4.4.7-17.el6.x86_64.rpm

rpm -Uvh kernel-headers-2.6.32-642.el6.x86_64.rpm  

rpm -Uvh tzdata-2016c-1.el6.noarch.rpm 

rpm -Uvh glibc-devel-2.12-1.192.el6.x86_64.rpm glibc-2.12-1.192.el6.x86_64.rpm glibc-headers-2.12-1.192.el6.x86_64.rpm glibc-common-2.12-1.192.el6.x86_64.rpm 

rpm -Uvh libgcc-4.4.7-17.el6.x86_64.rpm 

rpm -Uvh libgomp-4.4.7-17.el6.x86_64.rpm 

rpm -ivh gcc-4.4.7-17.el6.x86_64.rpm 

rpm -Uvh libstdc++-4.4.7-17.el6.x86_64.rpm 

rpm -ivh libstdc++-devel-4.4.7-17.el6.x86_64.rpm 

rpm -ivh gcc-c++-4.4.7-17.el6.x86_64.rpm


2.2、zlib安裝步驟

rpm -ivh zlib-devel-1.2.3-29.el6.x86_64.rpm


2.3、OpenSSL安裝步驟

順序不能顛倒,否則會報錯。

rpm -Uvh keyutils-1.4-5.el6.x86_64.rpm keyutils-libs-1.4-5.el6.x86_64.rpm keyutils-libs-devel-1.4-5.el6.x86_64.rpm 

rpm -Uvh krb5-libs-1.10.3-57.el6.x86_64.rpm krb5-workstation-1.10.3-57.el6.x86_64.rpm 

rpm -Uvh libselinux-2.0.94-7.el6.x86_64.rpm libselinux-utils-2.0.94-7.el6.x86_64.rpm libselinux-python-2.0.94-7.el6.x86_64.rpm 

rpm -ivh libsepol-devel-2.0.41-4.el6.x86_64.rpm 

rpm -ivh libselinux-devel-2.0.94-7.el6.x86_64.rpm 

rpm -Uvh e2fsprogs-libs-1.41.12-22.el6.x86_64.rpm e2fsprogs-1.41.12-22.el6.x86_64.rpm libss-1.41.12-22.el6.x86_64.rpm libcom_err-1.41.12-22.el6.x86_64.rpm 

rpm -ivh krb5-devel-1.10.3-57.el6.x86_64.rpm libcom_err-devel-1.41.12-22.el6.x86_64.rpm 

rpm -Uvh openssl-devel-1.0.1e-48.el6.x86_64.rpm openssl-1.0.1e-48.el6.x86_64.rpm


2.4、pam安裝步驟

rpm -Uvh pam-devel-1.1.1-22.el6.x86_64.rpm pam-1.1.1-22.el6.x86_64.rpm


3、原始碼安裝

只做過zlib和OpenSSL的原始碼安裝。rpm已安裝,就不用安裝了。

3.1、zlib原始碼安裝

[root@localhost tmp]# tar xf zlib-1.2.8.tar.gz

[root@localhost tmp]# cd zlib-1.2.8

[root@localhost zlib-1.2.8]# ./configure --prefix=/usr/local/zlib

Checking for gcc...

Checking for shared library support...

Building shared library libz.so.1.2.8 with gcc.

Checking for off64_t... Yes.

Checking for fseeko... Yes.

Checking for strerror... Yes.

Checking for unistd.h... Yes.

Checking for stdarg.h... Yes.

Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf().

Checking for vsnprintf() in stdio.h... Yes.

Checking for return value of vsnprintf()... Yes.

Checking for attribute(visibility) support... Yes.

[root@localhost zlib-1.2.8]# make

[root@localhost zlib-1.2.8]# make install


3.2、OpenSSL原始碼安裝

[root@localhost tmp]# tar zxf openssl-1.0.2h.tar.gz

[root@localhost tmp]# cd openssl-1.0.2h

[root@localhost openssl-1.0.2h]# ./config --prefix=/usr/local/openssl --shared

[root@localhost openssl-1.0.2h]# make depend

[root@localhost openssl-1.0.2h]# make

[root@localhost openssl-1.0.2h]# make test

[root@localhost openssl-1.0.2h]# make install


4、原始碼安裝OpenSSH

安裝前最好先開啟telnet服務,以防升級失敗,無法使用ssh登入時可以使用telnet。

# 解除安裝舊版本openssh,解除安裝可以在make之後進行。

rpm -qa | grep openssh

rpm -e --nodeps `rpm -qa | grep openssh`


# 升級新版本

# --with-ssl-dir=*** 選項,在OpenSSL不是預設安裝路徑的時候新增。

./configure --prefix=/usr --sysconfdir=/etc/ssh --with-zlib=/usr/local/zlib --with-md5-passwords --with-pam

./configure --prefix=/usr --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/openssl --with-zlib=/usr/local/zlib --with-md5-passwords --with-pam

make

make install


# 複製配置檔案

cp ssh_config /etc/ssh/

cp sshd_config /etc/ssh/

cp moduli /etc/ssh/


# 複製啟動指令碼到/etc/init.d

# 根據安裝路徑情況,可能需要修改啟動指令碼中sshd的路徑

cp contrib/redhat/sshd.init /etc/init.d/sshd

/usr/sbin/sshd -t -f /etc/ssh/sshd_config


# 加入開機自啟

chkconfig --add sshd

chkconfig sshd on

chkconfig sshd --list


# 開啟root使用者遠端登入。

# 此步驟不是必須。建議是關閉該選項,開啟會有安全隱患。

vi /etc/ssh/sshd_config

PermitRootLogin yes


# 開啟SSH服務

service sshd start


5、關閉telnet服務,

編輯/etc/xinetd.d/telnet, 將其中的 disable = yes 的yes改為no.

使用chkconfig命令直接開啟:[root@localhost loong]# chkconfig telnet off

  恢復securetty:# cp /etc/securetty.bak /etc/securetty 


6、問題:重啟系統後,需直接登陸控制檯,重啟sshd服務方可遠端正常訪問;

service sshd stop

service sshd start


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29519108/viewspace-2284309/,如需轉載,請註明出處,否則將追究法律責任。

相關文章