搭建jumperserver堡垒机管理万台服务器
- 1. 概述
- ***官方极速安装***
- 2. 环境搭建
- 2.1 支持中文字符集
- 2.2 安装Python和Python虚拟环境
- 2.2.1 安装Python3.6
- 2.2.2 建立Python虚拟环境
- 2.2.3 自动化载入Python虚拟环境
- 3. 安装jumpserver
- 3.1 clone jumpserver项目
- 3.2 安装依赖rpm包
- 3.3 安装python库依赖
- 3.4 安装redis,jumpserver使用redis做cache和celery broke
- 4. 安装mysql(使用mysql作为数据库)
- 4.1 安装mysql,加入开启自启并启动
- 4.2 创建数据库jumpserver并授权
- 5. 运行jumpserver
- 5.1 修改jumpserver配置文件
- 5.2 运行jumpserver
- 6. 安装SSH Server和WebSocket Server:COCO
- 6.1 安装COCO
- 6.2 安装依赖
- 6.3 修改COCO配置文件
- 6.4 启动coco
- 7. 安装Web Terminal前端:Luna
- 8. 安装nginx,整合各组件,代理jumpserver
- 8.1 增加nginx的yum配置文件,安装nginx
- 8.2 修改nginx配置文件
- 8.3 检查配置文件并启动
- 9. 初步使用jumpserver,需要注意的点
- 10. jumpserver平台系统初始化
- 10.1 jumpserver平台系统初始化
- 10.2 配置邮件发送服务器
- 11. 实战:使用jumpserver 管理数万台服务器
- 11.1 用户管理
- 11.2 编辑资产书添加节点
- 11.3 创建管理用户
- 11.4 创建系统用户
- 11.5 创建资产
- 11.6 网域列表
- 11.7 创建授权规则
- 11.8 用户使用资产
- 11.9 在xshell字符终端下连接jumpserver管理服务器
-
11.10 Web终端管理资产
- 12. 总结
-
LDAP 使用说明
-
常见问题
- 1、Jms_guacamole 常见问题
- 2、VNC 资产连接问题(连接MacOS,报错无法连接)
1. 概述
1.1 跳板机概述
跳板机就是一台服务器,开发或运维人员在维护过程中首先要统一登录到这台服务器,然后再登录到目标设备进行维护和操作;
跳板机缺点:没有实现对运维人员操作行为的控制和审计,使用跳板机的过程中还是会出现误操作、违规操作导致的事故,一旦出现操作事故很难快速定位到原因和责任人;
1.2 堡垒机概述:
堡垒机,即在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的入侵和破坏,而运用各种技术手段实时收集和监控网络环境中每一个组成部分的系统状态、安全事件、网络活动,以便集中报警、及时处理及审计定责。
堡垒机比跳板机多了实时收集、监控网络环境、集中报警等功能。
1.3 Jumpserver概述:
Jumpserver是一款使用Python, Django开发的开源跳板机系统, 为互联网企业提供了认证,授权,审计,自动化运维等功能。
jumpserver堡垒机组件说明:
1、Jumpserver:
现指 Jumpserver 管理后台,是核心组件(Core), 使用 Django Class Based View 风格开发,支持 Restful API。
2、Coco:
实现了 SSH Server 和 Web Terminal Server 的组件,提供 SSH 和 WebSocket 接口, 使用 Paramiko 和 Flask 开发。
3、Luna:
现在是 Web Terminal 前端,计划前端页面都由该项目提供,Jumpserver 只提供 API,不再负责后台渲染html等。
- 堡垒机,在特定的网络环境下,为了保障网络和数据不收外界入侵和破坏,而运用各种技术手段实时收集和监控网络环境中每一个组成的步伐的系统状态,安全事件,网络活动,以便于集中报警,即时处理及审计定责。
- 核心功能主要是远程登录服务器和日志审计
- jumpserver是全球首款完全开源的堡垒机,中国人自己开发的软件,使用的环境是Python/Django
******官方提供极速安装******
脚本做了一定的容错, 可以多次执行, 安装完成后请勿再次执行
说明
- # 开头的行表示注释
- > 开头的行表示需要在 mysql 中执行
- $ 开头的行表示需要执行的命令
- 全新安装的 Centos7 (7.x)
- 需要连接 互联网
- 使用 root 用户执行
Koko、Guacamole 容器化部署(推荐)
$ cd /opt $ yum -y install wget $ wget -O /opt/jms_install.sh https://demo.jumpserver.org/download/jms_install.sh $ sh jms_install.sh # 后续重启服务器后启动异常, 可以使用下面的命令进行启动 $ systemctl start jms_core # 注意先启动 jms_core 后再启动其他组件 $ docker start jms_koko $ docker start jms_guacamole # 停止 $ docker stop jms_koko $ docker stop jms_guacamole $ systemctl stop jms_core # 注意先结束其他组件最后停止 jms_core # 查看启动状态 $ systemctl status jms_core $ docker logs -f jms_koko $ docker logs -f jms_guacamole
官方最新极速安装20200109 说明:官方地址:https://jumpserver.readthedocs.io/zh/master/install/setup_by_fast/ 全新安装的 Centos7 (7.x) 需要连接 互联网 使用 root 用户执行 $ cd /opt $ yum -y install wget git $ git clone --depth=1 https://github.com/jumpserver/setuptools.git $ cd setuptools $ cp config_example.conf config.conf $ vi config.conf $ chmod +x ./jmsctl.sh # Install $ ./jmsctl.sh install # Help $ ./jmsctl.sh -h # 如果网络有问题无法连接到 github $ wget -O /opt/setuptools.tar.gz http://demo.jumpserver.org/download/setuptools.tar.gz $ cd /opt $ tar -xf setuptools.tar.gz $ cd setuptools $ git pull $ ./jmsctl.sh -h
2. 环境搭建
2.1 支持中文字符集
查看主机支持的字符集 cat /etc/locale.conf 若是LANG="en_US.UTF-8"代表支持的是英文,需要修改,方式如下: [root@jumpserver ~]# localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8 [root@jumpserver ~]# export LC_ALL=zh_CN.UTF-8 [root@jumpserver ~]# echo 'LANG="zh_CN.UTF-8"' > /etc/locale.conf [root@jumpserver ~]# cat /etc/locale.conf #查看修改的结果 LANG="zh_CN.UTF-8"
2.2 安装Python和Python虚拟环境
需要支持的mysql版本大于5.56,需要支持的Python3.6
2.2.1 安装Python3.6
#安装依赖包 [root@jumpserver ~]# yum -y install wget sqlite-devel xz gcc automake zlib-devel openssl-devel epel-release git #安装Python3.6(下载过慢可更换epel源) [root@jumpserver ~]# yum -y install python36 python36-devel #或者下载源码包,编译安装Python3.6
[root@jumpserver ~]# cd /usr/local/src/
[root@jumpserver src]# wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
[root@jumpserver src]# tar xf Python-3.6.1.tar.xz && cd Python-3.6.1
[root@jumpserver Python-3.6.1]# ./configure && make && make install
#安装完成后查看Python3的版本
[root@jumpserver Python-3.6.1]# python3 -V
LANG="zh_CN.UTF-8"
2.2.2 建立Python虚拟环境
#创建一个py3的虚拟环境 [root@jumpserver opt]# cd /opt/ [root@jumpserver opt]# python3.6 -m venv py3 [root@jumpserver opt]# source /opt/py3/bin/activate #使其立即生效,最左边出现(py3)提示符代表成功 #运行jumpserver,必须运行以上source命令,以下所有命令,也要在该虚拟环境下运行
2.2.3 自动化载入Python虚拟环境
(py3)[root@jumpserver opt]# git clone https://github.com/kennethreitz/autoenv.git (py3)[root@jumpserver opt]# echo 'source /opt/autoenv/activate.sh' >> ~/.bashrc (py3)[root@jumpserver opt]# source ~/.bashrc
3. 安装jumpserver
3.1 clone jumpserver项目
#若克隆过程太长,可以用--depth 1参数,只下载最新的版本 (py3)[root@jumpserver opt]# git clone --depth 1 https://github.com/jumpserver/jumpserver.git #.env的作用是只要进入/opt/jumpserver/目录,就自动进入py3的环境中,首次进入目录需要确认,y即可 (py3)[root@jumpserver opt]# echo "source /opt/py3/bin/activate" > /opt/jumpserver/.env (py3)[root@jumpserver opt]# cd jumpserver/
3.2 安装依赖rpm包
(py3)[root@jumpserver jumpserver]# cd /opt/jumpserver/requirements/ (py3)[root@jumpserver requirements]# yum -y install $(cat rpm_requirements.txt)
3.3 安装python库依赖
#依旧是在requirements目录下,先升级setup工具 (py3)[root@jumpserver requirements]# pip install --upgrade pip setuptools -i https://mirrors.aliyun.com/pypi/simple/ #pip下载加速设置 (py3)[root@jumpserver requirements]# cd /opt/jumpserver/ (py3)[root@jumpserver jumpserver]# cd ~ (py3)[root@jumpserver ~]# mkdir .pip (py3)[root@jumpserver ~]# vim ~/.pip/pip.conf #加入以下内容: [global] index-url=https://mirrors.aliyun.com/pypi/simple/ [install] trusted-host=mirrors.aliyun.com #继续下载依赖包 (py3)[root@jumpserver ~]# cd /opt/jumpserver/requirements/ (py3)[root@jumpserver requirements]# pip install -r requirements.txt #若下载卡在某个包,可以wget软件包,然后使用pip+instal+软件包名,然后将requirement.txt文件中对应的行注释,继续安装其他包,安装完成后检查步骤正确性 [root@jumpserver src]# echo $?
3.4 安装redis,jumpserver使用redis做cache和celery broke
(py3)[root@jumpserver requirements]# yum -y install redis (py3)[root@jumpserver requirements]# systemctl enable redis (py3)[root@jumpserver requirements]# systemctl start redis #加速开机自启并启动
4. 安装mysql(使用mysql作为数据库)
4.1 安装mysql,加入开启自启并启动
(py3)[root@jumpserver requirements]# yum -y install mariadb mariadb-devel mariadb-server (py3)[root@jumpserver requirements]# systemctl enable mariadb (py3)[root@jumpserver requirements]# systemctl start mariadb
4.2 创建数据库jumpserver并授权
(py3)[root@jumpserver requirements]# DB_PASSWORD=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 24` (py3)[root@jumpserver requirements]# echo $DB_PASSWORD #需要摘记作为数据库用户的密码 (py3)[root@jumpserver requirements]# mysql -uroot -e "create database jumpserver default charset 'utf8'; grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by '$DB_PASSWORD'; flush privileges;"
5. 运行jumpserver
5.1 修改jumpserver配置文件
(py3)[root@jumpserver requirements]# cd /opt/jumpserver/ #备份并改名配置文件 (py3)[root@jumpserver jumpserver]# cp config_example.yml config.yml #生成两个密码,并摘记 (py3)[root@jumpserver jumpserver]# SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50` (py3)[root@jumpserver jumpserver]# echo $SECRET_KEY (py3)[root@jumpserver jumpserver]# BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16` (py3)[root@jumpserver jumpserver]# echo $BOOTSTRAP_TOKEN #加入家目录下bash配置文件 (py3)[root@jumpserver jumpserver]# echo "SECRET_KEY=$SECRET_KEY" >> ~/.bashrc (py3)[root@jumpserver jumpserver]# echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc #修改配置文件 (py3)[root@jumpserver jumpserver]# sed -i "s/SECRET_KEY:/SECRET_KEY: $SECRET_KEY/g" /opt/jumpserver/config.yml (py3)[root@jumpserver jumpserver]# sed -i "s/BOOTSTRAP_TOKEN:/BOOTSTRAP_TOKEN: $BOOTSTRAP_TOKEN/g" /opt/jumpserver/config.yml (py3)[root@jumpserver jumpserver]# sed -i "s/# DEBUG: true/DEBUG: false/g" /opt/jumpserver/config.yml (py3)[root@jumpserver jumpserver]# sed -i "s/# LOG_LEVEL: DEBUG/LOG_LEVEL: ERROR/g" /opt/jumpserver/config.yml (py3)[root@jumpserver jumpserver]# sed -i "s/# SESSION_EXPIRE_AT_BROWSER_CLOSE: false/SESSION_EXPIRE_AT_BROWSER_CLOSE: true/g" /opt/jumpserver/config.yml (py3)[root@jumpserver jumpserver]# sed -i "s/DB_PASSWORD: /DB_PASSWORD: $DB_PASSWORD/g" /opt/jumpserver/config.yml
5.2 运行jumpserver
#初始化数据库,出现多项OK为正确 (py3)[root@jumpserver jumpserver]# cd /opt/jumpserver/utils/ (py3)[root@jumpserver utils]# bash make_migrations.sh #启动jumpserver并检查正确性,端口8080是否开启 (py3)[root@jumpserver utils]# cd /opt/jumpserver/ (py3)[root@jumpserver jumpserver]# ./jms start all -d (py3)[root@jumpserver jumpserver]# netstat -antup | grep 8080
jumpserver堡垒机测试链接:http://IP:8080 用户 : admin 密码: admin
6. 安装SSH Server和WebSocket Server:COCO
6.1 安装COCO
(py3)[root@jumpserver jumpserver]# cd /opt/ (py3)[root@jumpserver opt]# git clone https://github.com/jumpserver/coco.git (py3)[root@jumpserver opt]# echo "source /opt/py3/bin/activate" > /opt/coco/.env (py3)[root@jumpserver opt]# cd coco/ #第一进入提示,y即可
6.2 安装依赖
(py3)[root@jumpserver opt]# cd /opt/coco/requirements/ (py3)[root@jumpserver requirements]# yum -y install \$(cat rpm_requirements.txt) #安装python的依赖 (py3)[root@jumpserver requirements]# pip install -r requirements.txt
6.3 修改COCO配置文件
(py3)[root@jumpserver requirements]# cd /opt/coco/ #可以看看目录下的东西 (py3)[root@jumpserver coco]# mkdir keys logs (py3)[root@jumpserver coco]# cp config_example.yml config.yml (py3)[root@jumpserver coco]# sed -i "s/BOOTSTRAP_TOKEN: <PleasgeChangeSameWithJumpserver>/BOOTSTRAP_TOKEN: \$BOOTSTRAP_TOKEN/g" /opt/coco/config.yml (py3)[root@jumpserver coco]# sed -i "s/# LOG_LEVEL: INFO/LOG_LEVEL: ERROR/g" /opt/coco/config.yml
6.4 启动coco
(py3)[root@jumpserver coco]# cd /opt/coco (py3)[root@jumpserver coco]# ./cocod start -d #检查启动情况,是否开启5000端口和2222端口 (py3)[root@jumpserver coco]# netstat -lntp
7. 安装Web Terminal前端:Luna
(py3)[root@jumpserver coco]# cd /opt/ (py3)[root@jumpserver opt]# wget https://github.com/jumpserver/luna/releases/download/1.4.9/luna.tar.gz (py3)[root@jumpserver opt]# tar xf luna.tar.gz (py3)[root@jumpserver opt]# chown -R root:root luna
8. 安装nginx,整合各组件,代理jumpserver
8.1 增加nginx的yum配置文件,安装nginx
(py3)[root@jumpserver opt]# yum -y install yum-utils (py3)[root@jumpserver opt]# vim /etc/yum.repos.d/nginx.repo #加入内容: [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ #安装nginx (py3)[root@jumpserver opt]# yum -y install nginx
8.2 修改nginx配置文件
(py3)[root@jumpserver opt]# cd /etc/nginx/conf.d/ (py3)[root@jumpserver conf.d]# rm -f default.conf (py3)[root@jumpserver conf.d]# vim jumpserver.conf #加入以下内容,需要注意各模块的目录是否准确: server { listen 80; client_max_body_size 100m; location /luna/ { try_files $uri / /index.html; alias /opt/luna/; } location /media/ { add_header Content-Encoding gzip; root /opt/jumpserver/data/; } location /static/ { root /opt/jumpserver/data/; } location /socket.io/ { proxy_pass http://localhost:5000/socket.io/; proxy_buffering off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; access_log off; } location /coco/ { proxy_pass http://localhost:5000/coco/; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; access_log off; } location /guacamole/ { proxy_pass http://localhost:8081/; proxy_buffering off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $http_connection; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; access_log off; } location / { proxy_pass http://localhost:8080; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
8.3 检查配置文件并启动
(py3)[root@jumpserver conf.d]# nginx -t (py3)[root@jumpserver conf.d]# systemctl start nginx (py3)[root@jumpserver conf.d]# systemctl enable nginx
9. 初步使用jumpserver,需要注意的点
- 初始账号密码为admin,登录后可通过个人信息更新密码
- 管理员admin,可通过ssh链接跳板机,通过2222端口
- jumpserver用户管理(都可以通过私钥登录)
- 登录jumpserver的用户:
例如adminn,使用ssh协议连接端口2222,可在用户管理创建用户,密码自定义 - 管理用户:
创建在服务器(资产节点)上的用户,如root用户,或者有NOPASSWD:ALL sudo权限的用户,密码需要和服务器上的相同,此用户推送系统用户的信息到资产上 - 系统用户:
真正在服务器中执行命令的用户,jumpserver跳转资产时使用的用户,可以设置sudo权限,如果选择自动推送,当系统用户信息更新,管理用户会将新的信息推送到匹配的资产上,也可以选择手动推送,可以可视化看到ansible推送过程,选择自动创建密钥,会在推送的时候给资产上的系统用户发送一份公钥,可用于密钥登录;推送的信息有,在资产上创建用户,设置用户权限,发送公钥,设置sudo权限等
- 资产管理:
创建资产需要指定IP,管理用户,注意管理用户的权限,设置争取资产信息才能更新 - 资产授权:
将资产(节点),登录用户(用户组),系统用户链接在一起 - 通过ssh,2222端口可以登录jumpserver,登录后,输入p可以显示可以登录的资产,输入对应id可以登录,输入g查看有权限的节点
- 会话管理:在线会话可以终止用户登录,历史会话可以查看具体操作,
- 日志审计:记录了关于jumpserver所有的日志
10.jumpserver平台系统初始化
10.1 jumpserver平台系统初始化
10.2 配置邮件发送服务器
成功后,需要点 “提交”
注:配置完后,需要重启一下服务。不然后期创建用户,收不到邮件。
(py3) [root@k5 jumpserver]# /opt/jumpserver/jms stop all -d
(py3) [root@k5 jumpserver]# /opt/jumpserver/jms start all -d
更新设置成功, 请手动重启程序
如果未开通自己邮箱要开启smtp和pop3服务须要自己开启一下
11.实战:使用jumpserver 管理数万台服务器
11.1 用户管理
点击页面左侧"用户列表"菜单下的"用户列表", 进入用户列表页面。
点击页面左上角"创建用户"按钮, 进入创建用户页面, 填写账户, 角色安全, 个人等信息。
其中, 用户名即 JumpServer 登录账号。用户是用于资产授权, 当某个资产对一个用户授权后, 这个用户就使用这个资产了。角色用于区分一个用户是管理员还是普通用户。
成功提交用户信息后, JumpServer 会发送一条设置"用户密码"的邮件到您填写的用户邮箱。
点击邮件中的设置密码链接, 设置好密码后, 您就可以用户名和密码登录 JumpServer 了。
11.2 编辑资产书添加节点
节点不能重名,右击节点可以添加、删除和重命名节点,以及进行资产相关的操作。
11.3 创建管理用户
Jumpserver里各个用户的说明:
管理用户是服务器的 root,或拥有 NOPASSWD: ALL sudo 权限的用户,Jumpserver 使用该用户来推送系统用户、获取资产硬件信息等。
前提,你的西南片区-服务器节点中所有的服务器root用户密码都是:123这样就可以使用此root用户管理服务器。
11.4 创建系统用户
系统用户是 Jumpserver 跳转登录资产时使用的用户,可以理解为登录资产用户, Jumpserver使用系统用户登录资产。
系统用户的 Sudo 栏填写允许当前系统用户免sudo密码执行的程序路径,如默认的/sbin/ifconfig,意思是当前系统用户可以直接执行 ifconfig 命令或 sudo ifconfig 而不需要输入当前系统用户的密码,执行其他的命令任然需要密码,以此来达到权限控制的目的。
# 此处的权限应该根据使用用户的需求汇总后定制,原则上给予最小权限即可。
系统用户创建时,如果选择了自动推送 Jumpserver 会使用 Ansible 自动推送系统用户到资产中,如果资产(交换机、Windows )不支持 Ansible, 请手动填写账号密码。
Linux 系统协议项务必选择 ssh 。如果用户在系统中已存在,请去掉自动生成密钥、自动推送勾选。
增加一个:检查服务器运行状态的用户: user 权限: /sbin/ifconfig,/usr/bin/top,/usr/bin/free
再加一个: 系统管理员用户:manager
11.5 创建资产
点击页面左侧的“资产管理”菜单下的“资产列表”按钮,查看当前所有的资产列表。
点击页面左上角的“创建资产”按钮,进入资产创建页面,填写资产信息。
IP 地址和管理用户要确保正确,确保所选的管理用户的用户名和密码能"牢靠"地登录指定的 IP 主机上。资产的系统平台也务必正确填写。公网 IP 信息只用于展示,可不填,Jumpserver 连接资产使用的是 IP 信息。
开启虚拟机hero5, 这台机器当成资源添加平台中。
hero5-西南片区 10.27.17.35
如果资产不能正常连接,请检查管理用户的用户名和密钥是否正确以及该管理用户是否能使用 SSH 从 Jumpserver 主机正确登录到资产主机上。
11.6 网域列表
网域功能是为了解决部分环境无法直接连接而新增的功能,原理是通过网关服务器进行跳转登录。
这个功能,一般情况不用到。
11.7 创建授权规则
节点,对应的是资产,代表该节点下的所有资产。
用户组,对应的是用户,代表该用户组下所有的用户。
系统用户,及所选的用户组下的用户能通过该系统用户使用所选节点下的资产。
节点,用户组,系统用户是一对一的关系,所以当拥有 Linux、Windows 不同类型资产时,应该分别给 Linux 资产和 Windows 资产创建授权规则。
注:这一条授权的含意是: 只要是“西南片区运维部门”组中的人,对节点“西南片区-服务器”中的所有服务器,拥有“系统管理员用户”的权限。
授权成功后,你自己手动到hero5,6,7上查看:
[root@k6 ~]# tail -n 5 /etc/passwd
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
chrony:x:994:992::/var/lib/chrony:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
manager:x:1000:1000::/home/manager:/bin/bash
#自动推送一个帐号,自动在资产服务器上创建系统用户
[root@k6 ~]# visudo
11.8 用户使用资产
登录 Jumpserver
创建授权规则的时候,选择了用户组,所以这里需要登录所选用户组下面的用户才能看见相应的资产。
使用无痕浏览器,再打开一个窗口,进行登录:
打开资产所在的节点:
双击资产名字,就连上资产了:
如果显示连接超时,请检查为资产分配的系统用户用户名和密钥是否正确,是否正确选择 Linux 操作系统,协议 ssh,端口22,以及资产的防火墙策略是否正确配置等信息。
11.9 在xshell字符终端下连接jumpserver管理服务器
11.10 Web终端管理资产
Web 终端是资产使用界面, 管理员和用户都是从这里登录到资产上, 执行操作。点击资产名字连接资产, 点击"Server"下的"Disconnect"断开资产连接。
LDAP 使用说明
- LDAP 支持 使用 LADP 与 Windows AD 的用户作为 jumpserver 登录用户
- 已经存在的用户不能与要登录的 LDAP 用户有用户名和邮箱同名, 具有唯一性
- LDAP 设置说明
LDAP地址 ldap://serverurl:389 或者 ldaps://serverurl:636(需要勾选ssl)
# 此处是设置LDAP的服务器,推荐使用IP, 防止解析问题
绑定DN cn=administrator,cn=Users,dc=jumpserver,dc=org
# 这里是设置认证用户的信息, jumpserver会使用这个用户去校验ldap的信息是否正确
密码 # 上面认证用户的密码
用户OU ou=jumpserver,dc=jumpserver,dc=org
# 这里是设置用来登录jumpserver的组织单元, 比如我要用某个ou的用户来登录jumpserver
# 多OU用法 ou=jumpserver,dc=jumpserver,dc=org | ou=user,dc=jumpserver,dc=org | ou=xxx,dc=jumpserver,dc=org
用户过滤器 (cn=%(user)s)
# 这里是设置筛选ldap用户的哪些属性, 不能有多余的空格
LADP属性映射 {"username": "cn", "name": "sn", "email": "mail"}
username name email 是jumpserver的用户属性(不可更改)
cn sn mail 是ldap的用户属性(可自定义)
# 这里的意思是, 把ldap用户的属性映射到jumpserver上
使用SSL
# 勾选后 LDAP地址 需要设置成 ldaps://serverurl:636
启动LDAP认证
# 如果需要使用 LDAP或域用户 登录 jumpserver,则必选
- 补充
DN 一定要是完整的DN, 不能跳过OU, 可以使用其他工具查询
如:cn=admin,ou=aaa,dc=jumpserver,dc=org,必须要写成cn=admin,ou=aaa,dc=jumpserver,dc=org 不能缩写成cn=admin,dc=jumpserver,dc=org
用户OU 用户OU可以只写顶层OU, 不写子OU
如:ou=aaa,ou=bbb,ou=ccc,dc=jumpserver,dc=org,可以只写ou=ccc,dc=jumpserver,dc=org,根据需求自行修改
用户过滤器 筛选用户的规则, 点击测试连接就是根据这个规则到用户OU里面去检索用户, 可以自定义规则
如:(uid=%(user)s) 或 (sAMAccountName=%(user)s) 等, 这里的属性需要与下面的属性映射设置一致
LADP属性映射 username name email 这三项不可修改删除, 属性映射的字段必须存在, 且登录用户名和邮件不可以重复
如:{"username": "uid", "name": "sn", "email": "mail"} 或 {"username": "sAMAccountName", "name": "cn", "email": "mail"}
"username": "uid" 这里的 uid 必须和上面的 (uid=%(user)s) 这里的 uid 一致
如果上面是(sAMAccountName=%(user)s) 那么下面也应该修改为{"username": "sAMAccountName",
username 是 jumpserver 的用户用户名, name 是 jumpserver 的用户名称, mail 是 jumpserver 用户的邮箱
属性映射的意思是把ldap的什么属性来作为jumpserver的用户用户名, 把ldap的什么属性作为jumpserver的用户名称, 把ldap的什么属性作为jumpserver的用户邮箱
1、Jms_guacamole 常见问题
(连接Windows客户端,启动异常、启动失败或者 Web 连接资产提示无权限访问、黑屏、白屏等)
- Jms_guacamole 是指 https://github.com/jumpserver/docker-guacamole 项目
- Jms_guacamole 默认的路径为 /opt/docker-guacamole
- Jms_guacamole 启动异常、启动失败或者 Web 连接资产提示无权限访问、黑屏、白屏等# 检查 BOOTSTRAP_TOKEN 与 jumpserver 的 BOOTSTRAP_TOKEN 是否一致$ cat /opt/jumpserver/config.yml | grep BOOTSTRAP_TOKEN# 首先到 web - 会话管理 - 终端管理 里面删除 guacamole 的注册 [gua]xxxxxxx ( 在线显示红色的那个 )
# 如果是极速安装部署的 guacamole $ docker stop jms_guacamole $ docker rm jms_guacamole $ Server_IP=`ip addr | grep 'state UP' -A2 | grep inet | egrep -v '(127.0.0.1|inet6|docker)' | awk '{print $2}' | tr -d "addr:" | head -n 1 | cut -d / -f1` $ docker run --name jms_guacamole -d -p 127.0.0.1:8081:8080 -e JUMPSERVER_SERVER=http://$Server_IP:8080 -e BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN -e GUACAMOLE_LOG_LEVEL=ERROR --restart=always jumpserver/jms_guacamole:1.5.7 # cat /opt/jumpserver/config.yml | grep BOOTSTRAP_TOKEN #个性化配置 BOOTSTRAP_TOKEN: CTKNiMDAh1MXurgq # docker run --name jms_guacamole -d -p 127.0.0.1:8081:8080 -e JUMPSERVER_SERVER=http://$Server_IP:8080 -e BOOTSTRAP_TOKEN=CTKNiMDAh1MXurgq -e GUACAMOLE_LOG_LEVEL=ERROR --restart=always wojiushixiaobai/jms_guacamole:1.5.7 # 如果是正常部署的 guacamole $ vi ~/.bashrc ... BOOTSTRAP_TOKEN=xxxxx # 自行修改这里的 BOOTSTRAP_TOKEN 与 JumpServer 的一致 ... $ rm -rf /config/guacamole/keys/* $ /etc/init.d/guacd start $ sh /config/tomcat9/bin/startup.sh
更多内容,可以参数官方手册:https://jumpserver.readthedocs.io/zh/master
2、VNC 资产连接问题(连接MacOS,报错无法连接)
MacOS资产信息,修改VNC 端口为5900 。