一、运维堡垒机功能需求
服务器运维,对于互联网公司,是一个常态化,刚需的场景,主要使用人员有运维、DBA、开发、测试,这些人希望能便捷进行服务运维,关注操作体验;从安全或公司管理层面,希望能做好权限控制和安全审计,关注风险。
所以开发出一款易用、易管理、安全性高的的堡垒机,是互联网公司的普遍需求,个人用过商用堡垒机、开源堡垒机,目前公司使用的堡垒机效果比较好,特别感谢之前负责堡垒机开发的同学,下面给大家分享堡垒机使用经验。
二、堡垒机选择(开源VS商用)
比如我们之前公司使用市面上比较成熟的某堡垒机品牌,使用过程中整体顺利,但是最大的问题当自动化能力糟糕,没办法跟运维系统结合,比如和资产CMDB联动、比如堡垒机工单系统对接自动执行,自助操作等,都无法实现。
所以互联网公司,如果有能力,建议在开源堡垒机基础上二次开发,下面就介绍我们基于jumpserver上二次开发的堡垒机。
三、堡垒机架构和设计
在Jumpserver的基础上增加了基于TOTP的双因素认证、Windows图形界面访问审计、自动化同步CMDB主机、文件导入导出、自动修改密码等功能。
主要使用了以下开源软件:jumpserver、xrdp、vnc-server、rdesktop、recordmydesktop、proftpd、ansible、nginx、mysql等。
1、Jumpserver堡垒机:主体系统
2、Xrdp、vnc-server、rdesktop、recordmydesktop:用于提供远程桌面服务、录屏(新版jumpserver已经有支持windows)
3、SFTP服务器:安装proftpd服务,提供文件上传下载功能。
4、Ansible:批量推送、批量改密等。
5、Google Authenticator:用于提供谷歌二次动态口令认证服务。
四、堡垒机主要功能详细介绍
1、资源创建和初始化
第一步:服务器初始化,创建堡垒机使用的安全用户
第二步:数据同步到CMDB
第三步、堡垒机定期从CMDB读取数据,创建各类账号(如运维账号、程序用户、日志用户等,基于ssh公钥免密),这样堡垒机就接管了用户。
2、用户权限申请
使用用户邮箱作为账户申请,申请完成后,会将用户的web登录密码、密钥文件、密钥密码、谷歌动态口令导入URL链接一并发送给用户。
3、用户权限分配
针对Linux服务器:使用Jumpserver默认的管理功能,设定用户组、主机组、用户账号三元组进行控制。
Windows跳板机:分配用户可以访问的Windows服务器IP。
4、用户使用
linux服务器:使用ssh密钥文件和密码登录。
Windows服务器:使用web密码登录后,选择需要远程访问的服务器,使用Windows账号密码登录。
5、命令控制
一些高危命令,比如rm -rf / 禁止使用。
6、文件导出控制
对于文件的导出,进行严格控制,禁止SZ命令,此外Windows跳板机,不允许数据粘贴出来。
需要导出文件的,通过访问内网SFTP系统,将数据上传到特定目录后,会自动生成一次性URL链接给用户邮箱,用户在办公网通过访问这个链接就可以下载文件。
7、用户自助管理
堡垒机忘记密码管理可以自助重置。
Google Authenticator 相关的安卓和iOS APP,由于经常出现手机更换问题,提供了自助生成URL链接的功能,方便用户使用。
8、密码管理功能
在我们的设计模式中,有一个sudo权限的安全用户给堡垒机使用,这个不能修改。
其他的用户堡垒机是通过ssh免登陆管理的,修改这些用户密码对业务应用不会有影响,所以我们设定策略每个月初修改密码,这些密码是长位数随机的。
修改的密码会记录到一个专用的密码管理系统中,需要申请后,才能查询到密码。
9、运维审计
第一是linux记录的审计,使用jumpserver自身的审计功能,已经比较好了;
第二是Windows操作,主要是录屏审计,根据用户和使用时间分割,记录成文件,方便后期审计。
第三是SFTP导出审计,详细记录用户什么时间导出什么数据,如果是txt、excel可以预览,便于安全审计。
五、总结
Jumpserver是一个非常优秀的开源堡垒机系统,我们在这个基础上,进行了不少的二次开发,满足了我们对于密码二次认证、Windows跳板机和审计、文件导出和审计、密码管理等需求,经过一年的使用,效果良好。