GVKun编程网logo

CentOS6.5下面OpenSSH低版本升级至7.3(centos6.9升级openssh)

8

本文将为您提供关于CentOS6.5下面OpenSSH低版本升级至7.3的详细介绍,我们还将为您解释centos6.9升级openssh的相关知识,同时,我们还将为您提供关于CentOS5.8升级Op

本文将为您提供关于CentOS6.5下面OpenSSH低版本升级至7.3的详细介绍,我们还将为您解释centos6.9升级openssh的相关知识,同时,我们还将为您提供关于CentOS 5.8升级OpenSSH,OpenSSL到最新版、Centos 6.6 升级openSSH 远程访问版本(5.3升级7.0源码安装版)、CentOS 6.9 升级OpenSSH版本 关闭ssh服务后门、Centos 6.x Openssh 升级 7.7p1 版本的实用信息。

本文目录一览:

CentOS6.5下面OpenSSH低版本升级至7.3(centos6.9升级openssh)

CentOS6.5下面OpenSSH低版本升级至7.3(centos6.9升级openssh)

升级前版本:
openssl-1.0.1e-48.el6_8.1.x86_64 openssh-5.3p1-118.1.el6_8.x86_64 
升级后版本:
OpenSSL 1.0.2j OpenSSH 7.3p1 

Step-1:安装相关依赖包

yum install zlib*
yum install gcc
yum install make

Step-2:如果是最小化安装后升级,得更新一些基础东西,不然升级会遇到问题

yum -y install wget openssh-clients openssl-devel

Step-3:官网下载好这两个包放在/tmp目录下

wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-7.3p1.tar.gz wget https://openssl.org/source/openssl-1.0.2j.tar.gz 

Step-4:为确保升级过程没有意外导致ssh会话断开,首先打开telnet服务(使用telnet服务需关闭防火墙或者打开默认端口23)

yum install telnet-server xinetd
sed -i ‘/disable/s/yes/no/g‘ /etc/xinetd.d/telnet service xinetd restart 

Step-5:此时换telnet登陆服务器执行后续命令

#备份旧的ssh配置和用户家目录的相关ssh文件 cp -raf /etc/ssh /etc/ssh.old cp -raf /etc/init.d/sshd /etc/init.d/sshd.old cp -raf /root/.ssh/ /root/.ssh.old r_list=`cat /etc/passwd | awk -F ":" ‘{if($3>=500) print $6}‘` for i in $r_list;do cp -raf $i/.ssh/ $i/.ssh.old done 

Step-6:删掉旧的openssl和openssh

rpm -qa  | grep openssh | xargs rpm -e --nodeps rpm -qa | grep openssl | xargs rpm -e --nodeps 

Step-7:安装OpenSSL

tar zxf openssl-1.0.2j.tar.gz cd openssl-1.0.2j ./config --prefix=/usr --openssldir=/etc/ssl --libdir=lib --shared zlib-dynamic make depend && make make MANDIR=/usr/share/man MANSUFFIX=ssl install && install -dv -m755 /usr/share/doc/openssl-1.0.2j && cp -vfr doc/* /usr/share/doc/openssl-1.0.2j ln -s /usr/lib/libcrypto.so.1.0.0 /usr/lib64/libcrypto.so.10 ln -s /usr/lib/libssl.so.1.0.0 /usr/lib64/libssl.so.10 ln -s /usr/lib/libcrypto.so.1.0.0 /usr/lib/libcrypto.so.10 ln -s /usr/lib/libssl.so.1.0.0 /usr/lib/libssl.so.10 openssl version #安装完成,应当输出OpenSSL 1.0.2j 26 Sep 2016 

Step-8:安装OpenSSH

cd /tmp/
tar zxf openssh-7.3p1.tar.gz cd openssh-7.3p1 #隐藏版本号配置 sed -i ‘/SSH_VERSION/s/OpenSSH_7.3/Goodbye/g‘ version.h sed -i ‘/SSH_PORTABLE/s/p1/./g‘ version.h echo "/usr/include/openssl/">>/etc/ld.so.conf ldconfig ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-ssl-dir=/etc/ssl/ --with-privsep-path=/var/empty/sshd make make install && install -v -m755 contrib/ssh-copy-id /usr/bin && install -v -m644 contrib/ssh-copy-id.1 /usr/share/man/man1 && install -v -m755 -d /usr/share/doc/openssh-7.3p1 && install -v -m644 INSTALL LICENCE OVERVIEW README* /usr/share/doc/openssh-7.3p1 cp -raf /etc/init.d/sshd.old /etc/init.d/sshd mv /etc/ssh/sshd_config /etc/ssh/sshd_config.new cp -raf /etc/ssh.old/sshd_config /etc/ssh/sshd_config sed -i ‘s/GSSAPI/#GSSAPI/g‘ /etc/ssh/sshd_config sed -i ‘s/UsePAM/#UsePAM/g‘ /etc/ssh/sshd_config service sshd restart 

Step-9:将sshd设置为开机自启

chkconfig --list sshd #如果没有的话执行:chkconfig --add sshd chkconfig sshd on 

Step-10:测试SSH是否可以正常使用,以10.10.13.35为例(ssh 10.10.13.35),如果出现密码不正确的提示,则按照如下说明操作,

  1. vi /etc/ssh/sshd_config
  2. “PermitRootLogin yes” 启用

Step-11:测试sftp是否可以正常使用,如果出现“ssh可以连接但sftp不可以连接”问题时,尝试用如下解决方案进行处理

  1. vim /etc/ssh/sshd_config
  2. 如下修改配置项:
#override default of no subsystems #Subsystem sftp /usr/local/openssh/libexec/sftp-server Subsystem sftp internal-sftp 
  1. 重启sshd服务:
service sshd restart

CentOS 5.8升级OpenSSH,OpenSSL到最新版

CentOS 5.8升级OpenSSH,OpenSSL到最新版

因业务系统安全要求需要升级OpenSSH版本到最新版。原有CentOS 5.8系统自带版本如下。

[root@localhost ~]# lsb_release -a
LSB Version:	:core-4.0-amd64:core-4.0-ia32:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-ia32:pri
nting-4.0-noarchdistributor ID:	CentOS
Description:	CentOS release 5.8 (Final)
Release:	5.8
Codename:	Final
[root@localhost ~]# ssh -V
OpenSSH_4.3p2,OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008

升级版本:

经过多次验证最终确定使用ssh最新版本openssh-7.3p1和openssl 0.9.8的最终版本openssl-0.9.8zg(CentOS 5.8安装openssl的1.x版本有很多问题,不建议使用)。而且openssh-7.3p1最低要求openssl 0.9.8f。

openssl-0.9.8zg并不涉及OpenSSLCVE-2014-0160漏洞 (心脏出血漏洞)。目前有漏洞的版本有:1.0.1-1.0.1f(包含1.0.1f)以及1.0.2-beta。参考:https://segmentfault.com/a/1190000000461002

安装编译环境

yum -y install gcc openssl-devel pam-devel rpm-build

步骤1:开启telnet服务已确保ssh升级失败可以控制主机

安装并开启telnet服务。

[root@localhost ~]# yum install -y xinetd telnet-server
[root@localhost ~]# vim /etc/xinetd.d/krb5-telnet 
# default: off
# description: The kerberized telnet server accepts normal telnet sessions,\
#              but can also use Kerberos 5 authentication.
service telnet
{
        flags           = REUSE
        socket_type     = stream        
        wait            = no
        user            = root
        server          = /usr/kerberos/sbin/telnetd
        log_on_failure  += USERID
        disable         = no #修改disable为no,默认为yes,即禁用telnet服务。修改为no,即表示启用telnet服务
}
[root@localhost ~]# service xinetd restart
[root@localhost ~]# netstat -tnlp | grep :23
tcp        0      0 0.0.0.0:23                  0.0.0.0:*                   LISTEN      -

Telnet是不能以root直接登陆的,需要提前建立一个普通用户并设置密码。以普通用户登录后再su切换root,SSH升级成功后,记得关闭telnet服务。

[root@localhost ~]# useradd meng
[root@localhost ~]# passwd meng

通过其他服务器测试telnet登录保证可以使用。确保防火墙允许telnet服务,即打开23端口。

[root@localhost ~]# telnet 192.168.1.10
Trying 192.168.1.10...
Connected to 192.168.1.10 (192.168.1.10).
Escape character is '^]'.
    localhost.localdomain (Linux release 2.6.18-308.el5 #1 SMP Tue Feb 21 20:06:06 EST 2012) (2)
login: meng
Password:

一切就绪,准备开始。

步骤2:安装新版openssl

生成openssl-0.9.8zg RPM包

[root@localhost x86_64]# cd /opt
[root@localhost x86_64]# wget https://www.openssl.org/source/openssl-0.9.8zg.tar.gz
[root@localhost x86_64]# cp openssl-0.9.8zg.tar.gz /usr/src/redhat/SOURCES/
[root@localhost x86_64]# tar xvf openssl-0.9.8zg.tar.gz
[root@localhost x86_64]# cp openssl-0.9.8zg/openssl.spec /usr/src/redhat/Specs/
[root@localhost x86_64]# rpmbuild /usr/src/redhat/Specs/openssl.spec
[root@localhost x86_64]# cd /usr/src/redhat/RPMS/x86_64/
[root@localhost x86_64]# ls openssl* -l
-rw-r--r-- 1 root root 1279018 Nov  6 01:01 openssl-0.9.8zg-1.x86_64.rpm
-rw-r--r-- 1 root root  113834 Nov  6 01:01 openssl-debuginfo-0.9.8zg-1.x86_64.rpm
-rw-r--r-- 1 root root 2237915 Nov  6 01:01 openssl-devel-0.9.8zg-1.x86_64.rpm
-rw-r--r-- 1 root root  607823 Nov  6 01:01 openssl-doc-0.9.8zg-1.x86_64.rpm

安装openssl,安装时需要使用--nodeps选项,否则会报很多软件包的依赖错误“libcrypto.so.6 is needed by (installed) openldap-2.3.43-3.el5.i386”等等。

rpm --nodeps -Uvh openssl-0.9.8zg-1.i386.rpm openssl-devel-0.9.8zg-1.i386.rpm

安装后会导致yum等无法使用,提示“libcrypto.so.0.9.8 is not a symbolic link”或“libssl.so.6 is not a symbolic link”。需要执行以下命令增加链接库的软链接。

ln -s /usr/lib/libcrypto.so.0.9.8 /usr/lib/libcrypto.so.6
ln -s /usr/lib/libssl.so.0.9.8 /usr/lib/libssl.so.6
ln -s /usr/lib/libcrypto.so.0.9.8 /usr/lib64/libcrypto.so.6
ln -s /usr/lib/libssl.so.0.9.8 /usr/lib64/libssl.so.6

此时执行ssh -V会提示“ssh: symbol lookup error: ssh: undefined symbol: FIPS_mode”错误。继续安装ssh新版本即可。

步骤3:安装新版openssh

下载并编译opensshRPM包。下载地址:http://openbsd.hk/pub/OpenBSD/OpenSSH/portable/,选择最新版下载。

[root@localhost ~]# cd /opt
[root@localhost ~]# yum -y install libX11-devel libXt-devel gtk2-devel
[root@localhost ~]# wget http://openbsd.hk/pub/OpenBSD/OpenSSH/portable/openssh-7.3p1.tar.gz
[root@localhost ~]# tar zxvf openssh-7.3p1.tar.gz
[root@localhost ~]# cp openssh-7.3p1/contrib/redhat/openssh.spec /usr/src/redhat/Specs/
[root@localhost ~]# cp openssh-7.3p1.tar.gz /usr/src/redhat/SOURCES/
[root@localhost ~]# cd /usr/src/redhat/Specs
[root@localhost ~]# perl -i.bak -pe 's/^(%define no_(gnome|x11)_askpass)\s+0$/$1 1/' openssh.spec
[root@localhost ~]# rpmbuild -bb openssh.spec
[root@localhost ~]# cd /usr/src/redhat/RPMS/x86_64
[root@localhost x86_64]# ls openssh-* -l
-rw-r--r-- 1 root root 737241 Nov  6 01:41 openssh-7.3p1-1.x86_64.rpm
-rw-r--r-- 1 root root  43458 Nov  6 01:41 openssh-askpass-7.3p1-1.x86_64.rpm
-rw-r--r-- 1 root root  22868 Nov  6 01:41 openssh-askpass-gnome-7.3p1-1.x86_64.rpm
-rw-r--r-- 1 root root 933212 Nov  6 01:41 openssh-clients-7.3p1-1.x86_64.rpm
-rw-r--r-- 1 root root  16799 Nov  6 01:41 openssh-debuginfo-7.3p1-1.x86_64.rpm
-rw-r--r-- 1 root root 456630 Nov  6 01:41 openssh-server-7.3p1-1.x86_64.rpm
[root@localhost x86_64]# rpm -Uvh openssh-7.3p1-1.x86_64.rpm openssh-askpass-7.3p1-1.x86_64.rpm openssh-server-7.3p1-1.x86_64.rpm openssh-clients-7.3p1-1.x86_6
4.rpm

安装后查看版本。

[root@localhost x86_64]# ssh -V
OpenSSH_7.3p1,OpenSSL 0.9.8zg 11 Jun 2015

新版本安装后默认禁止root远程登录需要修改sshd配置文件。修改后重启ssh服务。

[root@localhost x86_64]# vim /etc/ssh/sshd_config
#LoginGraceTime 2m
PermitRootLogin yes  #去掉注释
#StrictModes yes
#MaxAuthTries 6
[root@localhost x86_64]# service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]

测试远程登录,yum等。远程登录成功后关闭telnet服务。

如果还有其他服务器需要升级。直接安装RPM即可。

[root@localhost opt]# ls
openssh-askpass-gnome-7.3p1-1.x86_64.rpm  openssh-server-7.3p1-1.x86_64.rpm       openssl-devel-0.9.8zg-1.x86_64.rpm
openssh-7.3p1-1.x86_64.rpm          openssh-clients-7.3p1-1.x86_64.rpm        openssl-0.9.8zg-1.x86_64.rpm            openssl-doc-0.9.8zg-1.x86_64.rpm
openssh-askpass-7.3p1-1.x86_64.rpm  openssh-debuginfo-7.3p1-1.x86_64.rpm      openssl-debuginfo-0.9.8zg-1.x86_64.rpm
[root@localhost opt]# rpm --nodeps -Uvh openssl*
Preparing...                ########################################### [100%]
   1:openssl                ########################################### [ 25%]
   2:openssl-debuginfo      ########################################### [ 50%]
   3:openssl-devel          ########################################### [ 75%]
   4:openssl-doc            ########################################### [100%]
[root@localhost opt]# ln -s /usr/lib/libcrypto.so.0.9.8 /usr/lib/libcrypto.so.6
[root@localhost opt]# ln -s /usr/lib/libssl.so.0.9.8 /usr/lib/libssl.so.6
[root@localhost opt]# ln -s /usr/lib/libcrypto.so.0.9.8 /usr/lib64/libcrypto.so.6
[root@localhost opt]# ln -s /usr/lib/libssl.so.0.9.8 /usr/lib64/libssl.so.6
[root@localhost opt]# rpm --nodeps -Uvh openssh-*
Preparing...                ########################################### [100%]
   1:openssh                ########################################### [ 17%]
   2:openssh-askpass        ########################################### [ 33%]
   3:openssh-askpass-gnome  ########################################### [ 50%]
   4:openssh-clients        ########################################### [ 67%]
   5:openssh-debuginfo      ########################################### [ 83%]
   6:openssh-server         ########################################### [100%]
[root@localhost opt]# vim /etc/ssh/sshd_config 
#PermitRootLogin prohibit-password #禁用
PermitRootLogin yes #允许root通过密码登录
[root@localhost opt]# service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]
[root@localhost opt]# ssh -V
OpenSSH_7.3p1,OpenSSL 0.9.8zg 11 Jun 2015

RPM包下载地址:链接:http://pan.baidu.com/s/1eR7438e 密码:ugii

本文参考以下blog,经过亲自测试整理。

http://blog.chinaunix.net/uid-6984-id-5120601.html

http://hxl2009.blog.51cto.com/779549/1035652

Centos 6.6 升级openSSH 远程访问版本(5.3升级7.0源码安装版)

Centos 6.6 升级openSSH 远程访问版本(5.3升级7.0源码安装版)

由于服务器Openssh 版本过低,存在不安全因素,所以最近想把服务器都进行升级:

查看当前系统版本为6.6,openssh为5.3版本,此版本启用默认是开启了root远程功能的,因此我能直接通过ROOT进行远程访问。


wKioL1l-69mBYJPjAAAVzAlrpGg462.png


话不多说,直接上传下载的OPENSSL7.0版本压缩包,需要的可以到http://www.openssh.com官网下载


wKiom1l-69rB-TfyAADFnzwn6sI093.png


上传后解压,tar zxf openssh-7.0p1.ta.gz,然后进cd openssh-7.01p1 目录。


wKioL1l-69ri5dexAAAfpFvDc9Y002.png


./configure --prefix=/usr --sysconfdir=/etc/ssh


wKioL1l-69vBU1kgAAAdjEb6wHU146.png


配置的时候报错了,mygod 系统还没安装GCC编译器。


wKiom1l-69uR9sXjAAAqtxb6Dhw823.png


那么我们先yum 安装吧,yum install -y gcc


wKioL1l-69zgnstwAABB4miKD3E682.png


安装完成后我们继续配置测试,又报错了,看下缺少什么东东


wKiom1l-69ySGgn9AAA8MqSFMaM376.png


好吧,继续补上, yum install zlib-devel

wKioL1l-69zSt7lBAAAs_FaOCvA785.png


yes,GO ON 继续配置


wKiom1l-693Q_8HnAAAtRX4he_o691.png


又报错了,看下还缺什么!!


wKiom1l-693Cio1ZAABCFYloYa0384.png


补上,yum install openssh-devel


wKioL1l-697zIjCgAAA7GeEUq6A232.png


yes,配置通过了。


wKioL1l-696iGKVLAABQjIWE6Mk540.png



接着,编译:make

wKiom1l-696giN0IAAA3ryLeJxE905.png


编译安装:make install


wKioL1l-69_DBYg_AABuaDS5Hgc517.png


成功了,有几个提示,不过不影响功能使用,可以正常启动,提示新版没提供这几项。


wKiom1l-69-inc2uAAAu34dYUCU864.png


重启服务:/etc/init.d/sshdrestart

wKioL1l-6-GRRduUAAA5v0wam18968.png


试下ROOT用户登陆:提示不成功。


wKioL1l-6-Dy_hJjAABgFnIm43Q744.png


使用普通用户登陆:成功了。


wKiom1l-6-CCQ4bbAABRk3ZFU1s320.png


因此默认OPENSSH 升级7.0默认是不允许ROOT登陆的(这样更安全拉)


wKioL1l-6-DBW_XMAAAwrwf5UkA727.png


如果需要开启可以修改配置文件选项, PERMITROOTLOGIN YES 把前面注释取掉。


wKiom1l-6-HiP6KMAAAxTCYQ8SQ209.png


再试下ROOT登陆成功(不建议开启ROOT远程访问,可以使用普通用户然后再进行SU 提权或使用sudo)。


wKioL1l-6-LTfUrHAAAmvMEmLbc166.png

CentOS 6.9 升级OpenSSH版本 关闭ssh服务后门

CentOS 6.9 升级OpenSSH版本 关闭ssh服务后门

最近用低版本的OpenSSH(5.9p1版本) 的漏洞给系统留了个后门,可以劫持root密码或者给root开启后门密码,  如果公司还在用CentOS6的系统,那肯定存在漏洞隐患 

建议升级OpenSSH, 升级OpenSSH的操作并不复杂 ,但如果是线上环境 ,那么就需要谨慎操作 

特别需要注意的是  如果是通过ssh远程连接服务器后进行的版本升级操作 ,万一升级失败了,则ssh就远程登录不上去了 当然 ,如果服务器安装了iDRAC远程管理卡就好说了,如果没有iDRAC远程管理卡,则需要提前开启telnet远程登录(允许root账号登录)或是到机房现场进行升级操作比较妥当

centos7默认的是OpenSSH_7.4p1版本,可以不用升级,只需升级centos6.9的openssh版本即可

OpenSSH_6.9 包括6.9在内和6.9之前的版本,都存在漏洞, 登录被影响主机查看OpenSSH版本号,如在影响范围内,则对OpenSSH进行版本升级或更新

查看版本

# 查看系统版本,最小化安装可能会没有centos-release的软件包,可以用下面的命令查看
[[email protected] ~]# rpm -q centos-release
centos-release-6-9.el6.12.3.x86_64
[[email protected] ~]# cat /etc/centos-release 
CentOS release 6.9 (Final)
[[email protected] ~]# cat /etc/issue
CentOS release 6.9 (Final)
Kernel \r on an \m

# 查看SSH版本 
[[email protected] ~]# ssh -V
OpenSSH_5.3p1,OpenSSL 1.0.1e-fips 11 Feb 2013
[[email protected] ~]# ssh -V
OpenSSH_5.3p1,OpenSSL 1.0.1e-fips 11 Feb 2013
[[email protected] ~]# openssl version -a
OpenSSL 1.0.1e-fips 11 Feb 2013
built on: Wed Mar 22 21:43:28 UTC 2017
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:  rdrand dynamic 

备份ssh目录

[[email protected] ~]# cp -rf /etc/ssh{,.bak}

安装telnet,避免ssh升级出现问题 ,导致无法远程管理

[[email protected] ~]# yum -y install telnet-server
[[email protected] ~]# vim /etc/xinetd.d/telnet
# default: on
# description: The telnet server serves telnet sessions; it uses #       unencrypted username/password pairs for authentication.
service telnet
{
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/sbin/in.telnetd
        log_on_failure  += USERID
        disable         = no    # 将默认的yes改为no,否则telnet启动后,23端口就会起不来
}

重启telnet服务

[[email protected] ~]# /etc/init.d/xinetd restart
停止 xinetd:                                              [确定]
正在启动 xinetd:                                          [确定]
# 查看服务是否开启
[[email protected] ~]# netstat -antup|grep 23
tcp        0      0 :::23                       :::*                        LISTEN      2293/xinetd       

如果是线上服务器,最好是添加防火墙策略,尽量不要关闭防火墙

[[email protected] ~]# iptables -I INPUT -p tcp --dport 23 -j ACCEPT
[[email protected] ~]# iptables -I INPUT -p udp --dport 23 -j ACCEPT
# 临时关闭SElinux
[[email protected] ~]# getenforce 
Enforcing
[[email protected] ~]# setenforce 0

虽然把23端口放行了,但是linux默认是不允许root用户以telnet的方式登录linux主机的,如果要用root用户登录,那么可用以下方法实现

# 修改securetty文件 增加pts配置 如果登录用户较多,需要更多的pts/* [[email protected] ~]# vim /etc/securetty # 或者直接删除或修改文件名,避开验证规则实现root用户远程登录 [[email protected] ~]# rm -f /etc/securetty 

测试远程登录root用户

[[email protected] ~]# hostname -I
192.168.94.11 
[[email protected] ~]# telnet 192.168.94.66
Trying 192.168.94.66...
Connected to 192.168.94.66.
Escape character is ^].
CentOS release 6.9 (Final)
Kernel 2.6.32-696.el6.x86_64 on an x86_64
damoWang.localdomain login: root
Password: 
Last login: Mon Jun  4 22:52:19 from 192.168.94.1
[[email protected] ~]# hostname -I
192.168.94.66
一般不建议直接用root用户远程通过telnet登陆系统,因为telnet在数据传输过程采用明文方式,如果,数据包被人截获,将会很容易获取root用户的密码
还是建议以普通用户通过telnet远程登陆,然后su到root,这样相对比较安全。如果非要用root用户远程连接,建议采用SSH
如上操作后,就可以使用root账号进行telnet登录服务器了 OpenSSH升级后还需禁止root用户进行telnet登录
 
安装高版本的OpenSSH的依赖包
[[email protected] ~]# yum -y install  gcc openssl-devel pam-devel rpm-build tcp_wrappers-devel

下载高版本的OpenSSH 

https://www.openssh.com/

进到官网看到今天刚好更新7.8版本的源码包, 就用最新版本的来最升级吧

[[email protected] src]# cd /usr/local/src/
[[email protected] src]# ll
总用量 1512
-rw-r--r--. 1 root root 1548026 8月  25 2018 openssh-7.8p1.tar.gz
[[email protected] src]# tar xf openssh-7.8p1.tar.gz 
[[email protected] src]# cd openssh-7.8p1
[[email protected] openssh-7.8p1]# ./configure --prefix=/usr  --sysconfdir=/etc/ssh  --with-pam  --with-zlib  --with-md5-passwords  --with-tcp-wrappers  && make -j 4 && make install

有提示,看看是否安装成功

/etc/ssh/ssh_config already exists,install will not overwrite
/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/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
[[email protected] openssh-7.8p1]# echo $?
0

修改配置文件,允许root登录

[[email protected] openssh-7.8p1]# sed -i /^#PermitRootLogin/s/#PermitRootLogin yes/PermitRootLogin yes/ /etc/ssh/sshd_config
[[email protected] openssh-7.8p1]# grep RootLogin /etc/ssh/sshd_config
PermitRootLogin yes

重启SSH服务

[[email protected] openssh-7.8p1]# service sshd restart
停止 sshd:                                                [确定]
正在启动 sshd:/etc/ssh/sshd_config line 81: Unsupported option GSSAPIAuthentication
/etc/ssh/sshd_config line 83: Unsupported option GSSAPICleanupCredentials
                                                           [确定]

报错解决方,只需把提示错误的行注释掉即可

再重启SSH服务

[[email protected] openssh-7.8p1]# service sshd restart
停止 sshd:                                                [确定]
正在启动 sshd:                                             [确定]
[[email protected] openssh-7.8p1]# service sshd status
openssh-daemon (pid  12918) 正在运行...

查看SSH服务版本

[[email protected] openssh-7.8p1]# ssh -V
OpenSSH_7.8p1,OpenSSL 1.0.1e-fips 11 Feb 2013

在升级SSH时你的SSH是不会因为升级或重启服务而断掉的

注意 :

OpenSSH升级后,一定要修改/etc/ssh/sshd_config的 PermitRootLogin no 改为 PermitRootLogin yes ,然后再重启OpenSSH服务
否则,再另开一个终端窗口,使用root用户ssh登录该机器就会失败了,因为此时ssh已经禁止root用户登录了

还有禁止DNS反向解析,修改端口号等细节需要注意

SSH可以连接,在线升级成功

[[email protected] ~]# ssh -p22 192.168.94.66
The authenticity of host 192.168.94.66 (192.168.94.66) cant be established.
ECDSA key fingerprint is SHA256:/r5E0VYms6owRZhRXVckaVAgrT5eytIEUO7+D80rfbU.
ECDSA key fingerprint is MD5:1a:0e:a2:82:a5:08:bc:ed:23:7b:f7:c3:47:f0:dd:3b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 192.168.94.66 (ECDSA) to the list of kNown hosts.
[email protected]192.168.94.66s password: 
Last login: Sat Aug 25 01:12:57 2018 from 192.168.94.66
[[email protected] ~]# hostname -I
192.168.94.66 

这是源码编译升级,如果主机使用update升级更新系统,那么OpenSSH的版本会回退默认版本

顺便说一下,之前用CentOS7更换OpenSSH版本,有坑,systemctl restart sshd 启动服务超时,服务启动失败,但是重启服务那短暂的时间,还是可以连接上ssh的 

原因很多,根据自身实际情况来解决 

升级成功后不能使用systemctl start sshd启动程序 : 

1、编译安装时未启用某些功能支持导致使用旧配置文件无法启动sshd,如GSSAPIAuthentication、UsePrivilegeSeparation
2、配置文件权限错误,导致无法启动,如:ssh_host_rsa_key、ssh_host_ecdsa_key、ssh_host_ed25519_key

升级成功后输入密码无法登录系统 :

1、未对配置文件进行修改,openssh7.5默认配置不允许使用root登录系统
2、pam配置文件错误或丢失
3、配置文件中未启用pam选项:UsePAM

如果实在运行不了ssh服务,那么好,就利用那重启服务短暂的空隙,只需要让服务无限重启,保持ssh的进程即可,这个方法并不能解决实际问题,不过在没找到问题原因之前,可以暂时使用

[[email protected] ~]# cat /etc/centos-release
CentOS Linux release 7.5.1804 (Core) 
[[email protected] ~]# vim /opt/restart-ssh.sh
#/bin/bash
ps -ef|grep "systemctl restart sshd"|awk {print $2}|xargs kill -9
nohup systemctl restart sshd &
# 服务启动超时,杀掉ssh进程,再重启ssh服务
# 加到计划任务中 10秒执行一次

Centos 6.x Openssh 升级 7.7p1 版本

Centos 6.x Openssh 升级 7.7p1 版本

#OpenSSH 升级

目前在一家金融公司上班,正好赶上金融公司各种暴雷,本人心里慌慌的。

然后就是金融公司要进行的最低的三级等保评测,各种修改系统安全,密码强度、WAF、防火墙等各种。

评测公司对我司的网站进行了漏扫,检测出来Openssh 版本过低,并且伴有两个高危漏洞,兄弟俩关系不错。


##安装xinetd telnet-server

为防止Openssh 升级失败,所以需要把telnet启动起来

之前测试的时候,telnet登陆,不能使用root,普通用户没问题,懒得解决了,直接配置了普通用户的visudo.

[root@centos6 ~]# yum install xinted telnet-server -y
[root@centos6 ~]# chkconfig telnet on
[root@centos6 ~]# vim /etc/xinetd.d/telnet
#修改一下`/etc/xinetd.d/telnet` 配置文件,把最后一样的disable 的值修改为no
# default: on
# description: The telnet server serves telnet sessions; it uses \
#       unencrypted username/password pairs for authentication.
service telnet
{
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/sbin/in.telnetd
        log_on_failure  += USERID
        disable         = no
}

[root@centos6 ~]# /etc/init.d/xinetd start

搞定,配置普通用户的visudo这里就不详解了。

算了,还是说下吧

[root@centos6 ~]# useradd test
[root@centos6 ~]# passwd test
#这里输入两次密码

[root@centos6 ~]# visudo
#打开后,在最后添加下面的内容,然后保存退出就可以了

test        ALL=(ALL)       NOPASSWD: ALL

这样就搞定了

##开始升级

生产系统是:CentOS 6.5, 自带的SSH版本太低,安全检查报有漏洞,需要升级版本。

[root@centos6 ~]# rpm -qa | grep openssh
openssh-clients-5.3p1-122.el6.x86_64
openssh-5.3p1-122.el6.x86_64
openssh-server-5.3p1-122.el6.x86_64

本文使用最新的openssh-7.7p1的版本进行源码升级安装。

升级OpenSSH不难,难的是在升级前的基础环境安装

基础包安装

yum安装最简单

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

然后。。。完事儿了,基础环境安装完了。真的很难

下面去openssh官网下载最新的源码包, 点击我下载OpenSSH,官方的哦

下面开始升级

首先删除老版本的Openssh。

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

然后编译安装:
由于配置和编译的过程太长,就不复制了,直接贴上命令:

[root@centos6 soft]# ls
openssh-7.7p1.tar.gz
[root@centos6 soft]# tar xf openssh-7.7p1.tar.gz 
[root@centos6 soft]# cd openssh-7.7p1
[root@centos6 openssh-7.7p1]# 
[root@centos6 openssh-7.7p1]# ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-ssl --with-zlib --with-md5-passwords --with-pam
内容太多,忽略
              Host: x86_64-pc-linux-gnu
          Compiler: gcc
    Compiler flags: -g -O2 -pipe -Wall -Wpointer-arith -Wuninitialized -Wsign-compare -Wformat-security -Wno-pointer-sign -fno-strict-aliasing -mfunction-re
turn=thunk -mindirect-branch=thunk -D_FORTIFY_SOURCE=2 -ftrapv -fno-builtin-memset -fstack-protector-all -fPIE  Preprocessor flags:  -D_XOPEN_SOURCE=600 -D_BSD_SOURCE -D_DEFAULT_SOURCE
      Linker flags:  -Wl,-z,retpolineplt -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack -fstack-protector-all -pie 
         Libraries: -lcrypto -lrt -ldl -lutil -lz  -lcrypt -lresolv
         +for sshd:  -lpam

PAM is enabled. You may need to install a PAM control file 
for sshd, otherwise password authentication may fail. 
Example PAM control files can be found in the contrib/ 
subdirectory

[root@centos6 openssh-7.7p1]# make && make install

#安装的时候这里遇到一个坑,需要make install两次,可能是我卸载的顺序有问题把,否则提示找不到sshd命令。请注意
#执行之后等结果,看看报不报错,反正我的不报错。

安装完之后,别着急去别的目录,还在当前安装目录,需要拷贝几个配置文件,拷贝之前一定要备份

执行过程如下:

# 先拷贝配置文件
[root@centos6 openssh-7.7p1]# cp -a /etc/ssh /etc/ssh_bak
[root@centos6 openssh-7.7p1]# cp ssh_config /etc/ssh/
cp: overwrite `/etc/ssh/ssh_config''? y
[root@centos6 openssh-7.7p1]# cp sshd_config /etc/ssh/
cp: overwrite `/etc/ssh/sshd_config''? y
[root@centos6 openssh-7.7p1]# cp moduli /etc/ssh/
cp: overwrite `/etc/ssh/moduli''? y

#这里是拷贝sshd的启停脚本
[root@centos6 openssh-7.7p1]# cp contrib/redhat/sshd.init /etc/init.d/sshd
cp: overwrite `/etc/init.d/sshd''? y

#直接start启动ssh,千万不能restart,使用restart会造成连不上,需要登录控制台启动
#再设置开机自启
[root@centos6 openssh-7.7p1]# /etc/init.d/sshd start
Starting sshd:                                             [  OK  ]
[root@centos6 openssh-7.7p1]# chkconfig sshd on

#查看,安装后的果实;
[root@centos6 openssh-7.7p1]# ssh -V
OpenSSH_7.7p1, OpenSSL 1.0.1e-fips 11 Feb 2013

没问题,搞定了。

最后的小提示:

开启root用户远程登录 。 此步骤不是必须。建议是关闭该选项,开启会有安全隐患。
vi /etc/ssh/sshd_config PermitRootLogin yes

开启SSH服务
千万不能restart。使用restart会造成连不上,需要登录控制台启动。
service sshd start

关于CentOS6.5下面OpenSSH低版本升级至7.3centos6.9升级openssh的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于CentOS 5.8升级OpenSSH,OpenSSL到最新版、Centos 6.6 升级openSSH 远程访问版本(5.3升级7.0源码安装版)、CentOS 6.9 升级OpenSSH版本 关闭ssh服务后门、Centos 6.x Openssh 升级 7.7p1 版本的相关信息,请在本站寻找。

本文标签: