Jumpserver开源堡垒机的功能优化
LDAP同步配置和MFA多因子认证
JumpServer 是广受欢迎的开源堡垒机,是符合 4A 规范的专业运维安全审计系统。
JumpServer 使用 Python 开发,配备了业界领先的 Web Terminal 方案,交互界面美观、用户体验好。
JumpServer 采纳分布式架构,支持多机房跨区域部署,支持横向扩展,无资产数量及并发限制。
不是其他业内排行牛逼的堡垒机用不起,而是开源Jumpserver更有性价比。
于是在领导的要求下我们自然也进行部署使用了,白嫖主打的就是一个字“真香”,但是在体验的过程中我们发现它也有一些不完美的地方。
比如我们MFA多因子认证这个功能,它默认是禁用的,而且他全局配置的优先级居然是高于单个用户个性化设置的,如果在全局开启的话,又不能针对单个特殊用户进行取消操作,头疼的很,这个操作属实让我有点迷,以下是官方文档给的说明。
创建新用户默认是禁用的。
但是我使用的场景是
(1)通过LDAP同步的账户默认应该是开启MFA功能;
(2)新建用户界面默认应该是勾选开启MFA功能;
(3)部分特殊的VIP用户则是需要自定义关闭MFA功能。
既然是开源那必然是可以修改的吧????于是我就想办法将这几百个通过LDAP同步过来的账户修改为默认开启MFA功能,对于我这么懒的人来说要我一个一个手动修改那岂不是得要我半条命。经过好长一段时间的折腾,发现的有两个优化配置的方法,以下分别进行介绍。原文链接
为了能快速解决我的困扰,我第一时间便是到交流群请教了大佬,按大佬的意思在jumpserver应该是有个MFA的设置属性"mfa_level",参数为1代表开启,0则是关闭。这给了我很大的启发。
于是我在用户属性映射加了一个字段测试,如下
streetAddress为域控的用户属性(至于域控的属性用哪个随便选看你心情)
设置了属性映射之后再同步用户,同步完成后重新导入账户即可,此时生成的用户默认MFA的功能便是开启状态了(即成功赋值使得mfa_level=1)。
顺便提一下,LDAP同步的用户可以把所属组的信息也同步过来,只需要在属性映射的地方指定即可:
“groups”:”MemberOf”
------MemberOf即是对应域控的安全组。
对于第一种方法,虽然是可以解决我的问题,但这个还是得先到域控给这个属性进行赋值,我还是觉得有点麻烦,我就想能不能在我同步的时候直接在服务器把jumpserver的这个属性mfa_level的值设置为1呢?
开始也只是猜测既然是LDAP同步,那应该会有个ldap相关的文件或者方法吧,然后盲猜应该会有个调用创建账户的方法吧?
功夫不负有心人,虽然俺不是开发,但通过一顿乱猜加上验证还真的被我找到了这个源码文件,是藏在jms_core这个容器里面呢!!
所以我们先进入容器
docker exec -it jms_core /bin/bash
修改参数
vim /opt/jumpserver/apps/users/models/user.py
在User类定义了MFA的默认值
将default的值修改为1即可,之后创建的新用户和同步的LDAP账户都会是默认开启MFA了。
办法总比困难多,作为一个不合格的网工,平时总喜欢倒腾一些乱七八糟的玩意,但有时候一个人实在是太闷了,也没得人分享,就像是当初在为了考华为认证的时候遇到问题有人一起讨论感觉挺美好的,所以希望在这里能够遇到志同道合的你,可以一起学习一起交流。
By the way 贴一个关于LDAP同步的配置步骤,如果你们公司也想当白嫖怪,有什么部署的问题欢迎一起交流哦。
好了
今天的分享就到这里了
下一次不知道什么时候见了
主打的就是一个随心所欲
不过倒是想研究一下nextcloud的域账号认证,且自助通过邮箱账户重置域账户密码
下篇文章见吧!
原文链接