CentOS7 升级ssh,修复漏洞,基于远端

userMsin4个月前Linux212

升级说明:

  • 1、升级OpenSSH后,原有公钥失效,信任关系需要重新配置;

  • 2、升级过程需要停止sshd服务,会导致ssh和sftp无法使用;

  • 3、升级需要关闭防火墙服务;确保管理机器可访问被管理机器的23端口

  • 4、升级需要关闭selinux服务;

  • 5、升级前需要开启telnet,防止升级失败,系统无法登录,对应的防火墙需要开启23端口,安装需要telnet相关包(推荐通过系统ISO安装)

  • 6、升级过程中需要刷新lib库:ldconfig -v;

  • 7、升级顺序:顺序是zlib库-> openssl -> openssh;

  • 8、升级需要gcc、make、perl、zlib、zlib-devel、pam、pam-devel依赖包;

  • 9、本文档是在服务器网络正常状态下进行升级,不确保万无一失,根据主机的重要性自行进行评估

  • 10、本文档的命令都是在root用户上执行,sudo用户自行加上sudo

一、升级前准备

注意:

  • 确保yum源可用并处于正常状态,yum clean all && yum makecache

  • 确保有密码登录用户并且有sudo权限,用于telnet登录

1.安装telnet服务

安装telnet 服务,用于卸载ssh后的操作
1
2
3
4
5
6
7
8
9
10
11
yum install -y telnet-server xinetd   #安装telnet-server xinetd 服务
systemctl start telnet.socket         #启动telnet
systemctl start  xinetd               #启动xinetd
cp /etc/securetty /etc/securetty.bak  #备份安全文件
echo 'pts/0' >> /etc/securetty        #允许telnet访问最高权限控制台
echo 'pts/1' >> /etc/securetty        #允许telnet访问最高权限控制台
echo "pts/2" >> /etc/securetty
systemctl restart telnet.socket
systemctl enable xinetd.service      #配置开机启动,防止操作过程中机器重启后无法连接
systemctl enable telnet.socket
systemctl restart telnet.socket


2.创建用于telnet登录的用户(如果已有,此步骤跳过)

创建用户
1
2
3
4
useradd upsshd                                        #创建用户
passwd upsshd                                         #修改密码 echo IO5QBPtBxztnh1dM1seC== |passwd --stdin upsshd #不建议这样echo执行
echo 'upsshd ALL=(ALL)        ALL' >> /etc/sudoers    #给与用户sudo权限 ,如果有root密码,此步可以跳过
systemctl restart telnet.socket                       #重启telnet服务

3.安装基础组件

安装基础组件
1
2
yum install openssl-devel gcc-c++ pam-devel pam gcc make perl zlib zlib-devel          #安装所需组件
rpm -qa | egrep "gcc|make|perl|zlib|zlib-devel|pam|pam-devel"                          #查看组件是否都已安装

二、升级ssh服务

注意:

  • 本次教程升级的是目前最新版:openssh-8.3p1.tar.gz

  • 确保telnet服务正常并且能够登录,以下操作开始采用telnet登录进行操作

1.卸载旧服务

卸载旧服务
1
2
3
4
5
6
7
ssh -V                            #查看当前ssh版本
rpm -qa |grep openssh             #列出当前已安装的openssh软件包
systemctl stop sshd               #停止ssh服务
cp -r /etc/ssh /etc/ssh.old       #备份原有ssh配置
rpm -e --nodeps openssh-clients   #卸载上条命令列出的软件包
rpm -e --nodeps openssh
rpm -e --nodeps openssh-server

2.编译安装新服务

编译安装新版本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
install  -v -m700 -d /var/lib/sshd                                                   #重置目录权限
chown    -v root:sys /var/lib/sshd                                                   #重置目录权限
userdel ssh && groupdel ssh                                                          #删除原有sshd用户和组
groupadd -g 74 sshd                                                                  #重新创建sshd用户和组
useradd  -c 'sshd PrivSep' \
         -d /var/lib/sshd  \
         -g sshd           \
         -s /bin/false     \
         -u 74 sshd
wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.3p1.tar.gz
tar -xf openssh-8.3p1.tar.gz
cd openssh-8.3p1/
./configure --prefix=/usr                     \                                       #设置选项sshd  
            --sysconfdir=/etc/ssh             \
            --with-md5-passwords              \
            --with-privsep-path=/var/lib/sshd \
            --with-zlib                       \
            --with-pam
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                                                                           #安装
ssh -V                                                                                 #验证版本

3.额外安装步骤

额外安装步骤
1
2
3
4
5
6
install -v -m755    contrib/ssh-copy-id /usr/bin     &&          #安装额外组件和文档
install -v -m644    contrib/ssh-copy-id.1 \
                    /usr/share/man/man1              &&
install -v -m755 -d /usr/share/doc/openssh-8.3p1     &&
install -v -m644    INSTALL LICENCE OVERVIEW README* \
                    /usr/share/doc/openssh-8.3p1

4.恢复sshd配置

恢复ssh配置
1
2
mv /etc/ssh/sshd_config /etc/ssh/sshd_config.new.bak              #备份配置
cp /etc/ssh.old/sshd_config /etc/ssh/sshd_config                  #恢复原配置

5.sshd服务配置

ssh服务配置
1
2
3
4
5
cp -p contrib/redhat/sshd.init /etc/init.d/sshd        #配置sshd开机启动
chmod +x /etc/init.d/sshd
chkconfig --add sshd
chkconfig sshd on
systemctl restart sshd

三、还原telnet配置

注意:

  • 操作这之前需确认sshd服务能正常登录,和开机启动正常

  • telnet服务采用的是明文传输,及其不安全,确认ssh服务正常后需尽快关闭

1.还原telnet

还原还telnet
1
2
3
4
5
6
7
8
systemctl stop telnet.socket
systemctl stop xinetd
systemctl disable telnet.socket
systemctl disable xinetd
yum remove telnet-server
yum remove xinetd
userdel upsshd
groupdel upsshd


返回列表

没有更早的文章了...

没有最新的文章了...