1.开源堡垒机Jumpserver介绍
- 官网www.jumpserver.ori
- Jumpserver是一款使用Python,Django开发的开源跳板机系统,助力互联网企业高效用户、资产、权限、审计管理
- Auth统一认证
- CMDB资产管理
- 统一授权
- 日志审计
- 自动化运维
- 最新版python3.6,django1.11
2. Jumpserver软件安装部署
①. 安装依赖rpm
[root@jumpserver-01 ~]# yum -y install epel-release <- 安装epel源信息
[root@jumpserver-01 ~]# yum -y install git python-pip mysql-devel gcc automake autoconf python-devel vim sshpass lrzsz readline-devel
说明:软件部署安装前,要先将jumpserver软件的相关依赖软件包安装完毕
②软件依赖包功能说明:
依赖软件包名称 依赖软件包说明 备注说明 git 代码程序版本控制软件利用git命令克隆下载相关软件包 python-pip 是一个安装和管理 Python 包的工具 ,是easy_install的替代品 类似于linux系统中下载软件的yum mysql-devel 数据库相关的软件包 gcc GNU编译器套件(GNU Compiler Collection)包括C、C++、Objective-C、 Fortran、Java、Ada和Go语言的前端,也包括了这些语言的库(如libstdc+ +、libgcj等等)。 GCC的初衷是为GNU操作系统专门编写的一款编译器。 automake 自动编译工具 优化了linux系统中make命令 autoconf 自动配置工具 优化了linux系统 python-devel 相关python依赖库文件下载 vim linux系统中的文本编辑软件,比传统的vi编辑工具更加强大 sshpass ansible软件中的密码管理输出软件 lrzsz linux系统中软件本地上传与下载工具包 readline-devel python语言中的自动补全功能软件
③. 下载Jumpserver
[root@linux-node1 ~]# cd /opt [root@linux-node1 opt]# git clone https://github.com/jumpserver/jumpserver.git 说明:如果从github上下载克隆jumpserver软件比较慢,可以利用下面的方法,从国内的github上进行下载软件 # 从国内的github上进行软件的下载 https://coding.net/ [root@linux-node1 opt]# git clone https://git.coding.net/jumpserver/jumpserver.git 说明:原则上如果网络条件好,可以从github上进行下载,github上是最新的,但conding上也会进行实时更新cd jumpserver[root@linux-node1 jumpserver]# git branch <-master分支 * master
④.执行快速安装脚本
[root@linux-node1 opt]# cd jumpserver/install && pip install -r requirements.txt <- 执行安装python依赖库 [root@linux-node1 install]# cat requirements.txt <- 查看一下需要安装的依赖包 #sphinx-me==0.3 django==1.6 pycrypto==2.6.1 paramiko==1.16.0 ecdsa==0.13 MySQL-python==1.2.5 #django-uuidfield==0.5.0 psutil==3.3.0 xlsxwriter==0.7.7 xlrd==0.9.4 django-bootstrap-form==3.2 tornado==4.3 ansible==1.9.4 pyinotify==0.9.6 passlib==1.6.5 argparse==1.4.0 django_crontab==0.6.0 说明:根据提示输入相关信息,完成安装,完成安装后,请访问web,继续查看后续文档,如果启动失败,请返回上层目录, 手动运行./service.sh restart 启动 默认账号密码 admin 5Lov@wife #命令说明 说明:利用pip install命令进行安装相应软件 -r, --requirement <file> Install from the given requirements file. This option can be used multiple times. 安装软件信息通过给定的需求文件。这个参数可以被多次使用 # pip源也可以更新国内源,利用阿里的pip国内源 # 在~/.pip/pip.conf文件中添加或修改 [global] index-url = http://mirrors.aliyun.com/pypi/simple/ [install] trusted-host=mirrors.aliyun.com
5.检查软件是否安装完毕
[root@linux-node1 install]# pip freeze freeze Output installed packages in requirements format. 输出安装的包按照requirements文件格式输出
6.执行python的安装脚本
#注释说明
因为CentOs7的数据库默认是mariadb,所以做如下更改
[root@linux-node1 install]# cp install.py{,.ori}
[root@linux-node1 install]# sed -i 's#mysql-devel#mariadb-devel#g;s#mysql-server#mariadb-server#g;s#service mysqld start#systemctl start mariadb.service#g' install.py
#执行python安装脚本
[root@linux-node1 install]# python install.py
#补充说明需要进行授权密码 请务必先查看wiki https://github.com/ibuler/jumpserver/wiki/Quickinstall
开始关闭防火墙和selinux <- 安装脚本会协助运维人员关闭selinux和防火墙
请输入您服务器的IP地址,用户浏览器可以访问 [118.190.201.11]: <- 定于web访问时所使用的ip地址
是否安装新的MySQL服务器? (y/n) [y]: y <- 安装mysql数据库软件,并创建数据库 开始安装设置mysql (请手动设置mysql安全)
默认用户名: jumpserver 默认密码: 5Lov@wife 连接数据库成功 请输入SMTP地址: smtp.163.com <- 定义邮件服务器地址,用于jumpserver发送邮件使用
请输入SMTP端口 [25]: 请输入账户: xxxxxx 请输入密码: xxxxxx 请登陆邮箱查收邮件, 然后确认是否继续安装 是否继续? (y/n) [y]:
请输入管理员用户名 [admin]: admin
请输入管理员密码: [5Lov@wife]: admin
请再次输入管理员密码: [5Lov@wife]: admin Starting jumpsever service: [ OK ]
安装成功,请访问web, 祝你使用愉快。 请访问 https://github.com/ibuler/jumpserver
查看文档
说明:此时表示jumpserver软件已经安装成功,并能正常进行web访问了 以上配置操作都会存放在jumpserver.conf配置文件中,后续需要修改可以直接修改配置文件即可
2.1常见错误说明
①. Crypto,getStrongprime,HAVE_DECL_MPZ_POWM_SEC等错误
# 很常见的错误,通常是由 pycrypto的版本问题,请卸载重新安装 开始写入配置文件 Traceback (most recent call last): File "/opt/jumpserver/install/next.py", line 19, in <module> from juser.user_api import db_add_user, get_object, User File "/opt/jumpserver/juser/user_api.py", line 3, in <module> from Crypto.PublicKey import RSA File "/usr/lib64/python2.6/site-packages/Crypto/PublicKey/RSA.py", line 75, in <module> from Crypto.Util.number import getRandomRange, bytes_to_long, long_to_bytes File "/usr/lib64/python2.6/site-packages/Crypto/Util/number.py", line 56, in <module> if _fastmath is not None and not _fastmath.HAVE_DECL_MPZ_POWM_SEC: AttributeError: 'module' object has no attribute 'HAVE_DECL_MPZ_POWM_SEC' > pip uninstall pycrypto > rm -rf /usr/lib64/python2.6/site-packages/Crypto/ > rm -rf /usr/lib64/python2.6/site-packages/pycrypto-2.6.1-py2.6-linux-x86_64.egg (大部分不执行这条就能解决) > pip install pycrypto==2.4.1
②. jumpserver软件启动异常
[root@linux-node1 jumpserver]# ./service.sh restart Stopping jumpsever service: [确定] Starting jumpsever service: [确定] 说明:安装脚本出现jumpserver服务启动异常,可以利用jumpserver启动脚本对服务进行重新启动 可能有时启动仍旧不成功,会提示jinja2模板有问题,导致不能成功启动jumpserver服务,主要是由于系统环境问题导致 遇到jinja2模块问题,建议删除原有模块,利用pip install Jinja2==2.9.6 命令进行重新下载jinja2模块
2.2验证
①.检查jumpserver启动是否正常
[root@linux-node1 jumpserver]# ps -ef|grep python root 1099 1 0 09:07 ? 00:00:02 /usr/bin/python -Es /usr/sbin/tuned -l -P root 17943 17940 0 12:01 pts/1 00:00:00 /bin/bash -c ulimit -S -c 0 >/dev/null 2>&1 ; python /opt/jumpserver/manage.py runserver 0.0.0.0:80 root 17944 17941 0 12:01 pts/1 00:00:00 /bin/bash -c ulimit -S -c 0 >/dev/null 2>&1 ; python /opt/jumpserver/run_websocket.py root 17945 17944 0 12:01 pts/1 00:00:03 python /opt/jumpserver/run_websocket.py root 17946 17943 0 12:01 pts/1 00:00:01 python /opt/jumpserver/manage.py runserver 0.0.0.0:80 root 17951 17946 1 12:01 pts/1 00:00:07 /bin/python /opt/jumpserver/manage.py runserver 0.0.0.0:80 root 17955 17945 0 12:01 pts/1 00:00:00 python /opt/jumpserver/run_websocket.py root 17956 17945 0 12:01 pts/1 00:00:00 python /opt/jumpserver/run_websocket.py root 17960 17945 0 12:01 pts/1 00:00:00 python /opt/jumpserver/run_websocket.py root 17961 17945 0 12:01 pts/1 00:00:00 python /opt/jumpserver/run_websocket.py root 17962 17945 0 12:01 pts/1 00:00:00 python /opt/jumpserver/run_websocket.py
②.也可采用纯手工方式启动jumpserver进程
[root@linux-node1 jumpserver]# yum install screen -y <- 安装一下screen软件 [root@linux-node1 jumpserver]# screen <- 进入到一个新的screen会话窗口中,运行python的web程序 [root@linux-node1 ~]# cd /opt/jumpserver/ [root@linux-node1 jumpserver]# python manage.py runserver 0.0.0.0:80 Validating models... 0 errors found June 26, 2017 - 18:13:43 Django version 1.6, using settings 'jumpserver.settings' Starting development server at http://0.0.0.0:80/ Quit the server with CONTROL-C. [root@linux-node1 ~]# screen [root@linux-node1 ~]# cd /opt/jumpserver/ [root@linux-node1 jumpserver]# python run_websocket.py [I 170626 18:25:21 process:136] Starting 5 processes Run server on 0.0.0.0:3000 Run server on 0.0.0.0:3000 Run server on 0.0.0.0:3000 Run server on 0.0.0.0:3000 Run server on 0.0.0.0:3000 说明:screen命令能在不同会话间断开或重连。当一个命令正在执行时按“Ctrl + A”然后再按“d”来断开。 # 查看screen连接的会话信息 [root@linux-node1 ~]# screen -ls There is a screen on: 6922.pts-0.linux-node1 (Detached) 6959.pts-0.linux-node1 (Detached) 2 Sockets in /var/run/screen/S-root. # 重新连接screen会话信息 [root@linux-node1 ~]# screen -r 6922.pts-0.jumpserver-01 [root@jumpserver-01 ~]# cd /opt/jumpserver/ [root@linux-node1 jumpserver]# python manage.py runserver 0.0.0.0:80 Validating models... # log日志查看方法 [root@linux-node1 jumpserver]# cd logs/ [root@linux-node1 logs]# pwd /opt/jumpserver/logs [root@linux-node1 logs]# tail -f jumpserver.log
3.登录软件web界面操作
利用浏览器登录到jumpserver登录界面
界面管理配置操作官方资料:
https://github.com/jumpserver/jumpserver/wiki/%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B
①. 添加用户
用户管理 – 查看用户 – 添加用户 填写基本信息,完成用户添加
用户添加完成后,根据提示记住用户账号密码,换个浏览器登录下载key,
ssh登录jumpserver测试
创建的用户是给普通员工所使用
为创建好的普通员工发送邮件通知信息
提示用户添加成功,并且可以收到通知邮件信息
邮件内容
说明信息: web界面创建用户信息,实质上在程序内部做了两件事 ①. 在jumpserver服务程序的数据库中相应表中,添加了新的用户信息 ②. 在jumpserver的服务系统中,利用useradd命令创建出来相应的普通用户,并且会生成用户对应的公钥和私钥,利用密钥登录跳板机 普通用户还有一个重要作用,可以用来登录jumpserver的web管理界面
②. 添加资产
资产管理 – 查看资产 – 添加资产 填写基本信息,完成资产添加
添加资产实质的作用是添加通过跳板机可以管理的主机信息
选择单台添加,设置好主机名或IP地址,可以选择管理账号,勾选默认配置
使用默认表示选择默认的用户配置—选择【设置】—编辑【默认设置】,表示定义管理账户的默认设置 如果没有设置,默认是无法进行勾选的
定义管理权限用户,必须在被管理资产主机上真实存在的,并且是具有创建用户 删除用户的等权限的管理用户,比如root
管理用户设置完成,点击提交
输出以下提示信息,表示主机资产添加成功
操作疑问:
如果被管理资产主机上没有root用户如何,或者没有授权开发root用户,该如何添加管理用户?
添加默认管理用户设置
有可能公司所有主机的管理用户和账号密码是一致的,就可以设置默认管理用户
#在资产主机中创建默认管理用户admin [root@linux-node2 ~]# useradd admin [root@linux-node2 ~]# echo 123456|passwd --stdin admin Changing password for user admin. passwd: all authentication tokens updated successfully. [root@linux-node2 ~]# sed -i '98a admin ALL=(ALL) NOPASSWD: ALL' /etc/sudoers <- 设置非root管理用户的sudo权限
如果采用的是密钥登录,也可以在下面的界面输入私钥信息,设置完毕点击确认保存
默认管理用户设置完成
添加资产主机是以主机名作为主键识别唯一性的,可以更改主机名称,再添加一台相同的资产主机
此种逻辑设置,主要考虑到通过远程登录时,公网IP一样,端口映射不一样,所以主机名唯一,ip地址可以进行重复使用
至此,用户添加完毕,主机资产添加完毕,下面就要对管理权限进行授权了
③. 授权管理
添加sudo
授权管理 – Sudo – 添加别名 输入别名名称和命令,完成sudo添加
默认跳板机创建的用户都是普通用户,所以需要依赖sudo命令别名功能,使之普通用户具有相应权限,操作管理用户的命令
出现如下提示信息,表示sudo别名命令就创建完毕了
添加系统用户
授权管理 – 系统用户 – 添加 输入基本信息,完成系统用户添加
#知识点总结回顾
普通用户:实际上类似于公司的员工,不同的员工可以利用创建的普通用户,登录跳板机界面进行管理jumpserver跳板机
管理用户:是必须在系统中存在的用户,后续执行一些特殊权限命令,都需要借助管理用户,比如创建新的的用户信息等
默认用户:就是默认管理用户,有时公司的全部主机会有一个共有的管理用户,比如root用户,就可以进行管理用户的默认配置
系统用户:表示用于管理系统的用户,比如网络系统用户为netadmin 开发为devadmin 运维为sa等,根据职能需求进行创建
系统用户是被管理用户所创建出来的
系统用户进行关联相应sudo权限,并且可以初始化不设置密码信息,后续会自动生成
推送系统用户
授权管理 – 推送 – 选择需要推送的资产或资产组完成推送
推送只支持服务器,使用密钥是指用户从跳板机跳转时使用key,反之使用密码,
授权时会检查推送记录,如果没有推送过则无法完成系统用户在该资产上的授权。
如果资产是网络设备,请不要选择密码和秘钥,模拟一下推送,目的是为了生成推送记录。
系统用户配置完毕后,需要利用【推送】功能,将需要创建的用户信息,通过ansible批量告知被管理客户端,进行相应用户的创建
#查看用户信息 [root@linux-node2 ~]# id devadmin id: devadmin: no such user 说明:在推送系统之前,被管理主机客户端是没有定义的devadmin用户信息的;只有推送之后才有的
进行系统用户devadmin的推送
如下图所示,系统用户推送成功
#命令行检查客户端信息,确认用户是否推送成功 [root@linux-node2 ~]# id devadmin uid=1001(devadmin) gid=1001(devadmin) groups=1001(devadmin) 说明:检验完毕,系统用户推送成功 补充说明:模拟推送失败过程 ①. 开启主机selinux,并且确认客户端主机未安装libselinux-python软件 ②. 回收dev系统用户 ③. 重新进行推送 思考:理解推送过程逻辑原理,大致理解libselinux-python软件包作用
添加授权规则
授权管理 – 授权规则 – 添加规则 选择刚才添加的用户,资产,系统用户完成授权
如果资产中存在没有系统用户推送记录的资产信息,就会输出以下错误信息
重新进行配置调整后,进行重新授权
上述报错,是由于存在一些资产信息,没有系统用户推送记录导致,为避免这种问题再次出现,可以将所用资产的系统用户都推送一下
对未推送过系统用户资产,进行系统用户推送
重新修改授权信息
授权用户进行调整,授权资产信息也重新进行调整
利用资产中的连接,进行连接测试,会报错误信息如下图所示
然而,报没有授权系统用户的的信息
提示以上错误,是因为没有对admin超级管理进行资产信息的授权,下面对admin用户也进行资产授权 取消掉一个普通用户,添加一个管理员用户,然后重新进行授权
打开资产中的连接,进行连接测试
④. 测试登录
用户下载key 登录跳板机,会自动运行connect.py,根据提示登录服务器
用户登陆web 查看授权的主机,点击后面的链接,测试是否可以登录服务器
利用jumpserver即可实现连接相应的主机,进行操作管理,并且使用的系统用户就是之前创建的devadmin用户
查看devadmin系统用户的sudo定义的权限信息是否正确
说明信息: 以上连接主机过程,需要依赖之前启动的run_websocket.py 程序服务,否则会出现连接异常问题
⑤. 监控和结束会话
日志审计 – 在线 查看当前登录的用户登录情况,点击监控查看用户执行的命令, 点击阻断,结束用户的会话
重新建立新的浏览窗口,进行监控查看
通过跳板机连接资产主机,输入相应的命令,都会被实时监控到
通过资产操作抓取资产主机硬件信息
如下信息
可以把主机资产信息批量导出,进行资产管理
还可以对所用资产主机进行批量执行命令,实现主机资产批量管理
⑥. 执行命令
测试命令的执行,命令记录查看 批量执行命令的日志
批量执行的命令操作也是有相应操作记录的
⑦. 查看历史记录
日志审计 – 登录历史 查看登录历史,点击统计查看命令历史,点击回放查看录像
4. Jumpserver软件web界面操作-普通用户界面操作
普通用户进行登录
用户名为之前创建的普通用户用户名,密码为邮件发送告知,进行登录
普通用户进行资产主机连接管理,操作步骤基本和上面的admin管理员操作步骤一致
说明信息: 普通用户下是没有审计功能,所以无法对资产主机进行监控管理,只有管理员admin有权限进行对运维人员的操作监控管理
上传下载-此处不再进行演示
测试文件的上传下载,日志审计 – 上传下载 查看上传下载记录
主要是对普通用户进行监控,对系统上的资源文件,进行过哪些上传和下载操作
5. Jumpserver软件命令行界面操作
要用admin用户进行命令行操作管理
[root@linux-node1 jumpserver]# python connect.py 没有该用户,或许你是以root运行的 No that user. [root@linux-node1 jumpserver]# su - admin [admin@linux-node1 ~]$ cd /opt/jumpserver/ [admin@linux-node1 jumpserver]$ python connect.py ### 欢迎使用Jumpserver开源跳板机系统 ### 1) 输入 ID 直接登录. 2) 输入 / + IP, 主机名 or 备注 搜索. 3) 输入 P/p 显示您有权限的主机. 4) 输入 G/g 显示您有权限的主机组. 5) 输入 G/g + 组ID 显示该组下主机. 6) 输入 E/e 批量执行命令. 7) 输入 U/u 批量上传文件. 8) 输入 D/d 批量下载文件. 9) 输入 H/h 帮助. 0) 输入 Q/q 退出. Opt or ID>:
切换到普通用户oldboy进行命令行操作
[root@linux-node1 jumpserver]# su - John
### 欢迎使用Jumpserver开源跳板机系统 ###
1) 输入 ID 直接登录.
2) 输入 / + IP, 主机名 or 备注 搜索.
3) 输入 P/p 显示您有权限的主机.
4) 输入 G/g 显示您有权限的主机组.
5) 输入 G/g + 组ID 显示该组下主机.
6) 输入 E/e 批量执行命令.
7) 输入 U/u 批量上传文件.
8) 输入 D/d 批量下载文件.
9) 输入 H/h 帮助.
0) 输入 Q/q 退出.
Opt or ID>:
补充说明:
发现直接就进入到跳板机的命令行界面,因为在/etc/profile.d 目录当中存在一个跳板机脚本 zzjumpserver.sh
模拟利用John普通用户进行管理资产主机
通过邮件信息首先下载key密钥信息或者web界面查看主机也能进行下载
利用xshell的密钥登录主机方法,将密钥进行导入,即可直接通过密钥登录到跳板机命令行界面
[c:\~]$ ssh John@118.190.201.11 Connecting to 118.190.201.11:22... Connection established. To escape to local shell, press Ctrl+Alt+]. Last login: Sat Jul 28 19:35:26 2018 from 118.190.201.1 ### 欢迎使用Jumpserver开源跳板机系统 ### 1) 输入 ID 直接登录. 2) 输入 / + IP, 主机名 or 备注 搜索. 3) 输入 P/p 显示您有权限的主机. 4) 输入 G/g 显示您有权限的主机组. 5) 输入 G/g + 组ID 显示该组下主机. 6) 输入 E/e 批量执行命令. 7) 输入 U/u 批量上传文件. 8) 输入 D/d 批量下载文件. 9) 输入 H/h 帮助. 0) 输入 Q/q 退出. Opt or ID>: / [ID ] 主机名 IP 端口 系统用户 备注 [0 ] linux-node2.example.com 118.190.201.12 22 ['devadmin'] [1 ] linux-node3.example.com 118.190.201.12 22 ['devadmin'] Opt or ID>: 0 Last login: Sat Jul 28 19:27:02 2018 [devadmin@linux-node2 ~]$ #显示有权限管理的主机信息 Opt or ID>: p [ID ] 主机名 IP 端口 系统用户 备注 [0 ] jumpclient-01 10.0.0.71 22 ['dev'] [1 ] dbmaster-01 10.0.0.71 22 ['dev'] # 直接输入ID信息,进行登录主机 Opt or ID>: 0 Last login: Tue Jun 27 03:08:36 2017 from 10.0.0.70 [dev@jumpserver-02 ~]$ #显示帮助信息界面 Opt or ID>: h ### 欢迎使用Jumpserver开源跳板机系统 ### 1) 输入 ID 直接登录. 2) 输入 / + IP, 主机名 or 备注 搜索. 3) 输入 P/p 显示您有权限的主机. 4) 输入 G/g 显示您有权限的主机组. 5) 输入 G/g + 组ID 显示该组下主机. 6) 输入 E/e 批量执行命令. 7) 输入 U/u 批量上传文件. 8) 输入 D/d 批量下载文件. 9) 输入 H/h 帮助. 0) 输入 Q/q 退出. #利用搜索功能搜索主机信息 Opt or ID>: /linux [ID ] 主机名 IP 端口 系统用户 备注 [0 ] linux-node2.example.com 118.190.201.12 22 ['devadmin'] [1 ] linux-node3.example.com 118.190.201.12 22 ['devadmin']
- 转载请注明来源:堡垒机Jumpserver部署实践
- 本文永久链接地址:https://www.xionghaier.cn/archives/576.html