CentOS   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了CentOS 6.9 升级OpenSSH版本 关闭ssh服务后门大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

最近用低版本的OpenSSH(5.9p1版本) 的漏洞给系统留了个后门 , 可以劫持root密码或者给root开启后门密码 ,  如果公司还在用CentOS6的系统 , 那肯定存在漏洞隐患  建议升级OpenSSH , 升级OpenSSH的操作并不复杂 ,但如果是线上环境 ,那么就需要谨慎操作  特别需要注意的是  如果是通过ssh远程连接服务器后进行的版本升级操作 ,万一升级失败了,则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版本 
[@L_502_3@ ~]# 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 

备份@H_403_138@ssh目录

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

安装telnet,避免@H_403_138@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
@H_874_336@ 一般不建议直接用root用户远程通过telnet登陆系统,因为telnet在数据传输过程采用明文方式,如果,数据包被人截获,将会很容易获取root用户的密码
还是建议以普通用户通过telnet远程登陆,然后@H_403_138@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  && @H_598_116@make -j 4 && @H_598_116@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用户@H_403_138@ssh登录该机器就会失败了,因为此时@H_403_138@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.9 升级OpenSSH版本 关闭ssh服务后门全部内容,希望文章能够帮你解决CentOS 6.9 升级OpenSSH版本 关闭ssh服务后门所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。