0
点赞
收藏
分享

微信扫一扫

Centos7 升级 openSSH从6.6升级到7.9p1的详细步骤

产品喵dandan米娜 2022-01-13 阅读 73

1升级前准备工作

1.1升级原因

SF-2019-00163

OpenSSH(OpenBSD Secure Shell)是OpenBSD计划组所维护的一套用于安全访问远程计算机的连接工具。由于使用不存在的用户名和存在的用户名将返回不同的信息,该特性将能够被用来进行用户名枚举,并可能使用结果进行更进一步攻击。

影响以下版本:7.7。

升级Openssh到最新版本。

1.2 提前准备工作

(1)通过root用户配置visudo,使非root用户添加到可以使用sudo命令,这里以ringwater示例:

## Allow root to run any commands anywhere

root    ALL=(ALL)       ALL

ringwater       ALL=(ALL)       ALL

(2)配置telnet登录,防止ssh服务失效后可以继续进行维护

(3)防火墙要放通ssh和telnet端口,如果策略无法配置,可停用防火墙来实现.

systemctl stop firewalld.service   

(4)设置DNS vi /etc/resolv.conf添加dns

 nameserver 114.114.114.114

(5)更新yum库为阿里云,防止yum安装包失败

1. 禁用 yum插件 fastestmirror

1)修改插件的配置文件

cp /etc/yum/pluginconf.d/fastestmirror.conf /etc/yum/pluginconf.d/fastestmirror.conf.bak 

vi /etc/yum/pluginconf.d/fastestmirror.conf  

enabled = 0   //由1改为0,禁用该插件

2)修改yum的配置文件

cp /etc/yum.conf /etc/yum.conf.bak

vi /etc/yum.conf

plugins=0    //1改为0,不使用插件

2. 获取阿里云 repo

cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

3.清理原来的缓存,重新缓存 

yum clean all

yum makecache

完工。

2安装包准备

openssh-7.9p1.tar.gz

openssl-1.0.2u.tar.gz

zlib-1.2.11.tar.gz

3安装并启用Telnet

   先检查CentOS7.0是否已经安装以下两个安装包:telnet-serverxinetd。命令如下:

 rpm -qa telnet-server

 rpm -qa xinetd

    如果没有安装,则先安装。安装命令:

3.1 安装telnet

yum list |grep telnet

yum -y install telnet-server.x86_64

yum -y install telnet.x86_64

 3.2 安装xinetd 

这里安装xinetd

yum list |grep xinetd

yum -y install xinetd.x86_64

安装完成后,将xinetd服务加入开机自启动:

systemctl enable xinetd.service

将telnet服务加入开机自启动:

systemctl enable telnet.socket

3.3 重启服务

最后,启动以上两个服务即可:

由于telnet服务也是由xinetd守护的,所以安装完telnet-server,要启动telnet服务就必须重新启动xinetd 。

systemctl start telnet.socket

systemctl start xinetd

(或service xinetd start

1.4 配置系统开机自动启动Telnet

/etc/xinetd.d目录

在Linux系统中有一个超级服务程序inetd,大部分的网络服务都是由它启动的,如chargen、echo、finger、talk、telnet、wu-ftpd等…,在旧版本它的设置是在/etc/inetd.conf中配置的。

在新版本,它就改成了一个xinetd.d目录。

在xinetd.d目录中,每一个服务都有一个相应的配置文件,我们以telnet为例,说明一下各个配置行的含义:vi /etc/xinetd.d/telnet

service telnet

{

socket_type=stream

wait=no

user=root

server=/usr/sbin/in.telnetd

log_on_failure+=USERID

disable=no

}

第一行,说明该配置用来设置telnet服务。

第二行,说明Socket连接类型是stream,也就是TCP

第三行,是指不等待到启动完成

第四行,是指以root用户启动服务进程

第五行,是指服务进程是/usr/sbin/in.telnetd

第六行,是用于做一些出错日志

第七行,是指禁止远方telnet,如果需要开放则将该配置改为:disable=no

修改了xinetd的配置,需要重启xinetd才能够生效,执行如下命令:

killall -HUP xinetd

注:

1)若还不能telnet,请检查/etc/hosts.deny,将ALL:ALL注释掉。

2)若使用虚拟机,请注意VPC的网卡设置是否正确。

3.4 允许root直接登录telnet

默认情况下,linux不允许root用户以telnet方式登录linux主机,若要允许root用户登录,可采取以下方法

验证规则设置在/etc/security文件中,该文件定义root用户只能在tty1-tty6的终端上记录,删除该文件或者将其改名即可避开验证规则实现root用户远程登录。

mv /etc/securetty /etc/securetty.bak

4、安装相关依赖包

查询依赖包是否全部安装:

rpm -qa | egrep "gcc|make|perl|zlib|zlib-devel|pam|pam-devel"

根据查询的情况进行安装相关依赖包

yum -y install gcc make perl zlib zlib-devel pam pam-devel

4.1 停止ssh服务

systemctl stop sshd

备份ssh配置文件

cp -r /etc/ssh /etc/ssh.old  

4.2 查看系统原有openssh包

rpm -qa | grep openssh

根据上面查询出的结果,卸载系统里原有Openssh(一般有三个包,全部卸载)

rpm -e --nodeps  xxxxxxxxxx

卸载完成后执行rpm -qa | grep openssh,确保没有回显

4.3 编译安装zlib

解压刚才上传到服务器的zlib-1.2.11.tar.gz,并进行编译安装

tar -zxvf zlib-1.2.11.tar.gz

cd zlib-1.2.11

./configure --prefix=/usr/local/zlib

make

make install 

验证zlib安装是否成功,要包含includelibshare三个目录。

ll /usr/local/zlib

新建并编辑配置文件:

vi /etc/ld.so.conf.d/zlib.conf

加入如下内容后保存退出

/usr/local/zlib/lib

刷新库文件,加载刚才编译安装的zlib生成的库文件

ldconfig -v

 4.4 编译安装openssl

解压安装openssl包,并进行编译安装

tar -zxvf openssl-1.0.2u.tar.gz

cd openssl-1.0.2u

./config shared zlib

make      (时间比较长,切勿打断)

make test    (时间比较长,切勿打断)

make install     (时间比较长,切勿打断)

重命名现有文件目录

mv /usr/bin/openssl /usr/bin/openssl.bak

创建ssl相关软连接

ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl

ln -s /usr/local/ssl/include/openssl /usr/include/openssl

编辑配置文件

vi /etc/ld.so.conf.d/ssl.conf

加入如下内容后保存退出

/usr/local/ssl/lib

刷新库文件,加载刚才编译安装的ssl生成的库文件

ldconfig -v

查看openssl版本

openssl version -a

4.5 升级openssh,编译安装

tar -zxvf openssh-7.9p1.tar.gz

cd openssh-7.9p1

./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-privsep-path=/var/lib/sshd --with-ssl-dir=/usr/local/ssl

make

修改文件权限

chmod 600 /etc/ssh/ssh_host_rsa_key

chmod 600 /etc/ssh/ssh_host_ecdsa_key

chmod 600 /etc/ssh/ssh_host_ed25519_key

make install

  

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

echo "PasswordAuthentication yes"   >> /etc/ssh/sshd_config

echo "PermitRootLogin yes" >> /etc/ssh/sshd_config

ssh服务必须开机自启动,因此要进行一些设置

cp -p contrib/redhat/sshd.init /etc/init.d/sshd

chmod +x /etc/init.d/sshd

chkconfig --add sshd

chkconfig sshd on

systemctl restart sshd

验证ssh版本

ssh –V

ssh登录测试,可以成功登录。

openssh版本升级完成!

4.6 收尾工作:

关闭开机启动:

 systemctl disable xinetd.service

将telnet服务关闭开机启动:

systemctl disable telnet.socket

关闭服务

systemctl stop telnet.socket

systemctl stop xinetd

还原securetty

  mv /etc/securetty.bak /etc/securetty

4.7 如果升级失败,进行回退操作:

# yum -y install openssh-clients

# yum -y install openssh-server

# yum -y install openssh 

举报

相关推荐

0 条评论