Jumpserver 使用说明
1、MFA 使用说明
Multi-Factor Authentication (MFA) 遵循基于时间的一次性密码 (TOTP) 标准 (RFC 6238)
# 关闭也是在这里, 点击此处的重置即可
# 部分安卓手机无法使用 Google Authenticator, 可以尝试使用系统自带的【扫一扫】工具
# 或者尝试使用第三方软件 (如 Microsoft Authenticator 、身份宝 等)
MFA遗失无法登陆
# 普通用户联系管理员关闭MFA, 登录成功后用户在个人信息里面重新绑定. # 如果管理员遗失无法登陆, 修改数据库 users_user 表对应用户的 otp_level 为 0, 重新登陆绑定即可 $ mysql -uroot > use jumpserver; > update users_user set otp_level='0' where username='admin'; # admin 为你要修改的用户 # 如果在系统设置里面开启的 MFA 二次认证, 需要修改数据库 settings 表 SECURITY_MFA_AUTH 的 value 值为 false mysql -uroot > use jumpserver; > update settings set value='false' where name='SECURITY_MFA_AUTH';
2、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的用户邮箱
3、sftp 使用说明
在Windows上使用 sftp 工具传输文件到 Linux 系统, 默认的上传目录在 /tmp
# 连接成功后, 可以看到当前拥有权限的资产, 打开资产, 然后选择系统用户, 即可到资产的 /tmp 目录 $ sftp -P2222 admin@192.168.244.144 # Linux 语法 $ sftp 2222 admin@192.168.244.144 # xshell 语法 $ ls 列出资产目录 $ cd 你的资产 $ ls 列出你的系统用户 $ cd 你的系统用户 # 此处即是当前资产的 home 目录
如果需要修改 /tmp 为其他目录
$ vi coco/conf.yml # SFTP的根目录, 可选 /tmp, Home其他自定义目录 SFTP_ROOT: /tmp # SFTP是否显示隐藏文件 # SFTP_SHOW_HIDDEN_FILE: false
4、Telnet 使用说明
资产的创建与系统用户的创建选择telnet
- telnet 连不上
# 需要在 Web "系统设置"-"终端设置" 添加成功判断代码 # 是 通过 "tenlet" 命令登录 telnet设备 "成功" 的返回字符串 # 保存后需要重启coco组件
- 举例
$ telnet 172.16.0.1 Login authentication login: admin password: ********* Info: The max number or VTY users is 10, and the number of current VTY users on line is 1. <RA-L7-RD> # 把 <RA-L7-RD> 写入到 Web "系统设置"-"终端设置"-"Telnet 成功正则表达式" 里面, 多个不一样的字符串用 | 隔开, 如 <RA-L7-RD>|<CHXZ-Group-S7503-LB2>|success|成功 # <RA-L7-RD> 正则可用 <.*>+? 表示
5、Docker 使用说明
- 查看所有镜像
$ docker images
- 查看所有创建的容器
$ docker ps -a
- 查看正在运行的容器
$ docker ps
- 进入正在运行的容器
$ docker exec -it <容器的 CONTAINER ID 或者 容器 NAMES > /bin/bash # 例: $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ecda634206af jumpserver/guacamole:test "/init" 12 days ago Up 3 days 0.0.0.0:8081->8080/tcp jms_guacamole $ docker exec -it ecda634206af /bin/bash 或 docker exec -it jms_guacamole /bin/bash
- 开始 停止 重启 容器
$ docker start <容器的 CONTAINER ID 或者 容器 NAMES > $ docker stop <容器的 CONTAINER ID 或者 容器 NAMES > $ docker restart <容器的 CONTAINER ID 或者 容器 NAMES >
# 例:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ecda634206af jumpserver/guacamole:test "/init" 12 days ago Up 3 days 0.0.0.0:8081->8080/tcp jms_guacamole
$ docker start ecda634206af 或 docker start jms_guacamole
$ docker stop ecda634206af 或 docker stop jms_guacamole
$ docker restart ecda634206af 或 docker restart jms_guacamole
- 查看容器 log
$ docker logs -f <容器的 CONTAINER ID 或者 容器 NAMES > # 例: $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ecda634206af jumpserver/guacamole:test "/init" 12 days ago Up 3 days 0.0.0.0:8081->8080/tcp jms_guacamole $ docker logs -f ecda634206af 或 docker logs -f jms_guacamole
- 删除容器
$ docker rm <容器的 CONTAINER ID 或者 容器 NAMES > # 例: $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ecda634206af jumpserver/guacamole:test "/init" 12 days ago Up 3 days 0.0.0.0:8081->8080/tcp jms_guacamole $ docker rm ecda634206af 或 docker rm jms_guacamole
- 删除镜像
$ docker rmi <镜像的 CONTAINER ID> # 例: $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE jumpserver/guacamole test e0c2ec53a8fd 13 days ago 1.23GB $ docker rmi e0c2ec53a8fd
- 更新镜像
$ docker pull <镜像地址:版本> # 例: $ docker pull jumpserver/jms_all:latest $ docker pull jumpserver/jms_coco:1.4.8 $ docker pull jumpserver/jms_guacamole:1.4.8
6、Radius 使用说明
支持使用 Radius 的用户作为 jumpserver 登录用户
- 修改 Jumpserver 配置文件启用 Radius 认证
$ vi /opt/jumpserver/config.yml # 在最后新增下面内容 AUTH_RADIUS: True RADIUS_SERVER: 127.0.0.1 RADIUS_PORT: 1812 RADIUS_SECRET: radius_secret
# 修改完成后保存, 重启 jumpserver 即可
- 设置参数说明
# RADIUS_SERVER: 127.0.0.1 是 Radius 服务器的IP地址 # RADIUS_PORT: 1812 是 Radius 服务器的端口 # RADIUS_SECRET: radius_secret 是 Radius 服务器的预共享秘钥 # freeradius 的 SECRET 在 clients.conf 里面 # 思科的 SECRET 可以从 web 页面的 RADIUS Authentication Settings 里面的 Shared Secret 获取 # 华为的 SECRET 可以从 web 页面的 Authentication Options 里面的 Shared Secret 获取 # 其他厂商的请自行咨询相关厂商工作人员 # 实际案例 AUTH_RADIUS: True RADIUS_SERVER: 47.98.186.18 RADIUS_PORT: 1812 RADIUS_SECRET: testing123
7、Firewalld 使用说明
- 打开 firewalld
$ systemctl start firewalld
- 端口允许被某固定 IP 访问
$ firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="允许访问的IP" port protocol="tcp" port="端口" accept" $ firewall-cmd --reload # 重载规则, 才能生效 $ firewall-cmd --list-all # 查看使用中的规则 # 举例 # 允许 192.168.100.166 访问 6379 端口 $ firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.100.166" port protocol="tcp" port="6379" accept" # 允许 172.16.10.166 访问 3306 端口 $ firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="172.16.10.166" port protocol="tcp" port="3306" accept" # 允许 10.10.10.166 访问 8080 端口 $ firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.10.10.166" port protocol="tcp" port="8080" accept" $ firewall-cmd --reload # 重载规则, 才能生效 # 删除规则( add 改成 remove ) $ firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.100.166" port protocol="tcp" port="6379" accept" $ firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="172.16.10.166" port protocol="tcp" port="3306" accept" $ firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="10.10.10.166" port protocol="tcp" port="8080" accept" $ firewall-cmd --reload # 重载规则, 才能生效
- 端口允许所有 IP 访问
$ firewall-cmd --zone=public --add-port=端口/tcp --permanent $ firewall-cmd --reload # 重载规则, 才能生效 $ firewall-cmd --list-all # 查看使用中的规则 # 举例 # 允许访问 2222 端口 $ firewall-cmd --zone=public --add-port=2222/tcp --permanent # 允许访问 8080 端口 $ firewall-cmd --zone=public --add-port=8080/tcp --permanent # 删除规则( add 改成 remove ) $ firewall-cmd --zone=public --remove-port=2222/tcp --permanent $ firewall-cmd --zone=public --remove-port=8080/tcp --permanent $ firewall-cmd --reload # 重载规则, 才能生效
8、添加组织及组织管理员说明
- jumpserver 1.4.0 或之后版本
$ source /opt/py3/bin/activate $ cd /opt/jumpserver/apps $ python manage.py shell >>> from assets.models import Asset >>> from orgs.models import Organization >>> from users.models import User >>> dev_org = Organization.objects.create(name='开发部') >>> user = User.objects.create(name='用户', username='user', email='user@jumpserver.org') >>> user.set_password('PassWord') >>> user.save() >>> dev_org.admins.add(user) >>> dev_org.users.add(user) >>> exit() # 然后使用 user 用户登录 jumpserver 即可
- 向现有组织加入管理员
$ source /opt/py3/bin/activate $ cd /opt/jumpserver/apps $ python manage.py shell >>> from assets.models import Asset >>> from orgs.models import Organization >>> from users.models import User >>> dev_org = Organization.objects.get(name='开发部') >>> user = User.objects.get(username='admin') >>> dev_org.admins.add(user) >>> exit()
- 向现有组织加入已存在用户
$ source /opt/py3/bin/activate $ cd /opt/jumpserver/apps $ python manage.py shell >>> from assets.models import Asset >>> from orgs.models import Organization >>> from users.models import User >>> dev_org = Organization.objects.get(name='开发部') >>> user = User.objects.get(username='admin') >>> dev_org.users.add(user) >>> exit()
- 向现有组织加入新建的用户
$ source /opt/py3/bin/activate $ cd /opt/jumpserver/apps $ python manage.py shell >>> from assets.models import Asset >>> from orgs.models import Organization >>> from users.models import User >>> dev_org = Organization.objects.get(name='开发部') >>> user = User.objects.create(name='测试用户', username='test', email='test@jumpserver.org') >>> user.set_password('PassWord') >>> user.save() >>> dev_org.users.add(user) >>> exit()