1. jump server介绍
JumpServer 是全球首款完全开源的堡垒机, 使用 GNU GPL v2.0 开源协议, 是符合 4A 的专业运维审计系统。
JumpServer 使用 Python / Django 进行开发, 遵循 Web 2.0 规范, 配备了业界领先的 Web Terminal 解决方案, 交互界面美观、用户体验好。
JumpServer 采纳分布式架构, 支持多机房跨区域部署, 中心节点提供 API, 各机房部署登录节点, 可横向扩展、无并发访问限制。
JumpServer 现已支持管理 SSH、 Telnet、 RDP、 VNC 协议资产。
改变世界, 从一点点开始。
为什么使用jumpserver
- 开源: 零门槛,线上快速获取和安装; 分布式: 轻松支持大规模并发访问;
- 无插件: 仅需浏览器,极致的 Web Terminal
- 使用体验; 多云支持: 一套系统,同时管理不同云上面的资产;
- 云端存储: 审计录像云端存储,永不丢失;
- 多租户:一套系统,多个子公司和部门同时使用; 多应用支持: 数据库,Windows远程应用,Kubernetes。
2. 使用docker部署jump server
2.1 环境准备
主机名 | 配置 | ip地址 | 安装软件 |
jumpserver | 2C4G | 192.168.48.152 | docker |
linux-svr | 1C2G | 192.168.48.151 | ssh |
win7-rdp | 2C4G | 192.168.48.134 | rdp |
jumpserver为安装堡垒机的机器,linux-svr为堡垒机接管的linux节点,win为windows系统的接管节点。后面验证使用
2.2 安装docker
~]# yum install -y docker
Installed:
docker.x86_64 2:1.13.1-203.git0be3e21.el7.centos
Dependency Installed:
PyYAML.x86_64 0:3.10-11.el7 atomic-registries.x86_64 1:1.22.1-33.gitb507039.el7_8 audit-libs-python.x86_64 0:2.8.5-4.el7 checkpolicy.x86_64 0:2.5-8.el7
container-selinux.noarch 2:2.119.2-1.911c772.el7_8 container-storage-setup.noarch 0:0.11.0-2.git5eaf76c.el7 containers-common.x86_64 1:0.1.40-11.el7_8 docker-client.x86_64 2:1.13.1-203.git0be3e21.el7.centos
docker-common.x86_64 2:1.13.1-203.git0be3e21.el7.centos fuse-overlayfs.x86_64 0:0.7.2-6.el7_8 fuse3-libs.x86_64 0:3.6.1-4.el7 libcgroup.x86_64 0:0.41-21.el7
libnl.x86_64 0:1.1.4-3.el7 libsemanage-python.x86_64 0:2.5-14.el7 libxml2-python.x86_64 0:2.9.1-6.el7.5 libyaml.x86_64 0:0.1.4-11.el7_0
oci-register-machine.x86_64 1:0-6.git2b44233.el7 oci-systemd-hook.x86_64 1:0.2.0-1.git05e6923.el7_6 oci-umount.x86_64 2:2.5-3.el7 policycoreutils-python.x86_64 0:2.5-34.el7
python-IPy.noarch 0:0.75-6.el7 python-backports.x86_64 0:1.0-8.el7 python-backports-ssl_match_hostname.noarch 0:3.5.0.1-1.el7 python-dateutil.noarch 0:1.5-7.el7
python-dmidecode.x86_64 0:3.12.2-4.el7 python-ethtool.x86_64 0:0.8-8.el7 python-inotify.noarch 0:0.9.4-4.el7 python-ipaddress.noarch 0:1.0.16-2.el7
python-pytoml.noarch 0:0.1.14-1.git7dea353.el7 python-setuptools.noarch 0:0.9.8-7.el7 python-six.noarch 0:1.9.0-2.el7 python-syspurpose.x86_64 0:1.24.45-1.el7.centos
setools-libs.x86_64 0:3.3.8-4.el7 slirp4netns.x86_64 0:0.4.3-4.el7_8 subscription-manager.x86_64 0:1.24.45-1.el7.centos subscription-manager-rhsm.x86_64 0:1.24.45-1.el7.centos
subscription-manager-rhsm-certificates.x86_64 0:1.24.45-1.el7.centos usermode.x86_64 0:1.111-6.el7 yajl.x86_64 0:2.0.4-4.el7
Dependency Updated:
audit.x86_64 0:2.8.5-4.el7 audit-libs.x86_64 0:2.8.5-4.el7 libxml2.x86_64 0:2.9.1-6.el7.5 libxml2-devel.x86_64 0:2.9.1-6.el7.5 policycoreutils.x86_64 0:2.5-34.el7
Complete!
~]#
~]# systemctl start docker
~]# systemctl enable docker
安装docker步骤很简单,使用默认的docker版本就可以
配置阿里云加速器
docker默认docker pull的速度不是很可观,所以配置一下阿里云的加速器,配置方法如下
]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://fq687fwp.mirror.aliyuncs.com"]
}
]# systemctl daemon-reload
]# systemctl restart docker
]# docker pull centos:7.6.1810
Trying to pull repository docker.io/library/centos ...
7.6.1810: Pulling from docker.io/library/centos
ac9208207ada: Pull complete
Digest: sha256:62d9e1c2daa91166139b51577fe4f4f6b4cc41a3a2c7fc36bd895e2a17a3e4e6
Status: Downloaded newer image for docker.io/centos:7.6.1810
到这里docker就算是安装完成了
2.3 安装mysql5.7
jumpserver使用的数据库是mysql5.7,我们这里就选用mysql5.7版本,安装其他版本可以能会报错,我安装了最新的mariadb就报了数据库要选择mysql5.7+的版本的错误
使用docker安装步骤如下:
~]# mkdir -p /data/mysql/data
~]# docker run -d --name mysql --restart=always -e MYSQL_ROOT_PASSWORD=abcd@1234 -p 3306:3306 -v /data/mysql/data:/var/lib/mysql mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3453d20feed2 mysql:5.7 "docker-entrypoint..." 16 seconds ago Up 15 seconds 0.0.0.0:3306->3306/tcp, 33060/tcp mysql
创建jumpserver数据库
~]# docker exec -it mysql /bin/bash
/# mysql -uroot -pabcd@1234
mysql> create database jumpserver default charset 'utf8mb4';
mysql> grant all on jumpserver.* to 'jumpserver'@'%' identified by 'abcd@1234';
mysql> flush privileges;
mysql> exit
/# mysql -ujumpserver -pabcd@1234
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| jumpserver |
+--------------------+
2 rows in set (0.00 sec)
jumpserver数据库这块已经准备完成
2.4 安装redis
redis是jumpserver存储会话信息的,安装的是redis4.0.10版本,安装很简单
安装步骤如下:
~]# mkdir -p /data/redis/data
~]# docker run -d -it --name redis -p 6379:6379 -v /data/redis/data:/data --restart=always --sysctl net.core.somaxconn=1024 redis:4.0.10 --requirepass "abcd@1234"
~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
71840c9b0f6f redis:4.0.10 "docker-entrypoint..." 6 minutes ago Up 6 minutes 0.0.0.0:6379->6379/tcp redis
3453d20feed2 mysql:5.7 "docker-entrypoint..." 5 hours ago Up 5 hours 0.0.0.0:3306->3306/tcp, 33060/tcp mysql
2.5 安装jumpserver
jumpserver相关文档请参考:https://docs.jumpserver.org
不做过多的介绍
Jumpserver 封装了一个 All in one Docker, 可以快速启动。该镜像集成了所需要的组件, 支持使用外置 Database 和 Redis
生成密钥
~]# if [ "$SECRET_KEY" = "" ]; then SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`; echo "SECRET_KEY=$SECRET_KEY" >> ~/.bashrc; echo $SECRET_KEY; else echo $SECRET_KEY; fi
fiWE7DI5hyVYznyX4XQlzwJm46K9NgHkPcUCIF01NDSudKfJKN4J
~]# if [ "$BOOTSTRAP_TOKEN" = "" ]; then BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16`; echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc; echo $BOOTSTRAP_TOKEN; else echo $BOOTSTRAP_TOKEN; fi
co6QU93I0RXj3Cy1
安装jumpserver
]# mkdir -p /data/jumpserver
~]# docker run -d --name jumpserver -h jumpserver --restart=always \
-v /data/jumpserver:/opt/jumpserver/data/media \
-p 80:80 \
-p 2222:2222 \
-e SECRET_KEY=$SECRET_KEY \
-e BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN \
-e DB_HOST=192.168.48.152 \
-e DB_PORT=3306 \
-e DB_USER=jumpserver \
-e DB_PASSWORD="abcd@1234" \
-e DB_NAME=jumpserver \
-e REDIS_HOST=192.168.48.152 \
-e REDIS_PORT=6379 \
-e REDIS_PASSWORD="abcd@1234" \
jumpserver/jms_all:v2.5.0
默认密码是admin/admin,登陆后直接修改密码
jumpserver算是安装完成了,接下来就是验证功能了
3. 验证jumpserver功能
添加资产节点
给资产添加个节点目录,就相当于把资产分配到某个部门或者是个人名下
添加管理用户
这个管理用户是用于连接节点用的用户名密码
添加系统用户
系统用户是用于web控制台和sftp文件传输使用的用户密码密码信息,其中还包括了命令过滤等
添加资产信息
测试添加windows资产,linux也是同样的方法添加,选择管理用户是登录用户
资产授权
web 终端登录
登录成功,完美
linux也是用同样的方法登录
jumpserver还有很多的使用方法,想了解更多请参考官网:https://docs.jumpserver.org