企业安全之开源安全设备二次开发注意问题

随着安全性的不断重视,企业在安全投入力度上也越发增大,安全成为现如今企业不可避免的问题。

作为企业的安全高层,应该关注的是如何在保证安全性的同时降低安全投入成本。这时候不可避免的就要接触到开源项目,在开源项目的二次开发过程中,我们需要注意哪些问题?下面就一起来探讨一下。

首先是开源项目的选用,由于上篇文章以商业堡垒机为例,为避嫌这篇文章还是以开源堡垒机的二次开发为例,来讲述开源项目二次开发中需要注意的点有哪些。

01

选用阶段

1、确定开源堡垒机都有哪些

这里推荐使用GitHub直接进行搜索,很多人其实不知道一个开源项目的获取方式,在这里给大家普及一下,假如要搜索开源的堡垒机,有两种搜索方式,一是直接搜索堡垒机,如图:

这种搜索方式一般只能搜出国内的开源项目,如果需要借鉴国外的开源项目,建议翻译成英文后进行搜索,如图:

在这里参选的堡垒机有(注:具体选型需要按照需求进行选型)

1)Jumpserver

2)hj1933/FortressMachine

3)麒麟堡垒机

4)Teleport

2、确认开源堡垒机各优势

可以通过笔者上篇文章进行选型对比工作,详细见上文《甲方企业安全之设备选型方案设计和实现(堡垒机)》,具体分析对比我就不一一写了,最终我采用的是Jumpserver进行二次开发,原因如下:

1)社区活跃度很高

2)更新频率快

3)成熟度相对很高

4)框架语言稳定快捷

5)功能较为全面

3、 分析部署复杂度与稳定性

这步是最关键的,以Jumpserver作为基础,部署其实并不困难,甚至可以直接拉Docker,一键部署等。

但是在一个生产级的环境,最好的还是稳定部署,那么其关键就在于部署的复杂度和稳定性。

整体可以采用分布式部署方案,降低服务器的压力,同时保证多链路访问,最大程度提高整体架构的稳定性,并增强最大并发量。

02

二次开发

首先,分析Jumpserver的组件构成,主体采用Python / Django,内含Ansible(批量执行命令模块)、Coco(Linux ssh映射)、Guacamole(无客户端的远程桌面网关,如RDP、VNC等)、MFA(双因素认证模块)、Luna(网页登录ssh前端页面)、Nginx(展示映射)、MySQL(数据存储)、Redis(数据缓存),整体模块最好进行分布式部署,保证某一个模块出现问题后不会影响整体使用,压力也会相对减小。

接下来,我们来一一分析构成二次开发中需要注意的问题。

Ansible:批量执行命令是堡垒机基本的功能,在Ansible功能模块的二次开发中要注意的问题有两个:

1)是否配置免密钥登录

2)执行ansible的用户身份是否准确

在这里我用一款Devops来举例——OpsManage

在配置OpsManage的时候,由于密码存储是明文的,所以我在管理资产时没有输入托管密码,只把OpsManage当作资产记录与批量管理,这时就要在后台配置Ansible免密钥使OpsManage不使用密码去批量执行命令。

由于我启用OpsManage的身份是普通用户身份,当执行Ansible命令时会去找寻用户密钥,但普通用户无法访问到Root用户下的密钥,导致免密钥失败,而后会使用托管密码去执行Ansible命令,但由于整体环境没有托管密码,导致整体Ansible执行失败。

在开发过程中就要注意免密钥与密钥可读的问题。

Coco、Guacamole:在登录开发中要注意的是高可用的问题,在这里我的实际部署是使用Docker部署,将Coco与Guacamole拉起Docker镜像,同时复制这两个镜像另起4个镜像,保证负载解决进程打满导致无法登录或异常退出的问题。

MFA:二次开发MFA基本不需要做什么,但是一定要保证的是时间同步的问题,因为服务器在运行过程中时间总会有所偏移,而MFA是根据时间进行的二次认证,如果时间不同步基本上是登不进去的,在这里建议设置Crontab,将时间同步设置定时,确保服务器时间与MFA谷歌双因素认证服务器同步。

MySQL:二次开发过程中要保证登录的密码与服务器托管密码是加密的,直接登录MySQL无法直接读取。

Redis:禁止未授权访问,最好绑定IP。

功能认证方面,由于等保是要求独立审计员这个角色,在二次开发中应当增加这个角色,并将管理员中的审计功能放在审计员这个角色中。

(图:分离权限关键代码)

功能开发还有很多,这里只是举一个例子,详细执行的时候根据各自的需求改动代码。

总结

二次开发要想的具体,包含:功能层面的完善、架构层面的优化以及Bug的处理问题。

从开发一套产品很不容易,改动相对简单一些,在这里为开源的大佬们点赞,感谢他们的开源精神。

本文作者:煜阳 | X安全特邀专家

转载请联系X安全授权,感谢关注!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190821A0KDYL00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券