近期对IDC机房服务器做了一次安全漏洞扫描,漏扫结果显示服务器的OpenSSH版本太低(CentOS6默认是OpenSSH_5.3p1),存在漏洞隐患,安全部门建议升级到OpenSSH_7.6p1。升级OpenSSH的操作并不复杂,但由于是线上环境,故需要谨慎操作。特别需要注意的是:如果是通过ssh远程连接服务器后进行的版本升级操作,万一升级失败了,则ssh就远程登录不上去了。当然,如果服务器安装了iDRAC远程管理卡就好说了,如果没有iDRAC远程管理卡,则需要提前开启telnet远程登录(允许root账号登录)或是到机房现场进行升级操作比较妥当!

一、漏洞描述
漏洞描述:OpenSSH 6.9及之前版本的sshd中的auth2-chall.c文件中的lsquokbdint_next_devicersquo函数存在安全漏洞,该漏洞源于程序没有正确限制处理单链接中的keyboard-interactive设备。
影响范围:OpenSSHthrough 6.9
涉及资产:xxxxxx  
漏洞影响:远程攻击者可借助ssh -oKbdInteractiveDevices选项中较长且重复的列表利用该漏洞实施暴力破解攻击,或造成拒绝服务(CPU消耗)。
漏洞加固建议:登录被影响主机查看OPENSSH版本号,如在影响范围内,则对OPENSSH进行版本升级或更新。

centos7默认的是OpenSSH_7.4p1版本,可以不用升级,只需升级centos6.9的openssh版本即可!
openssh升级到7.6版本的一键执行脚本的下载地址:https://pan.baidu.com/s/1-D0gZsNc5f6QFyLnMSNXbA
提取密码:9ma2

二、Centos6.9升级默认OpenSSH版本的操作记录

查看操作系统版本
[root@Centos6 ~]# cat /etc/redhat-release #或者执行"cat /etc/issue"
CentOS release 6.9 (Final) 查看默认的OpenSSH版本
[root@Centos6 ~]# ssh -V
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013 openssl默认版本如下,这个是关系到下面编译安装openssh的成功与否。
[root@Centos6 ~]# openssl version -a
OpenSSL 1.0.1e-fips 11 Feb 2013 备份ssh目录(此步非常重要,一定要记得提前做备份)
[root@Centos6 ~]# cp -rf /etc/ssh /etc/ssh.bak 安装telnet,记得提前部署telnet远程登录环境(root用户登录),避免ssh升级出现问题,导致无法远程管理!
[root@Centos6 ~]# yum install telnet-server
[root@Centos6 ~]# 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服务功能,否则telnet启动后,23端口就会起不来!
} 重启telnet服务
[root@Centos6 ~]# /etc/init.d/xinetd start
Starting xinetd: [ OK ]
[root@Centos6 ~]# /etc/init.d/xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ] telnet默认用于远程登录的端口是23(21是默认的ftp端口、22是默认的ssh端口、23是默认的telnet端口)
[root@Centos6 ~]# lsof -i:23
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
xinetd 2489 root 5u IPv6 22131982 0t0 TCP *:telnet (LISTEN) 关闭iptables防火墙和selinux。如果开启了iptables防火墙,则需要开启23端口(即"iptables -I INPUT -p tcp --dport 23 -j ACCEPT" 和"iptables -I INPUT -p udp --dport 23 -j ACCEPT" )。
[root@Centos6 ~]# /etc/init.d/iptables stop
[root@Centos6 ~]# vim /etc/sysconfig/selinux
.......
SELINUX=disabled [root@Centos6 ~]# setenforce 0
setenforce: SELinux is disabled =====================================================================================================================
默认情况下,linux不允许root用户以telnet方式登录linux主机,若要允许root用户登录,可采取以下两种方法中的任何一种方法: 1)第一种方法:修改securetty文件
增加pts配置。如果登录用户较多,需要更多的pts/*。
[root@Centos6 ~]# vim /etc/securetty
......
pts/0
pts/1
pts/2 2)第二种方法:移除securetty文件
验证规则设置在/etc/security文件中,该文件定义root用户只能在tty1-tty6的终端上记录,删除该文件或者将其改名即可避开验证规则实现root用户远程登录。
[root@Centos6 ~]# rm -rf /etc/securetty 以上两种方法中的任意一种设置后,在客户端使用telnet远程登录目标服务器(使用root用户)都是可以的!
192.168.10.206是telnet目标服务器,192.168.10.202是客户端机器。
[root@client ~]# telnet 192.168.10.206 23
Trying 192.168.10.206...
Connected to 192.168.10.206.
Escape character is '^]'.
CentOS release 6.9 (Final)
Kernel 2.6.32-696.el6.x86_64 on an x86_64
Centos6.9-OS login: root
Password:
Last login: Tue Aug 14 14:28:02 from 192.168.10.202 ------------------------温馨提示-------------------------
一般不建议直接用root用户远程通过telnet登陆系统,因为telnet在数据传输过程采用明文方式,如果,数据包被人截获,将会很容易获取root用户的登陆口令;
还是建议以普通用户通过telnet远程登陆,然后su到root,这样相对比较安全。如果非要用root用户远程连接,建议采用SSH.
如上操作后,就可以使用root账号进行telnet登录服务器了!OpenSSH升级后建议再修改回还原设置(即禁止root用户进行telnet登录)。 ========================================================================================================================== 安装高版本的OpenSSH
升级前需要先安装几个组件
[root@Centos6 ~]# yum install -y gcc openssl-devel pam-devel rpm-build tcp_wrappers-devel 本案例升级openssh选择的是openssh-7.6p1.tar.gz
百度云盘下载地址是:https://pan.baidu.com/s/1C5B5ZZh_PRBNicvdzTxS2g
提取密码:dssh [root@Centos6 ~]# cd /usr/local/src/
[root@Centos6 src]# ll openssh-7.6p1.tar.gz
-rw-rw-r-- 1 root root 1489788 Aug 14 2018 openssh-7.6p1.tar.gz
[root@Centos6 src]# tar -zvxf openssh-7.6p1.tar.gz
[root@Centos6 src]# cd openssh-7.6p1
[root@Centos6 openssh-7.6p1]# ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib --with-md5-passwords --with-tcp-wrappers
[root@Centos6 ~]# make && 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 修改配置文件,允许root登录
[root@Centos6 openssh-7.6p1]# sed -i '/^#PermitRootLogin/s/#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config
[root@Centos6 openssh-7.6p1]# cat /etc/ssh/sshd_config|grep RootLogin
PermitRootLogin yes 重启OpenSSH
[root@Centos6 openssh-7.6p1]# service sshd restart
Stopping sshd: [ OK ]
Starting sshd: /etc/ssh/sshd_config line 81: Unsupported option GSSAPIAuthentication
/etc/ssh/sshd_config line 83: Unsupported option GSSAPICleanupCredentials
[ OK ]
如上重启OpenSSH出现的告警错误,解决办法如下:
将/etc/ssh/sshd_config文件中以上行数内容注释下即可
[root@Centos6 openssh-7.6p1]# sed -i '/^GSSAPICleanupCredentials/s/GSSAPICleanupCredentials yes/#GSSAPICleanupCredentials yes/' /etc/ssh/sshd_config
[root@Centos6 openssh-7.6p1]# sed -i '/^GSSAPIAuthentication/s/GSSAPIAuthentication yes/#GSSAPIAuthentication yes/' /etc/ssh/sshd_config
[root@Centos6 openssh-7.6p1]# sed -i '/^GSSAPIAuthentication/s/GSSAPIAuthentication no/#GSSAPIAuthentication no/' /etc/ssh/sshd_config 再次重启OpenSSH服务,则不会出现错误了
[root@Centos6 openssh-7.6p1]# service sshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ] 升级后版本
[root@Centos6 openssh-7.6p1]# ssh -V
OpenSSH_7.6p1, OpenSSL 1.0.1e-fips 11 Feb 2013 ----------------------------------------------------------------------------------------------------
温馨提示:
1)由于之前将原ssh目录修改名字了("mv /etc/ssh /etc/ssh_bak"),修改后,需要立即需要修改下配置: 修改配置文件,禁止root登录
[root@Centos6 ~]# sed -i '/^#PermitRootLogin/s/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config 可以不操作,禁止dns解析
[root@Centos6 ~]# sed -i '/^#UseDNS yes/s/#UseDNS yes/UseDNS no/' /etc/ssh/sshd_config 可以不操作默认是22,修改ssh端口至6022
[root@Centos6 ~]# echo "Port 6022" >> /etc/ssh/sshd_config 注意:
- 在升级SSH时你的SSH是不会因为升级或重启服务而断掉的。
- 但是记得OpenSSH升级后,要修改/etc/ssh/sshd_config,将"PermitRootLogin no" 改为 "PermitRootLogin yes",然后再重启OpenSSH服务,
否则,再另开一个终端窗口,使用root用户ssh登录该机器就会失败了,因为此时ssh已经禁止root用户登录了! 2)更新后ssh有如下提示,但不影响使用:
[root@Centos6 ~]# ssh -p22 192.168.10.206
/etc/ssh/ssh_config line 50: Unsupported option "gssapiauthentication" 解决措施:
注释/etc/ssh/ssh_config的gssapiauthentication内容
----------------------------------------------------------------------------------------------------

重要提示:
1)在升级完openssh版本后,如果你进行了系统update或者升级用到ssh包的相关软件包,会导致ssh的版本回退到原来的版本。
2)实际使用中发现ansible和jenkins使用时有些问题,网上查询了下,需要在/etc/ssh/sshd_config文件中最后增加两行(第一行是ansible支持加入,第二行是jenkins支持加入):

Ciphers aes128-cbc,aes192-cbc,aes256-cbc,aes128-ctr,aes192-ctr,aes256-ctr,3des-cbc,arcfour128,arcfour256,arcfour,blowfish-cbc,cast128-cbc
KexAlgorithms diffie-hellman-group1-sha1,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1

因为升级了openssh太新导致通信时加密算法出现问题,加上后重启就可以了。

==================================================================
如上升级centos6的openssh版本到7.6之后,在另一台服务器上使用java调用sftp服务失败!

解决办法:
1)在java服务器的sshd_config文件末尾添加下面内容(即添加验证方式),并重启sshd服务。
[root@tomcat ~]# cat /etc/ssh/sshd_config
......
KexAlgorithms diffie-hellman-group1-sha1,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1 [root@tomcat ~]# /etc/init.d/sshd restart 2)升级jsch新版本(如jsch-0.1.53.jar )

===============================================
顺便提一下在centos7下升级openssh之后的一个坑

上面的升级操作同样可以在centos7系统下进行,升级前,centos7默认版本
[root@centos7 ~]# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017 在centos7服务器上执行上面的一键升级脚本,执行后检查ssh版本:
[root@centos7 ~]# ssh -V
OpenSSH_7.6p1, OpenSSL 1.0.2k-fips 26 Jan 2017 此时重启ssh服务(systemctl restart sshd),会一直卡着,使用"systemctl status sshd"查看,会提示几个文件权限过大
修改几个文件权限
[root@centos7 ~]# chmod 600 /etc/ssh/ssh_host_* 接着再次重启sshd服务,会提示不识别sshd_config文件中第94行、第123行文件。
注释掉这两行内容即可 最后重启ssh服务
[root@centos7 ~]# systemctl restart sshd
会发现重启命令一直在卡着!!!! 发现的坑的情况:
1)发现centos7升级到openssh7.6之后,重启sshd服务会一直在卡着,卡着过程中,在远程使用ssh是可以正常登录本机。
2)但是卡一段时间后(大概2分钟左右),sshd服务就会因为启动超时而关闭,届时在远程使用ssh重新登录本机就会失败!
3)但只要在远程使用ssh成功登录到本机后的终端窗口,不管centos7机器的ssh服务起来与否,该终端窗口始终保持连接!
4)所以,尽管升级后,重启ssh服务是一直卡的状态,但只要是在启动中,远程ssh新连接就不会断开。
5)故要保证升级后,远程使用ssh登录centos7本机不受影响,无感知,就需要升级后的centos7机器的ssh服务一直在启动中。 需要一个保持sshd服务持续启动的脚本
[root@centos7 ~]# cat /opt/ssh-restart.sh
#/bin/bash
ps -ef|grep "systemctl restart sshd"|awk '{print $2}'|xargs kill -9
nohup systemctl restart sshd & 每20秒执行一次脚本
[root@centos7 ~]# crontab -l
* * * * * /bin/bash -x /opt/ssh-restart.sh >/dev/null 2>&1
* * * * * sleep 20;/bin/bash -x /opt/ssh-restart.sh >/dev/null 2>&1
* * * * * sleep 40;/bin/bash -x /opt/ssh-restart.sh >/dev/null 2>&1 始终保证一个重启sshd服务的进程在
[root@centos7 ~]# ps -ef|grep "systemctl restart sshd"
root 18368 1 0 17:18 ? 00:00:00 systemctl restart sshd
root 18478 18460 0 17:18 pts/4 00:00:00 grep --color=auto systemctl restart sshd 以上是临时想到的解决办法,究其原因和最终解决办法,还需要进一步分析(后续更新)~

=============补充一下:centos7开启telnet远程登录的方法==============

[root@Centos7 ~]# yum install -y telnet-server xinetd 

[root@Centos7 ~]# systemctl enable xinetd.service
[root@Centos7 ~]# systemctl enable telnet.socket
[root@Centos7 ~]# systemctl start telnet.socket
[root@Centos7 ~]# systemctl start xinetd 默认情况下,centos7系统是不允许root用户telnet远程登录的。如果要使用root用户直接登录,有下面两种方法:
1)第一种方法:修改securetty文件
增加pts配置。如果登录用户较多,需要更多的pts/*。
[root@Centos6 ~]# vim /etc/securetty
......
pts/0
pts/1
pts/2 2)第二种方法:移除securetty文件
验证规则设置在/etc/security文件中,该文件定义root用户只能在tty1-tty6的终端上记录,删除该文件或者将其改名即可避开验证规则实现root用户远程登录。
[root@Centos6 ~]# rm -rf /etc/securetty 然后在客户端使用telnet登录
[root@client ~]# telnet 192.168.10.220 23
Trying 192.168.10.220...
Connected to 192.168.10.220.
Escape character is '^]'. Kernel 3.10.0-862.3.2.el7.x86_64 on an x86_64
Centos7 login: root
Password:
Last login: Wed Aug 15 01:10:15 from ::ffff:192.168.10.39
[root@Centos7 ~]#

CentOS6.9下升级默认的OpenSSH操作记录(升级到OpenSSH_7.6p1)的更多相关文章

  1. Centos6.8下编译安装LAMP的操作记录梳理

    之前用的最多的web框架是LNMP,偶尔也会用到LAMP.接下来简单说下LAMP环境的部署记录,这里选择源码安装的方式: LAMP相关安装包下载地址:https://pan.baidu.com/s/1 ...

  2. centos6下升级git版本的操作记录

    编译go_ethereum的时候出现了错误 然后发现是自己的git没有升级成功  因为编译需要高版本的git版本  所以会编译不成功  之后执行 root@uatjenkins01 ~]# git - ...

  3. CentOS6.4下使用默认的文档查看器打开PDF文档乱码的解决方案

     最近在CentOS6.4下使用其默认的文档查看器打开PDF文档时出现乱码的方块,有两种方法可以解决.    方法一:修改/etc/fonts/conf.d/49-sansserif.conf文件,如 ...

  4. centos下升级git版本的操作记录

    在使用git pull.git push.git clone的时候,或者在使用jenkins发版的时候,可能会报类似如下的错误: error: The requested URL returned e ...

  5. 转:centos下升级git版本的操作记录

    https://www.cnblogs.com/kevingrace/p/8252517.html 在使用git pull.git push.git clone的时候,或者在使用jenkins发版的时 ...

  6. centos 6x系统下源码安装mysql操作记录

    在运维工作中经常部署各种运维环境,涉及mysql数据库的安装也是时常需要的.mysql数据库安装可以选择yum在线安装,但是这种安装的mysql一般是系统自带的,版本方面可能跟需求不太匹配.可以通过源 ...

  7. Centos6 系统下源码方式安装Mysql 记录

    在运维工作中经常部署各种运维环境,涉及mysql数据库的安装也是时常需要的.mysql数据库安装可以选择yum在线安装,但是这种安装的mysql一般是系统自带的,版本方面可能跟需求不太匹配. #### ...

  8. Linux下修改系统编码的操作记录

    Linux系统安装后,发现中文显示乱码.因为系统编码为en_US.UTF-8,应改为支持中文的编码(即zh_CN.UTF-8)操作记录如下:1)检查linux的系统编码检查linux的系统编码,确定系 ...

  9. Centos下安装破解Jira7的操作记录

    Jira是一个集项目计划.任务分配.需求管理.错误跟踪于一体的工具,可以作为一个bug管理系统,可以将在测试过程中所发现的bug录入.分配给开发人员.前面介绍了Confluence在Centos下的安 ...

随机推荐

  1. ARM有几条memory barrier 的指令?分别有什么区别?

    从ARMv7指令集开始,ARM提供3条内存屏障指令. (1)数据存储屏障( Data Memory Barrier,DMB) 数据存储器隔离.DMB指令保证:仅当所有在它前面的存储器访问操作都执行完毕 ...

  2. 用Python实现数据结构之二叉搜索树

    二叉搜索树 二叉搜索树是一种特殊的二叉树,它的特点是: 对于任意一个节点p,存储在p的左子树的中的所有节点中的值都小于p中的值 对于任意一个节点p,存储在p的右子树的中的所有节点中的值都大于p中的值 ...

  3. Dos命令讲解

    目录 一.什么是DOS 二.启动DOS的多种方法 三.DOS的内部命令与外部命令 四.系统环境变量讲解 增加Path环境变量路径 常见的系统环境变量 五.常用的运行命令 六.DOS使用技巧 设置CMD ...

  4. JRE、JDK概述

    JRE(java Runtime Environment java运行环境) 包括java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等, 如果想要运行一个开 ...

  5. Activiti工作流与BPMN2.0规范

    本章内容根据BPMN2.0规范的分类划分为以下部分: 1.启动与结束事件(event) 2.顺序流(Sequence Flow) 3.任务(Task) 4.网关(Gateway) 5.子流程(Subp ...

  6. <20190104>关掉一些鸡肋的Win10功能

    讨厌鬼001 # - windows defender -    本身没什么卵用, 却一直占着位置, 而且不断提示更新. 必须关闭它 . 在"运行" 中,  输入 "gp ...

  7. mysql删除数据左右空格

    select trim(字段) from 表 删除左右空格 select ltrim(字段) from 表 删除左空格 select rtrim(字段) from 表 删除右空格

  8. centos7下安装docker(3.2创建镜像build)

    通过Dockerfile创建镜像 注:这个Dockerfile一开始真的不知道是在哪来的,还以为是在官网下载下来得(当然网上也有很多dockerfile的模板,参考:https://hub.docke ...

  9. 转://oracle 11gR2 oracle restart 单机使用asm存储 主机名发生更改处理过程

    oracle 11gR2 oracle restart 单机使用asm存储 主机名发生更改并且主机重启后处理过程: 以下为解决方案: 1. Remove Oracle Restart configur ...

  10. (一) 天猫精灵接入Home Assistant- hass对接天猫精灵

    1如何利用论坛的认证服务器对接天猫精灵 说起天猫精灵的接入,最早是由c1pher(25989406)大神通过开发自定义技能接入,后面qebabe大神进行了改进,可以直接通过HASS API读取hass ...