Harbor禁用swagger.json(Swagger未授权访问漏洞)

背景

VMwareHarbor镜像仓库默认使用了swagger ui,也因此暴露了swagger.json文件。在安全要求高的环境下会触发“Swagger未授权访问漏洞”,虽然暴露的信息不是特别关键。但仍然是信息泄露,需要禁用swagger.json的访问。

参考文章

【Harbor官方仓库issue解决:how can I remove swagger UI #18591】

解决

解决思路

  • 方法一:禁用swagger功能。
    • 难度 :高
    • 说明:涉及修改harbor容器及源码,本运维不会。修改后涉及重启容器,可能需要重新启停harbor应用。
  • 方法二:启用防火墙。
    • 难度: 中
    • 说明:通过firewalld 启用rich rule,屏蔽安全扫描(安全设备的IP),仅让K8S或其它业务服务器有权限访问harbor地址。但如果安全扫描是通过服务器上的agent进行,则此方法无效。比较耗时的是统计所有业务IP、调整策略,工作量稍多。此方法不用重启harbor应用,但防火墙白名单内的IP仍然能获取到泄露信息。
    • 参考命令:
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=17x.xxx.xxx.x/32 accept'
sudo firewall-cmd --reload
  • 方法三:删除swagger.json文件。
    • 难度:低
    • 说明 :直接人为造成404,没有防火墙策略的情况下任何人访问不到swagger.json文件,就不存在信息泄露。不用重启harbor,简单的docker命令即可完成。

解决

选择上述方法三,同时也是harbor官方issue提供的方法。
【Harbor官方仓库issue解决:how can I remove swagger UI #18591】
参考命令:

[sysma@ymt ~]$ sudo docker ps #查看状态
[sysma@ymt ~]$ sudo docker commit harbor-portal goharbor/harbor-portal:v2.8.2_keepSwagger.json #备份容器
[sysma@ymt ~]$ sudo docker images #查看备份好的容器镜像
[sysma@ymt ~]$ sudo docker exec -it harbor-portal /bin/sh #使用普通权限登录容器
sh-5.0$ ls -l /usr/share/nginx/html/swagger.json                                                                                                                                                                                                                             
-rw-r--r-- 1 root root 250406 2023-06-02 11:36 /usr/share/nginx/html/swagger.json
sh-5.0$ mv /usr/share/nginx/html/swagger.json /
mv: bad '/usr/share/nginx/html/swagger.json': Permission denied #普通用户无权执行mv命令
sh-5.0$ exit
exit
[sysma@ymt ~]$ sudo docker exec -uroot -it harbor-portal /bin/sh #使用root权限登录容器
sh-5.0\# mv /usr/share/nginx/html/swagger.json / #将swagger.json移动到/目录。                                                                                                                                                                                                                             
sh-5.0\# history 
    1  mv /usr/share/nginx/html/swagger.json /
    2  history 
sh-5.0\# exit #退出容器
[sysma@ymt ~]$

在这里插入图片描述
或者可以直接使用官方提供的命令,再减少几个步骤,直接不登陆容器,远程容器执行删除命令:
(记得先备份容器,再删除swagger.json文件)

docker exec -ti -u root harbor-portal rm  /usr/share/nginx/html/swagger.json

验证结果

删除前:可访问json内容

在这里插入图片描述

删除后:人为404成功,没有json文件能被访问。

在这里插入图片描述

结束。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值