Intro
目前的应用场景是需要解决大量未经授权,拿到 root 账户之后,随意修改某些系统配置文件,导致业务出现问题时,debug 时间加长。所以,上收权限,统一入口,日志记录就变得很有意义。
JumpServer 特性
JumpServer 大版本的架构变化
v1.x
v2.0
pexpect 改为 Paramiko,前端 UI 改进。
v3.0
目前版本
其实是可以看到 JumpServer 在演进的过程中一步步走向成熟,虽然还是有很多的问题存在,但是技术的革新过程是很明显的。
关于每个组件的详细说明,这里不多加赘述了,简单说分为 SSH 模块和 Web 模块两个部分。 JumpServer 主要 focus 在 Web 模块,来维护整个资产集群、用户授权等。剩下的 Luna、Coco 和 Guacamole 中, Luna 是 Web SSH 的前端,Coco 负责 SSH 、Telnet 和 Web Socket 的后台连接,Guacamole 则是负责 RDP 连接。大致可以这么理解,剩下的可以参详官网的说法。
安装
Docker 安装
简述一下:
# 1. 本地安装 mariadb,注意授权,否则容器内可能读取不了
yum -y install mariadb mariadb-devel mariadb-server
systemctl enable mariadb
systemctl start mariadb
systemctl status mariadb
export DB_PASSWORD=password
# 注意这个 % 表示任意节点都可以访问该 mysql 服务
mysql -uroot -e "create database jumpserver default charset 'utf8'; grant all on jumpserver.* to 'jumpserver'@'%' identified by '$DB_PASSWORD'; flush privileges;"
# 2. 本地安装 redis,注意需要设置为外部可访问,否则同上
yum install epel-release
yum install redis
systemctl enable redis
systemctl start redis
# 修改 redis 可以被其他节点访问
vi /etc/redis.conf
bind 0.0.0.0
systemctl restart redis
# 3. docker run,注意端口绑定之后,服务器对外的这些端口的防火墙需要也对应打开
docker run --name jms_all -d \
-v /opt/mysql:/var/lib/mysql \
-p 80:80 \
-p 2222:2222 \
-e BOOTSTRAP_TOKEN=token \
-e DB_ENGINE=mysql \
-e DB_HOST=192.168.10.128 \
-e DB_PORT=3306 \
-e DB_USER=jumpserver \
-e DB_PASSWORD=password \
-e DB_NAME=jumpserver \
-e REDIS_HOST=192.168.10.128 \
-e REDIS_PORT=6379 \
-e REDIS_PASSWORD= \
jumpserver/jms_all:latest
Ubuntu 16.04 物理节点上本地安装
和 docker 安装没有太大出入,或者可以说,跟着官网安装,基本没啥大问题,官网中本地安装比 docker 的部分详细很多。
除了 nginx 的部分写错了一个目录名称:/etc/nginx/site-enabled/ 应该是 /etc/nginx/sites-enabled/。
另:如果 Ubuntu 本地配置的 repo 没有 python 3,那么可以 apt-add-repository。
Ubuntu14.04 安装 python3.6
遗留问题
接下来,还需要 focus 一些问题:
- vi 内的操作记录不了
- 认证走 LDAP
- 节点操作的权限申请及审批后续如何设计
- 应用、后台数据和数据库的 HA :mysql / redis / 应用 / 录像信息的共享存储
- 系统用户可根据操作新加,但是删除操作并不会在机器上做对应操作
- 如何减小运维成本,将 JumpServer 和 已有系统进行联动操作,包括 vsphere,是否有必要再做一个 cmdb(JumpServer 有友好的 api 可以调用,URL:http://jumpserver_ip/docs)
- 进一步定制系统用户的权限,需要配合 ansible 或其他可操作物理节点的命令脚本
Reference
补充
- 资源删除之后,历史会话还在,授权会跟着被删除,若此时新加同名或同 ip 资源,JumpServer 会认为这是一个全新的节点,所以接下去的操作不会受到影响
- 资源组和用户组对于授权是一个很好的入口
- 后台会每小时定期检查管理帐号的联通性
- 4A 指的是 Account 帐号 / Authentication 认证 / Authorization 授权 / Audit 审计