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)
一、说明漏洞修复是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