CentOS下升级默认的OpenSSH(OpenSSH_5.3p1到OpenSSH_7.6p1)

近期对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进行版本升级或更新。

下面分别介绍下Centos6和Centos7下针对OpenSSH版本升级的操作记录

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

查看操作系统版本
[[email protected] ~]# cat /etc/redhat-release       #或者执行"cat /etc/issue"
CentOS release 6.9 (Final)

查看默认的OpenSSH版本
[[email protected] ~]# ssh -V
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013

备份ssh目录(此步非常重要,一定要记得提前做备份)
[[email protected] ~]# cp -rf /etc/ssh /etc/ssh.bak

安装telnet,提前部署telnet远程登录环境(root用户登录),避免ssh升级出现问题,导致无法远程管理!
[[email protected] ~]# yum 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默认是不允许使用root账号登录,在此修改为允许root账号登录!
}

重启telnet服务
[[email protected] ~]# /etc/init.d/xinetd start
Starting xinetd:                                           [  OK  ]
[[email protected] ~]# /etc/init.d/xinetd restart
Stopping xinetd:                                           [  OK  ]
Starting xinetd:                                           [  OK  ]

telnet默认用于远程登录的端口是23(21是默认的ftp端口、22是默认的ssh端口、23是默认的telnet端口)
[[email protected] ~]# 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端口。
[[email protected] ~]# /etc/init.d/iptables stop
[[email protected] ~]# vim /etc/sysconfig/selinux
.......
SELINUX=disabled

[[email protected] ~]# setenforce 0
setenforce: SELinux is disabled

=====================================================================================================================
默认情况下,linux不允许root用户以telnet方式登录linux主机,若要允许root用户登录,可采取以下3种方法中的任何一种方法:

1)第一种方法:修改securetty文件
增加pts配置。如果登录用户较多,需要更多的pts/*。
[[email protected] ~]# vim /etc/securetty
......
pts/0
pts/1
pts/2

2)第二种方法:移除securetty文件
验证规则设置在/etc/security文件中,该文件定义root用户只能在tty1-tty6的终端上记录,删除该文件或者将其改名即可避开验证规则实现root用户远程登录。
[[email protected] ~]# rm -rf /etc/securetty

3)第三种方法:修改login文件
Linux中对于远程登录的限制体现在/etc/pam.d/login 文件中,如果把限制的内容注销掉,那么限制将不起作用。
[[email protected] ~]# vim /etc/pam.d/login
.......
#account    required     pam_nologin.so            //注释掉改行内容

以上三种方法中的任意一种设置后,在客户端使用telnet远程登录目标服务器(使用root用户)都是可以的!
192.168.10.206是telnet目标服务器,192.168.10.202是客户端机器。
[[email protected] ~]# 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
升级前需要先安装几个组件
[[email protected] ~]# yum install -y gcc openssl-devel pam-devel rpm-build

本案例升级openssh选择的是openssh-7.6p1.tar.gz
百度下载地址是:https://pan.baidu.com/s/1C5B5ZZh_PRBNicvdzTxS2g
提取密码:dssh

[[email protected] ~]# cd /usr/local/src/
[[email protected] src]# ll openssh-7.6p1.tar.gz
-rw-rw-r-- 1 root root 1489788 Aug 14  2018 openssh-7.6p1.tar.gz
[[email protected] src]# tar -zvxf openssh-7.6p1.tar.gz
[[email protected] src]# cd openssh-7.6p1
[[email protected] openssh-7.6p1]# ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib --with-md5-passwords --with-tcp-wrappers
[[email protected] ~]# 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登录
[[email protected] openssh-7.6p1]# sed -i ‘/^#PermitRootLogin/s/#PermitRootLogin yes/PermitRootLogin yes/‘ /etc/ssh/sshd_config
[[email protected] openssh-7.6p1]# cat /etc/ssh/sshd_config|grep RootLogin
PermitRootLogin yes

重启OpenSSH
[[email protected] 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文件中以上行数内容注释下即可
[[email protected] openssh-7.6p1]# sed -i ‘/^GSSAPICleanupCredentials/s/GSSAPICleanupCredentials yes/#GSSAPICleanupCredentials yes/‘ /etc/ssh/sshd_config
[[email protected] openssh-7.6p1]# sed -i ‘/^GSSAPIAuthentication/s/GSSAPIAuthentication yes/#GSSAPIAuthentication yes/‘ /etc/ssh/sshd_config
[[email protected] openssh-7.6p1]# sed -i ‘/^GSSAPIAuthentication/s/GSSAPIAuthentication no/#GSSAPIAuthentication no/‘ /etc/ssh/sshd_config

再次重启OpenSSH服务,则不会出现错误了
[[email protected] openssh-7.6p1]# service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]

升级后版本
[[email protected] 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登录
[[email protected] ~]# sed -i ‘/^#PermitRootLogin/s/#PermitRootLogin yes/PermitRootLogin no/‘ /etc/ssh/sshd_config

可以不操作,禁止dns解析
[[email protected] ~]# sed -i ‘/^#UseDNS yes/s/#UseDNS yes/UseDNS no/‘ /etc/ssh/sshd_config

可以不操作默认是22,修改ssh端口至6022
[[email protected] ~]# echo "Port 6022" >> /etc/ssh/sshd_config

注意:
- 在升级SSH时你的SSH是不会因为升级或重启服务而断掉的。
- 但是记得OpenSSH升级后,要修改/etc/ssh/sshd_config,将"PermitRootLogin no" 改为 "/etc/ssh/sshd_config",然后再重启OpenSSH服务,
  否则,再另开一个终端窗口,使用root用户ssh登录该机器就会失败了,因为此时ssh已经禁止root用户登录了!

2)更新后ssh有如下提示,但不影响使用:
[[email protected] ~]# ssh -p22 192.168.10.206
/etc/ssh/ssh_config line 50: Unsupported option "gssapiauthentication"                                           

解决措施:
注释/etc/ssh/ssh_config的gssapiauthentication内容
----------------------------------------------------------------------------------------------------

三、Centos7.5升级默认OpenSSH版本的操作记录

原文地址:https://www.cnblogs.com/kevingrace/p/9478614.html

时间: 2024-10-11 16:25:09

CentOS下升级默认的OpenSSH(OpenSSH_5.3p1到OpenSSH_7.6p1)的相关文章

Centos下升级Python

Centos下升级Python 一.查看本机Pyhton版本 本机Centos6.5 预带Pyhton版本为2.6.6 # python --version >>Python 2.6.6 二.下载欲升级最新Python安装包 可以去官网找最新安装包 https://www.python.org/downloads/ 三.编译安装Python wget   tar -zxvf  Python-2.7.10.tgz cd Python-2.7.10 ./configure make &&a

CentOS下设置默认JDK

1. 设置默认JDK 执行命令: [[email protected] ~]# alternatives --config java 选择默认jdk,“+”所在的为默认的jdk 2. 配置JAVA环境设置 [[email protected] ~]# vim /etc/profile文件末尾添加下面内容: 保存退出后source /etc/profie至此部署完成. java -verion 查看版本 文章转自:CentOS下设置默认JDK 原文地址:https://www.cnblogs.co

Linux(Centos)——下升级python3.3

CentOS下的Python版本一般都比较低,很多应用都需要升级python来完成.我装的centOS的默认的python版本是V2.4.3,但运行node.js需要的版本是2.5以上. 1.下载python3.3安装包:wget http://www.python.org/ftp/python/3.3.0/Python-3.3.0.tgz 2.解压安装包:tar -zxvf Python-3.3.0.tgz 3.进入解压后目录:cd Python-3.3.0 4.创建安装目录:mkdir /u

centos下升级mysql后遇到的小问题

记录今天遇到的一个小问题, 写一个app访问接口涉及到通过存储过程反馈多个结果集,但是反回多个结果集的存储过程,调用之后只能反回一个了,而且奇怪的是,即使直接在mysql上同时执行两条查询语句,第一条查询的数据也不会出现,只会出现第二条数据,  开始找原因了-->,最开始怀疑是centos系统问题(接口操作的数据库都是直接连接的服务器,本地没有创建),因为这代码都是我以前写好了,在windows服务器上跑过的,是没问题的.网上找找,没发现有人这么样说.....    然后尝试下直接操作本地数据库

centOs下升级mysql

前言:今天在centOS上将mysql版本由5.1升级到5.7的时候出现了各种问题,不过经过一步步的调查解决了问题,下面就记录一下过程,其中经历了很多次的卸载和删除,在这次记录的过程中,我就按照最后成功的一次顺序来记录,对于其中可能出现的一些错误会做特殊的说明. 1.下载Linux的5.7版本,主要需要两个文件 MySQL-server-5.7.4_m14-1.el6.x86_64.rpm MySQL-client-5.7.4_m14-1.el6.x86_64.rpm 2.备份数据库文件 mys

centOS下升级python版本,详细步骤

1.可利用linux自带下载工具wget下载,如下所示:(  笔者安装的是最小centos系统,所以使用编译命令前,必须安装wget服务,读者如果安装的是界面centos系统,或者使用过编译工具则可跳过安装wget,直接进行下边的编译步骤 ) wget http://www.python.org/ftp/python/3.3.0/Python-3.3.0.tgz 2.下载完成后到下载目录下,解压 tar -xzvf Python-3.3.0.tgz 3.进入解压缩后的文件夹 cd Python-

CentOS下mysql默认安装位置

如果采用RPM包安装,安装路径应在/usr/share/mysql目录下 mysqldump文件位置:/usr/bin/mysqldump mysqli配置文件: /etc/my.cnf或/usr/share/mysql/my.cnf mysql数据目录在/var/lib/mysql目录下 如果采用源代码安装,一般默认安装在/usr/local/mysql目录下

centos下apache默认安装路径

apache:如果采用RPM包安装,安装路径应在 /etc/httpd目录下apache配置文件:/etc/httpd/conf/httpd.confApache模块路径:/usr/sbin/apachectlweb目录:/var/www/html如果采用源代码安装,一般默认安装在/usr/local/apache2目录下

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

在使用git pull.git push.git clone的时候,或者在使用jenkins发版的时候,可能会报类似如下的错误: error: The requested URL returned error: 401 Unauthorized while accessing https://git.oschina.net/zemo/demo.git/info/refs fatal: HTTP request failed 这个一般是由于服务器本身自带的git版本过低造成的: [[email p