Harbor默认Redis与Notary组件弱口令漏洞分析与修复指南
一、 背景
某资源池控制面和运行面生产环境部署的harbor被漏扫出弱口令需要进行整改,主要涉及 default、server、signer用户存在弱口令。
二、 分析与处理
首先需求确认这三个用户是harbor那个组件使用,最好确认的是default这个用户,它是redis的默认用户,server、signer这两个在harbor.yml配置文件的引用外部组件中有定义,涉及到notary这个组件。
上面用户都确认完了,哪后面就是涉及密码更改,调整密码这个就需要谨慎对待了,因为harbor中各个组件也有相互通过用户密码链接的情况,因为我们harbor中的组件并没有开启外部组件,都是默认安装的,所以还得看下harbor的github对应版本代码中怎么定义默认安装这块密码设置,翻了半天总是找到了,在habor代码这个路径下找到了对应sql,如下图:
官方这个密码设置的真是简单呀!那个signer用户密码跟这个一样,默认安装就是这样,我查了下我们安装的harbor根本没有用的notaryserver和notarysigner,所以直接可以直接到harbor的pg库里面修改对应的用户密码即可,修改密码命令如下:
alter user server with password ‘your passwd’;
alter signer server with password ‘your passwd’;
更改完之后也不用担心habor重启后密码会回退,因为habror在安装的时候会把数据持久化到本地盘。
另外一种情况就是部署habor用到了notary组件,它会持久化一个文件到你本地安装目录下,如下:
harbor在安装的代码文件中会定义一个docker-compose模板文件,上图就是我截取的一部分,它会通过common/config/notary目录下定义的server和signer的env文件获取对应变量。对应的env命名如下:
找到这两个变量文件,修改对应的密码,重启harbor,让程序重新读取变量即可。
接下来开始处理redis弱口令问题,harbor涉及链接到redis的组件有core、jobservice、registry这三个组件,配置文件路径都在common/config目录下,修改顺序如下:
1、修改core的redis密码
core/env文件,123123就是你要设置的redis密码
2、修改 jobservice配置文件
3、修改registry配置文件
4、添加redis密码
先将harbor组件redis容器的redis.conf文件导到本地,修改如下配置:
然后再编辑docker-compase.yml文件,将本地redis.conf文件映射到容器里,如下:
重启
做完以上这些重启harbor即可,重启harbor后其中redis容器运行是正常的,其中状态栏显示(unhealthy),这是因为redis有个健康检查脚本,里面使用的命令是不使用密码进行检测的,可以忽略这个状态,然后测试harbor推拉镜像验证是否正常就行。