CentOS下升级默认的OpenSSH(OpenSSH_5.3p1到OpenSSH_7.6p1)
Posted kevingrace
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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版本的操作记录
以上是关于CentOS下升级默认的OpenSSH(OpenSSH_5.3p1到OpenSSH_7.6p1)的主要内容,如果未能解决你的问题,请参考以下文章
Centos6/Centos5下openssh升级到openssh-7.5p1
centos7 升级openssh到openssh-8.0p1版本