背景
因为自己手里有三四台公网服务器,从安全角度考虑,每台机器安全组都需要设置ssh访问控制。但是只要你移动办公,那么你上网的公网出口地址就会发生变化,这个时候就需要频繁更换四台机器的安全组才可以正常通过ssh连接到机器。
这个时候我急需一台固定公网IP的堡垒机。从这台机器上登录到其他机器就不需要频繁更换安全组,我只需要定期更换堡垒机的访问安全组即可。如果此时你也在调研堡垒机开源解决方案,不如和我一起看下去。
我找到了jumpserver和oneterm这两个解决方案。jumpserver是比较成熟的堡垒机解决方案了,功能大而全,并且也是大多数人推荐的方案。但是我也找到了oneterm这一较为轻便的解决方案。因为oneterm是golang开发,并且有字符客户端连接方式。这次就尝试体验下oneterm这一方案!
部署
oneterm使用docker-compose部署也非常方便:
// 拉取代码工程
git clone https://github.com/veops/oneterm.git
// 启动容器
docker-compose up -d
拉取完成代码工程、拉取镜像、启动容器之后可以看到oneterm的容器都起来了:
这里我们可以使用hostIp:8000访问oneterm的web页面,初始账号:admin/123456。另外hostIp:12229是我们ssh连接oneterm字符客户端的地址,账号同web系统。
体验
oneterm和jumpserver都是符合4A标准的堡垒机解决方案,下面主要体验下oneterm的资源管理、权限控制、客户端连接。
1、账号管理
我们可以通过账号列表管理每台机器的ssh的登录账号,后续可以把账号关联上资产。
2、资产管理
我们可以通过资产管理去分组添加我们需要管理的服务器,我这里添加了一台公网服务器:
编辑资产选择前一步添加的ssh账号:
另外我们还可以先添加过滤命令,通过对账号下面command资源的权限管理,去控制该账号下命令级别的控制。
把上面配置好的命令权限关联到资产:
3、工作台
在工作台中我们可以清晰地看到资产连接情况和资源状态,我们可以使用web终端去连接到服务器:
4、字符客户端
除了使用web去登录我们的服务器,我们还可以使用ssh去连接oneterm客户端。hostIp:12229是我们ssh连接oneterm字符客户端的地址,账号同web系统。
选择资产进行登录:
oneterm客户端同样只是tab命令补全,并且可以看到我们前面过滤的kill命令被禁止了:
到这里oneterm初步功能就体验完了。更多功能请移步官方文档。
传送门
- oneterm代码工程仓库地址:https://github.com/veops/oneterm
- oneterm官方文档地址:https://veops.cn/docs/docs/oneterm/onterm_design