Jumpserver堡垒机
一、Jumpserver堡垒机概述-部署Jumpserver运行环境
01 跳板机概述
跳板机就是一台服务器,开发或运维人员在维护过程中首先要统一登录到这台服务器,然后再登录到目标设备进行维护和操作。
跳板机缺点:没有实现对运维或开发人员操作行为的控制和审计,使用跳板机的过程中还是会出现误操作、违规操作导致的事故,一旦出现操作事故很难快速定位到原因和责任人。
02 堡垒机概述
堡垒机,即在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的入侵和破坏,而运用各种技术手段实时收集和监控网络环境中每一个组成部分的系统状态、安全事件、网络活动,以便集中报警、及时处理及审计定责。
总结:堡垒机比跳板机多了实时收集、监控网络环境、集中报警等功能。
03 jumpserver概述
Jumpserver是一款使用Python、Django开发的开源跳板机系统。为互联网企业提供了认证,授权,审计,自动化运维等功能。
官方网址: http://www.jumpserver.org
jumpserver堡垒机组件说明:
1、Jumpserver:现指 Jumpserver 管理后台,是核心组件(Core),使用 Django Class Based View (Django基于类的视图)风格开发,支持 Restful API。
2、Coco:实现了 SSH Server 和 Web Terminal Server 的组件,提供 SSH 和 WebSocket 接口, 使用 Paramiko 和 Flask 开发。
3、Luna:现在是 Web Terminal 前端,计划前端页面都由该项目提供,Jumpserver 只提供 API,不再负责后台渲染html等。
04 部署jumpserver运行环境
实验环境:
一台jumpserver服务端
一台或几台服务器资源,作为被管理的服务器
上传依赖软件到到Linux系统/opt目录下并解压:
修改字符集,否则可能报 input/output error的问题,因为日志里打印了中文。所以必须要修改字符集为中文。
/etc/locale.conf [root@jumpserver ~]# exit #再重新连接, 这样语言环境就改变了。 登出 [root@jumpserver ~]# cat /etc/locale.conf LANG=zh_CN.UTF-8 " src="file:///C:/Users/15293/AppData/Local/Temp/msohtmlclip1/01/clip_image004.png" v:shapes="文本框_x0020_1">
05 准备python3和python虚拟环境
1、安装依赖包
注:安装前可以开启yum缓存功能,把软件包下载下来方便后期使用。
2、编译安装python3.6.1
# 这里必须执行编译安装,否则在安装 Python 库依赖时会有麻烦...
注:在线下载 wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz
3、建立Python虚拟环境
解决python2.7和python3.5冲突了怎么办?老程序需要使用2.7,新程序需要3.6?
因为 CentOS 6/7 自带的是 Python2,而Yum等工具依赖原来的Python,为了不扰乱原来的环境我们使用Python虚拟环境。
看到上面的提示符代表成功,以后运行Jumpserver都要先运行以上source命令,以下所有命令均在该虚拟环境中运行。
06 安装jumpserver1.0.0
1、下载或 Clone 项目
项目提交较多 git clone 时较大,你可以选择去 Github 项目页面直接下载zip包。
注:在线下载方法:
git clone --depth=1 https://github.com/jumpserver/jumpserver.git
cd jumpserver && git checkout master
注:depth用于指定克隆深度,为1即表示只克隆最近一次commit。
2、安装依赖rpm包
3、安装python依赖库
4、安装redis,jumpserver使用redis做cache --缓存
5、安装MySQL
6、创建jumpserver数据库并授权
create database jumpserver default charset 'utf8'; MariaDB [(none)]> grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by '123456'; MariaDB [(none)]> exit " src="file:///C:/Users/15293/AppData/Local/Temp/msohtmlclip1/01/clip_image013.png" v:shapes="文本框_x0020_10">
7、修改jumpserver配置文件
修改连接数据库配置
8、生成数据库表结构和初始化数据库
#注,在执行这一条命令之前,必续保障之前的pip install ./* 命令已经执行完了,不然后导入不了Django等软件包。
9、启动
如果运行失败了,重新启动一下。
#启动服务的脚本,使用方式./jms start|stop|status|restart all 后台运行请添加 -d 参数
10、测试
访问:IP:8080 【用户名:admin,密码:admin】
这里需要使用8080端口来访问页面。后期搭建 nginx 代理,就可以直接使用80端口正常访问了
附上重启的方法:
二、安装Coco组件和ssh server
01 安装Coco组件
1、点击web终端界面,弹出一个新的页面会报错
所以接下来,我们安装luna和coco:
coco概述:coco实现了SSH Server和Web Terminal Server的组件,提供SSH和WebSocket接口,使用Paramiko和Flask开发。
02 查看配置文件并运行
# 新版本更新了运行脚本,使用方式./cocod start|stop|status|restart 后台运行请添加 -d 参数
三、安装web-terminal前端和luna组件并配置nginx整合各个组件
01 安装luna组件
Luna概述:Luna现在是 Web Terminal 前端,计划前端页面都由该项目提供,Jumpserver 只提供 API,不再负责后台渲染html等。
访问(https://github.com/jumpserver/luna/releases)下载对应版本的 release 包,直接解压,不需要编译
解压 Luna
注:在线下载
#wget https://github.com/jumpserver/luna/releases/download/v1.0.0/luna.tar.gz
02 配置nginx整合各个组件
03 修改nginx配置文件并启动
删除第38行到 57行中server {。。。}相关的内容
在vim命令模式,输入38gg,快速跳到38行,然后输入20dd,就可以删除。
删除后,在38行插入以以下内容:
04 测试
测试访问:ip:80 [默认就是80端口]
会话管理—web终端
05 接受Coco注册
会话管理—终端管理—接受
06 测试链接
07 字符界面登录
" src="file:///C:/Users/15293/AppData/Local/Temp/msohtmlclip1/01/clip_image041.png" v:shapes="文本框_x0020_23">
以上说明终端已经连接成功没有任何问题
四、jumpserver平台系统初始化
01 系统基本配置
这里要写上自己真实的URL地址,不然后期用户无法访问。
02 配置邮件服务器
点击页面上边的“邮件设置”,进入邮件设置页面:
配置邮件服务后,点击页面的"测试连接"按钮,如果配置正确,Jumpserver 会发送一条测试邮件到您的 SMTP 账号邮箱里面,邮箱收到邮件后点击提交。
注:配置完后,需要重启一下服务。不然后期创建用户,收不到邮件。
注意: 在使用jumpserver过程中,有一步是系统用户推送,要推送成功,client(后端服务器)要满足以下条件:
1)后端服务器需要有python、sudo环境才能使用推送用户,批量命令等功能
2)后端服务器如果开启了selinux,请安装libselinux-python。一般情况服务器上都关闭了selinux
五、使用jumpserver管理机房服务器
搭建完成后的整体界面
01 用户管理
添加用户和用户组。
用户名即 Jumpserver 登录账号。用户组是用于资产授权,当某个资产对一个用户组授权后,这个用户组下面的所有用户就都可以使用这个资产了。角色用于区分一个用户是管理员还是普通用户。
新用户登录:
这个需要用户自己生成SSH 密钥,方便后期登录:在另一台linux上,使用admin用户生成自己的ssh密钥。
02 创建管理用户
Jumpserver里各个用户的说明
管理用户是服务器的 root,或拥有 NOPASSWD: ALL sudo 权限的用户,Jumpserver 使用该用户来推送系统用户、获取资产硬件信息等。
03 创建系统用户
系统用户是 Jumpserver 跳转登录资产时使用的用户,可以理解为登录资产用户, Jumpserver使用系统用户登录资产。
系统用户的 Sudo 栏填写允许当前系统用户免sudo密码执行的程序路径,如默认的/sbin/ifconfig,意思是当前系统用户可以直接执行 ifconfig 命令或 sudo ifconfig 而不需要输入当前系统用户的密码,执行其他的命令任然需要密码,以此来达到权限控制的目的。
此处的权限应该根据使用用户的需求汇总后定制,原则上给予最小权限即可。
系统用户创建时,如果选择了自动推送 Jumpserver 会使用 Ansible 自动推送系统用户到资产中,如果资产(交换机、Windows )不支持 Ansible, 请手动填写账号密码。
Linux 系统协议项务必选择 ssh 。如果用户在系统中已存在,请去掉自动生成密钥、自动推送勾选。
原则上就是手动visudo。
系统会自动再visudo添加一条规则
# %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
增加一个:巡检服务器状态用户:
test 用户权限: /sbin/ifconfig,/usr/bin/top,/usr/bin/free
05 编辑资产树
节点不能重名,右击节点可以添加、删除和重命名节点,以及进行资产相关的操作。
06 创建资产
点击页面左侧的“资产管理”菜单下的“资产列表”按钮,查看当前所有的资产列表。
点击页面左上角的“创建资产”按钮,进入资产创建页面,填写资产信息。
IP 地址和管理用户要确保正确,确保所选的管理用户的用户名和密码能"牢靠"地登录指定的 IP 主机上。资产的系统平台也务必正确填写。公网 IP 信息只用于展示,可不填,Jumpserver 连接资产使用的是 IP 信息。
如果资产不能正常连接,请检查管理用户的用户名和密钥是否正确以及该管理用户是否能使用 SSH 从 Jumpserver 主机正确登录到资产主机上。
07 网域列表
网域功能是为了解决部分环境无法直接连接而新增的功能,原理是通过网关服务器进行跳转登录。这个功能,一般情况不用到。
08 创建授权规则
节点,对应的是资产,代表该节点下的所有资产。
用户组,对应的是用户,代表该用户组下所有的用户。
系统用户,及所选的用户组下的用户能通过该系统用户使用所选节点下的资产。
节点,用户组,系统用户是一对一的关系,所以当拥有 Linux、Windows 不同类型资产时,应该分别给 Linux 资产和 Windows 资产创建授权规则。
当前端页面授权完成之后系统会把jumpserver服务器的test用户推送到lb01上。
09 web界面资产的使用
使用创建的用户登录
到这里之后可以直接点击web终端。进行连接服务器。
10 xshell使用资产
p ID Hostname IP LoginAs Comment 1 lb01 172.16.0.171 [巡检服务器状态用户] 总共: 1 匹配: 1 Opt> lb01 Connecting to test@lb01 0.2 Last login: Thu Apr 11 16:57:47 2019 from jumpserver [test@lb01 ~]$ su - root Password: Last login: Thu Apr 11 16:59:11 CST 2019 on pts/7 [root@lb01 ~]# " src="file:///C:/Users/15293/AppData/Local/Temp/msohtmlclip1/01/clip_image099.png" v:shapes="文本框_x0020_30">
附上官网文档网址
http://docs.jumpserver.org/zh/docs/setup_by_centos.html