GitLab进行跨版本升级

GitLab进行跨版本升级

本文只讲述基于Omnibus 包安装的GitLab

升级背景:

1.由于GitLab仓库发现漏洞(API未授权枚举漏洞)需要及时修复,避免造成代码的丢失及泄露

漏洞定义: API未授权枚举漏洞

允许攻击者未经授权的通过Gitlab的API枚举项目,用户或者其他资源

利用方式:

攻击者可以通过未授权访问GitLab API来实现以下目标

枚举项目:

攻击者可以通过Gitlab的API枚举到系统中所有公开或者半公开的项目,即使这些项目对于普通用户或未登录用户是不可见的

枚举用户:

攻击者可以通过API获取系统中用户的详细信息(如用户名,邮箱,用户ID等),这些信息可用于后续的社交工程攻击或者账户劫持

访问私有信息:

在某些情况下,攻击者可能能够获取到属于特定项目或者用户的敏感信息,甚至可以获取到文件结构或代码片段

修复示例:

本文采用升级gitlab版本来修复漏洞。因为gitlab官方会定期发行新版本用于修复漏洞

此升级为跨版本升级(14.10.x-ee --- 17.5.0-ee)操作系统:centos 7.9

注意:Gitlab升级不可直接进行跨版本升级,需要参考官方的升级路径规划

https://gitlab-com.gitlab.io/support/toolbox/upgrade-path/?current=16.11.10&distro=centos

个人建议,将自己的gitlab版本升级到此大版本的最新版本在进行下一个大版本的升级

升级步骤

进行备份:

此为简单的备份过程

Shell
gitlab-backup create
备份文件默认放在 /var/opt/gitlab/backups
备份文件不会备份核心文件
核心文件路径为/etc/gitlab
将这个目录下的核心文件手动进行备份

扩展备份:

扩展备份需要备份git存储库,PostgreSQL数据库等数据。这个备份所需时间会因为数据的大小而增长

此处没有使用此备份操作。详情查看官方文档

https://docs.gitlab.com/ee/administration/backup_restore/backup_gitlab.html

在gitlab官方中有明确标注:版本在14及以上支持自动备份

查看当前GitLab版本:

Shell
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

开始升级

1.升级过程严格按照官方给出的升级路径来升级(升级路径上面有说到)

2.之所以不进行跨版本升级,是因为可能会造成数据的丢失

3.手动备份操作只进行了一次,其实GitLab在进行升级的时候会自动进行备份。手动备份是防止自动备份失败后续升级失败可以进行回滚

4.升级只需要按照顺序执行升级规划中的版本进行升级即可

5.升级过程中可能会出现PostgreSQL 报错的问题,此时需要将PostgreSQL 进行升级才可以进行下一个版本的升级,本次升级没有遇到过次问题。此处不讲解升级过程

Gitlab修改域名

gitlab修改域名需要在gitlab的nginx配置文件中修改:/var/opt/gitlab/nginx/conf/gitlab-http.conf

但是这样子修改成功后确实访问域名会改变,但是仓库的域名没有改变。所以需要先修改gitlab的配置文件

/etc/gitlab/gitlab.ra external_url 'https://xxxx.com' 然后重新配置,执行gitlab-ctl reconfigure

注意:修改核心配置,执行上述命令后再修改nginx配置文件,因为重新配置后nginx配置文件会被覆盖,在配置之前修改后配置后还要再次修改

posted @ 2024-11-14 09:26  To-one  阅读(177)  评论(0)    收藏  举报