背景:

GitLab 存在命令注入漏洞,该漏洞源于未经授权的用户可能使用以下命令在服务器上执行任意代码 项目导入功能。以下产品版本受到影响:14.10.5 之前的 14.0、15.0.4 之前的 15.0 和 15.1.1 之前的 15.1 开始的所有版本。

因服务器处于内网环境,使用RPM包进行手动升级


1. 升级前准备

1.1 备份

  1. 创建备份文件:
$ gitlab-rake gitlab:backup:create
会在/var/opt/gitlab/backups目录下生成备份文件-tar包

gitlab 从main 打tag gitlab ce_git


gitlab 从main 打tag gitlab ce_解决方法_02

2. 最后提示gitlab.rb gitlab-secrets.json包含敏感数据,需手动备份;

/etc/gitlab     #手动备份两个文件
gitlab.rb
gitlab-secrets.json

1.2 查看gitlab版本;

rpm -qa gitlab-ce
cat /$opt/gitlab/embedded/service/gitlab-rails/VERSION

或登录gitlab右上角help查看

gitlab 从main 打tag gitlab ce_linux_03

1.3 下载

1.官方提供版本升级顺序,跨大版本升级可能会出现意外错误。

https://docs.gitlab.com/ee/update/#linux-packages-omnibus-gitlab

gitlab 从main 打tag gitlab ce_linux_04

  1. 下载
    下载地址:https://packages.gitlab.com/gitlab/gitlab-ce 注意发行版本,我这里是el/7
  2. gitlab 从main 打tag gitlab ce_linux_05


2. 安装

  • 整体安装命令流程,我这里升级版本从14.0.0 -> 14.3.6 -> 14.9.5 ->14.10.5
$ rpm -qa gitlab-ce                   #查看本地安装版本
$ rpm -evh gitlab-ce-14.0.0-xxx       #卸载gitlab
$ rpm -ivh gitlab-ce-14.3.6-xxx.rpm   #安装新版本gitlab
$ gitlab-ctl reconfigure              #重编译
$ gitlab-ctl start                    #启动
$ rpm -qa gitlab-ce                   #验证是否升级成功
$ ·登录前端页面,查看仓库代码是否正常
$ ·验证成功后升级下一个版本;同样的流程:
$ gitlab-ctl stop                     #关闭
$ rpm -evh gitlab-ce-14.3.6-xxx       #卸载gitlab
$ rpm -ivh gitlab-ce-14.9.5-xxx.rpm   #安装新版本gitlab
$ gitlab-ctl reconfigure              #重编译
$ gitlab-ctl start                    #启动
$ rpm -qa gitlab-ce                   #验证是否升级成功

gitlab 从main 打tag gitlab ce_安全_06


gitlab 从main 打tag gitlab ce_gitlab 从main 打tag_07

3. 安装过程截图及问题记录

3.1 依赖错误:

  • rpm -ivh gitlab-ce-14.3.6-xxx.rpm报错;
  • 解决方法命令后加 --nodeps --force

rpm -ivh *.rpm --nodeps --force 命令解释:
-i :安装
-U :升级软件,若未软件尚未安装,则安装软件
-v :查看安装过程
-h :显示安装进度
-qa 查看所有已安装的软件包
–force :强制安装
–nodeps :不考虑相依属性的关系

gitlab 从main 打tag gitlab ce_linux_08

  • gitlab-ctl reconfigure
  • gitlab-ctl start 验证

3.2 500错误:

  • 第一次升级至14.3.6,可访问登录页,登录后报500
  • gitlab 从main 打tag gitlab ce_linux_09

  • 查看gitlab日志:
    tail -200f /var/log/gitlab/gitlab-rails/production.log
  • gitlab 从main 打tag gitlab ce_gitlab 从main 打tag_10

  • -解决方法:升级时可能跳过了数据库架构升级步骤,运行gitlab-rake db:migrate:status 检查数据库服务。可看到其中有服务down了
  • gitlab 从main 打tag gitlab ce_linux_11

  • 可尝试gitlab-ctl reconfigure 重编译。我这里尝试没有解决。
  • 使用命令 gitlab-rake db:migrate
  • 再次查看gitlab-rake db:migrate:status 正常
  • gitlab 从main 打tag gitlab ce_git_12

3.3 502错误:

  • 访问页面时直接报502错误
  • 解决方法:
$ systemctl stop gitlab-runsvdir.service
$ gitlab-ctl reconfigure
$ gitlab-ctl start gitlab-runsvdir.service
$ gitlab-ctl status
  • 遇到500或502错误可多尝试重启服务,一般情况是服务超时,登录后可在管理员页面-设置-偏好设置-Gitaly超时 中设置超时时间。最多57s。

3.4 rpm -Uvh命令错误

  • 第二次升级14.9.5版本,尝试使用 rpm -Uvh 命令直接升级软件包。升级编译失败。