快捷搜索:  汽车  科技

centos7.4启动ssh,CentOS6.6系统升级OpenSSH版本到OpenSSH

centos7.4启动ssh,CentOS6.6系统升级OpenSSH版本到OpenSSH[root@linuxyunwei ~]# ssh -VOpenSSH版本信息:操作系统版本信息:[root@linuxyunwei ~]# cat /etc/system-releaseCentOS release 6.6 (Final)

centos7.4启动ssh,CentOS6.6系统升级OpenSSH版本到OpenSSH(1)

一、说明

漏洞修复是Linux系统运维的日常工作。运营商的客户更是每月一扫,所以几乎每个月都会收到漏洞扫描报告,需要根据漏洞扫描报告的结果来对linux系统进行修复。OpenSSH漏洞是比较常见的,我觉得原因有两个,一个是SSH作为基本连接工具,每个系统都有,受攻击的面大,发现漏洞的概率也高;二是,OpenSSH版本更新也比较频繁,漏洞修复速度快。

Openssh漏洞常用的修复方式就是更新到最新版本;本文以CentOS6.6系统升级OpenSSH版本到OpenSSH_7.5p1为例,说明OpenSSH升级的过程 供大家参考。

此方法在CentOS/RedHat6.x 和 SuSE Linux 11.x 系列版本均适应。

二、升级前准备

1、旧版本信息查看

操作系统版本信息:

[root@linuxyunwei ~]# cat /etc/system-release

CentOS release 6.6 (Final)

OpenSSH版本信息:

[root@linuxyunwei ~]# ssh -V

OpenSSH_5.3p1 OpenSSL 1.0.1e-fips 11 Feb 2013

openssl版本信息:

[root@linuxyunwei src]# openssl version -a

OpenSSL 1.0.1e-fips 11 Feb 2013

built on: Wed Oct 15 10:59:09 UTC 2014

platform: linux-x86_64

options: bn(64 64) md2(int) rc4(16x int) des(idx cisc 16 int) idea(int) blowfish(idx)

compiler: gcc -fPIC -DOPENssl_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DKRB5_MIT -m64 -DL_ENDIAN -DTERMIO -Wall -O2 -g -pipe -Wall -Wp -D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -Wa --noexecstack -DPURIFY -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

OPENSSLDIR: "/etc/pki/tls"

engines: dynamic

2、备份openssh的文件

备份命令:

for i in `rpm -ql openssh-server openssh openssh-clients | grep -v share` ; do cp -r $i $i.`date %Y%m%d` ; done

备份包含以下内容

[root@linuxyunwei ~]# rpm -ql openssh-server openssh openssh-clients | grep -v share

/etc/pam.d/ssh-keycat

/etc/pam.d/sshd

/etc/rc.d/init.d/sshd

/etc/ssh/sshd_config

/etc/sysconfig/sshd

/usr/libexec/openssh/sftp-server

/usr/libexec/openssh/ssh-keycat

/usr/sbin/.sshd.hmac

/usr/sbin/sshd

/var/empty/sshd

/etc/ssh

/etc/ssh/moduli

/usr/bin/ssh-keygen

/usr/libexec/openssh

/usr/libexec/openssh/ssh-keysign

/etc/ssh/ssh_config

/usr/bin/.ssh.hmac

/usr/bin/scp

/usr/bin/sftp

/usr/bin/slogin

/usr/bin/ssh

/usr/bin/ssh-add

/usr/bin/ssh-agent

/usr/bin/ssh-copy-id

/usr/bin/ssh-keyscan

/usr/libexec/openssh/ssh-pkcs11-helper

3、使用telnet登录

3.1、CentOS 6.6 安装telnet-server

rpm -ivh telnet-server-0.17-48.el6.x86_64.rpm xinetd-2.3.14-39.el6_4.x86_64.rpm

yum install -y telnet-server xinetd

3.2、开机启动配置

chkconfig xinetd on

chkconfig telnet on

3.3、启动telnet服务

/etc/init.d/xinetd start

3.4、测试使用telnet方式远程登陆,并保留连接窗口

4、停止sshd服务

service sshd stop

5、上传升级安装包

升级过程中需要用到的有openssh、openssl、zlib三个软件的源码包;

下载地址如下:

OpenSSH : https://www.openssh.com/

OpenSSL : https://www.openssl.org/

Zlib : http://zlib.net/

升级时请下载最新的版本,本文使用软件版本如下:

openssh-7.5p1.tar.gz

openssl-1.0.2l.tar.gz

zlib-1.2.11.tar.gz

保持良好习惯,将源码包复制到/usr/local/src/中:

cp openssh-7.5p1.tar.gz openssl-1.0.2l.tar.gz zlib-1.2.11.tar.gz /usr/local/src/

cd /usr/local/src/

三、升级过程

1、安装zlib

[root@linuxyunwei ~]# rpm -qa | grep zlib

zlib-devel-1.2.3-29.el6.x86_64

zlib-1.2.3-29.el6.x86_64

jzlib-1.0.7-7.5.el6.x86_64

cd /usr/local/src/

tar zxf zlib-1.2.11.tar.gz

cd zlib-1.2.11/

./configure --prefix=/usr/local/zlib

make && make install

2、安装openssl

[root@linuxyunwei zlib-1.2.11]# rpm -qa | grep openssl

openssl-1.0.1e-30.el6.x86_64

openssl-devel-1.0.1e-30.el6.x86_64

cd /usr/local/src/

tar zxf openssl-1.0.2l.tar.gz

cd openssl-1.0.2l/

./config shared

make && make test && make install

echo "/usr/local/ssl/lib" >> /etc/ld.so.conf

ldconfig

mv /usr/bin/openssl /usr/bin/openssl.bak`date %Y%m%d`

mv /usr/include/openssl /usr/include/openssl.bak`date %Y%m%d`

ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl

ln -s /usr/local/ssl/include/openssl /usr/include/openssl

检验openssl,openssl升级成功

[root@linuxyunwei openssl-1.0.2l]# openssl version -a

OpenSSL 1.0.2l 25 May 2017

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 -fPIC -DOPENSSL_PIC -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 -DRC4_ASM -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM

OPENSSLDIR: "/usr/local/ssl"

[root@linuxyunwei openssl-1.0.2l]# ssh -V

OpenSSH_5.3p1 OpenSSL 1.0.1e-fips 11 Feb 2013

3、安装openssh

cd /usr/local/src/

tar zxf openssh-7.5p1.tar.gz

cd openssh-7.5p1

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

make && make install

提示信息:

/etc/ssh/sshd_config already exists install will not overwrite

/etc/ssh/moduli already exists install will not overwrite

ssh-keygen: generating new host keys: ECDSA ED25519

/usr/local/openssh7.5/sbin/sshd -t -f /etc/ssh/sshd_config

/etc/ssh/sshd_config line 81: Unsupported option GSSAPIAuthentication

/etc/ssh/sshd_config line 83: Unsupported option GSSAPICleanupCredentials

不使用GSSAPI:

grep GSSAPI /etc/ssh/sshd_config

sed -i 's/^.*GSSAPI/#&/g' /etc/ssh/sshd_config

grep GSSAPI /etc/ssh/sshd_config

grep GSSAPI /etc/ssh/ssh_config

sed -i 's/^.*GSSAPI/#&/g' /etc/ssh/ssh_config

grep GSSAPI /etc/ssh/ssh_config

编译参数说明:

--with-pam Enable PAM support

--with-md5-passwords Enable use of MD5 passwords

#--with-pam 参数要求安装pam-devel

[root@linuxyunwei ~]# rpm -ivh pam-devel-1.1.1-20.el6.x86_64.rpm

warning: pam-devel-1.1.1-20.el6.x86_64.rpm: Header V4 DSA/SHA1 Signature key ID 192a7d7d: NOKEY

Preparing... ########################################### [100%]

1:pam-devel ########################################### [100%]

或:

yum install -y pam pam-devel

4、修改默认路径

echo $PATH

echo 'export PATH=/usr/local/openssh7.5/sbin:/usr/local/openssh7.5/bin:$PATH' >> /etc/profile

source /etc/profile

mv /usr/bin/ssh /usr/bin/ssh.`date %Y%m%d`

ln -s /usr/local/openssh7.5/bin/ssh /usr/bin/ssh

/etc/init.d/sshd restart

5、检查openssh版本,已更新

[root@linuxyunwei openssh-7.5p1]# ssh -V

OpenSSH_7.5p1 OpenSSL 1.0.2l 26 Jan 2017

[root@linuxyunwei openssh-7.5p1]# openssl version -a

OpenSSL 1.0.2l 26 Jan 2017

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 -fPIC -DOPENSSL_PIC -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 -DRC4_ASM -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM

OPENSSLDIR: "/usr/local/ssl"

6、重启sshd服务

[root@linuxyunwei openssh-7.5p1]# /etc/init.d/sshd restart

停止 sshd:[确定]

正在启动 sshd:[确定]

四、回退方案

原本的数据都没有删除,通过修改回原本的路径可回退版本。

1、回退openssl

[root@linuxyunwei ~]# /usr/bin/openssl.bak`date %Y%m%d` version -a

OpenSSL 1.0.1e-fips 11 Feb 2013

built on: Wed Oct 15 10:59:09 UTC 2014

platform: linux-x86_64

options: bn(64 64) md2(int) rc4(16x int) des(idx cisc 16 int) idea(int) blowfish(idx)

compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DKRB5_MIT -m64 -DL_ENDIAN -DTERMIO -Wall -O2 -g -pipe -Wall -Wp -D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -Wa --noexecstack -DPURIFY -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

OPENSSLDIR: "/etc/pki/tls"

engines: dynamic

把 /usr/bin/openssl的备份文件恢复,还是旧版本

[root@linuxyunwei ~]# rm /usr/bin/openssl

[root@linuxyunwei ~]# ln -s /usr/bin/openssl.bak`date %Y%m%d` /usr/bin/openssl

[root@linuxyunwei ~]# openssl version -a

OpenSSL 1.0.1e-fips 11 Feb 2013

built on: Wed Oct 15 10:59:09 UTC 2014

platform: linux-x86_64

options: bn(64 64) md2(int) rc4(16x int) des(idx cisc 16 int) idea(int) blowfish(idx)

compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DKRB5_MIT -m64 -DL_ENDIAN -DTERMIO -Wall -O2 -g -pipe -Wall -Wp -D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -Wa --noexecstack -DPURIFY -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

OPENSSLDIR: "/etc/pki/tls"

engines: dynamic

2、回退opnessh

2.1、旧版本路径

[root@linuxyunwei ~]# /usr/bin/ssh -V

OpenSSH_5.3p1 OpenSSL 1.0.1e-fips 11 Feb 2013

2.2、升级后的路径示例

[root@linuxyunwei ~]# echo $PATH

/usr/local/openssh7.5/sbin:/usr/local/openssh7.5/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

回退环境变量PATH 删除PATH中关于openssh的部份

export PATH=$(echo $PATH | sed 's#/usr/local/openssh7.5/sbin:/usr/local/openssh7.5/bin:##g')

echo $PATH

回退/etc/profile配置

将profile中包含openssh路径的那一行注释掉

sed -i 's/^.*openssh/#&/g' /etc/profile

& 表示的是前面的搜索条件

这个时候再查就是旧版本了

[root@linuxyunwei ~]# ssh -V

OpenSSH_5.3p1 OpenSSL 1.0.1e-fips 11 Feb 2013

猜您喜欢: