jumpserver部署1.0版本

A. jumpserver概述

跳板机概述:

跳板机就是一台服务器,开发或运维人员在维护过程中首先要统一登录到这台服务器,然后再登录到目标设备进行维护和操作;

跳板机缺点:没有实现对运维人员操作行为的控制和审计,使用跳板机的过程中还是会出现误操作、违规操作导致的事故,一旦出现操作事故很难快速定位到原因和责任人;

堡垒机概述:

堡垒机,即在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的入侵和破坏,而运用各种技术手段实时收集和监控网络环境中每一个组成部分的系统状态、安全事件、网络活动,以便集中报警、及时处理及审计定责。堡垒机多了实时收集、监控网络环境、集中报警等功能。

Jumpserver概述:

Jumpserver是一款使用Python, Django开发的开源跳板机系统,为互联网企业提供了认证,授权,审计,自动化运维等功能。

官方网址: http://www.jumpserver.org

 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等。

B.jumpserver运行环境

Jumpserver 环境要求:

  • 硬件配置: 2个CPU核心, 4G 内存, 50G 硬盘(最低)
  • 操作系统: Linux 发行版 x86_64
  • Python = 3.6.x
  • Mysql Server ≥ 5.6
  • Mariadb Server ≥ 5.5.56
  • Redis
 主机名  IP地址 说明 
 tiaobanji  172.16.1.91  jumpserver

  上传依赖的软件到到Linux系统上将文件移动带 /opt/ 下 :【 点击下载

  # 本文离线下载,相关包在网盘里面

   关闭 selinux 和防火墙

 

[root@tiaobanji /]# setenforce 0   # 可以设置配置文件永久关闭
[root@tiaobanji /]# systemctl stop firewalld.service ; systemctl disable

 修改字符集,否则可能报 input/output error的问题,因为日志里打印了中文

[root@tiaobanji /]# localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8
[root@tiaobanji /]# export LC_ALL=zh_CN.UTF-8
[root@tiaobanji /]#  echo 'LANG=zh_CN.UTF-8' > /etc/locale.conf
#重新连接,语言环境改变

准备 Python3 和 Python 虚拟环境

  1. 安装依赖包

#安装前,可以开启yum缓存功能,把软件包下载下来,方便后期使用。

[root@tiaobanji /]# vim /etc/yum.conf 
改:keepcache=0
为:keepcache=1
[root@tiaobanji ~]# yum -y install wget sqlite-devel xz gcc automake zlib-devel openssl-devel epel-release git

  2. 编译安装python3.6.1

[root@tiaobanji /]# cd /opt
[root@tiaobanji /opt]# mv jumpserver-package/* /opt/
[root@tiaobanji /opt]# tar xvf Python-3.6.1.tar.xz && cd Python-3.6.1 
[root@tiaobanji /opt/Python-3.6.1]#  ./configure && make -j 4 && make install 
#编译安装 # 这里必须执行编译安装,否则在安装 Python 库依赖时会有麻烦...

#在线下载 wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz

互动: python2.7和python3.5冲突了怎么办? 老程序需要使用2.7,新程序需要3.6?

 

  3. 建立 Python 虚拟环境

因为 CentOS 6/7 自带的是 Python2,而 Yum 等工具依赖原来的 Python,为了不扰乱原来的环境我们来使用 Python 虚拟环境

[root@tiaobanji /]#  cd /opt 
[root@tiaobanji /]# python3 -m venv py3 
[root@tiaobanji /]# source /opt/py3/bin/activate
(py3) [root@tiaobanji /opt]#    #切换成功的,前面有一个py3 标识

看到下面的提示符代表成功,以后运行 Jumpserver 都要先运行以上 source 命令,以下所有命令均在该虚拟环境中运行

安装 Jumpserver 1.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

[root@tiaobanji /]#  cd /opt/jumpserver/

  2. 安装依赖 RPM 包

[root@tiaobanji /]# cd /opt/jumpserver/requirements
[root@tiaobanji /]# yum -y install $(cat rpm_requirements.txt) 

  3. 安装 Python 库依赖

[root@tiaobanji /]# cd /opt/jumpserver/requirements
[root@tiaobanji /]# source /opt/py3/bin/activate
(py3) [root@tiaobanji /opt]#   pip -V
pip 9.0.1 from /opt/py3/lib/python3.6/site-packages (python 3.6)

  方法1:离线安装:

(py3) [root@tiaobanji /opt]# cd /opt/python-package
(py3) [root@tiaobanji /opt/python-package]#  pip install  ./* 
# python-gssapi-0.6.4.tar.gz  离线安装还是在线安装会有卡顿等待5分钟

  方法二:在线安装

[root@tiaobanji ~]# cd /opt/jumpserver/requirements/
[root@tiaobanji /opt/jumpserver/requirements]#  pip install -r requirements.txt

pip 是一个安装和管理 Python 包的工具,相当于yum命令

  4. 安装 Redis, Jumpserver 使用 Redis 做 cache 和 celery broke

[root@tiaobanji /]#  yum  -y install redis 
[root@tiaobanji /]#  systemctl enable redis  ;  systemctl start redis

  5. 安装 MySQL

[root@tiaobanji /]# yum  install mariadb mariadb-devel mariadb-server   -y
[root@tiaobanji /]# systemctl enable mariadb  ;  systemctl start mariadb

  6. 建数据库 Jumpserver 并授权

[root@tiaobanji /]# mysql
MariaDB [(none)]> create database jumpserver default charset 'utf8';
MariaDB [(none)]> grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by '123456';
MariaDB [(none)]> flush privileges; 
MariaDB
[(none)]> exit;

# delete from mysql.user where user='jumpserver' and host='jumpserver'; 删除表信息

  7. 改 Jumpserver 配置文件

(py3) [root@tiaobanji /opt]# cd /opt/jumpserver
(py3) [root@tiaobanji /opt/jumpserver]#  cp config_example.py config.py
(py3) [root@tiaobanji /opt/jumpserver]# vim config.py

修改 DevelopmentConfig 中的配置,因为默认 Jumpserver 使用该配置,它继承自 Config

注意: 配置文件是 Python 格式,不要用 TAB,而要用空格 class DevelopmentConfig(Config):

 

 37     # MySQL or postgres setting like:
 38     DB_ENGINE = 'mysql'
 39     DB_HOST = '127.0.0.1'
 40     DB_PORT = 3306
 41     DB_USER = 'jumpserver'
 42     DB_PASSWORD = '123456'
 43     DB_NAME = 'jumpserver'

  8. 成数据库表结构和初始化数据

(py3) [root@tiaobanji /opt]# cd /opt/jumpserver/utils
(py3) [root@tiaobanji /opt/jumpserver/utils]# bash make_migrations.sh

##注,在执行这一条命令之前,必续保障之前的pip install ./* 命令已经执行完了,不然后导入不了Django等软件包。

  9. 运行jumpserver

(py3) [root@tiaobanji /opt]# cd /opt/jumpserver
(py3) [root@tiaobanji /opt/jumpserver]# chmod +x jms
(py3) [root@tiaobanji /opt/jumpserver]#  ./jms start all -d 

(py3) [root@tiaobanji /opt/jumpserver]#  ./jms restart all -d   #重启
# 后台运行使用 -d 参数 
注: ./jms start all #前台运行
如果运行失败了,重新启动一下。

最后几行结果:

gunicorn is running: 10878
celery is running: 10895
beat is running: 10896

启动服务的脚本,使用方式./jms start|stop|status|restart all 后台运行请添加 -d 参数

测试:

访问 http://172.16.1.91:8080/ 用户 : admin 密码: admin

 

这里需要使用8080端口来访问页面。后期搭建 nginx 代理,就可以直接使用80端口正常访问了附上重启的方法

 

  

C.安装 Coco组件

安装coco组件

  1. 默认点击web终端,弹出:

  Luna是单独部署的一个程序,你需要部署luna,coco,配置nginx做url分发, 如果你看到了这个页面,证明你访问的不是nginx监听的端口,祝你好运

所以接下来,我们安装luna和coco:

coco概述:coco实现了 SSH Server 和 Web Terminal Server 的组件,提供 SSH 和 WebSocket 接口, 使用 Paramiko 和 Flask 开发。

 

 (py3) [root@tiaobanji /opt]# cd /opt/coco   #离线安装
 (py3) [root@tiaobanji /opt/coco]# source /opt/py3/bin/activate 

在线下载代码:git clone https://github.com/jumpserver/coco.git && cd coco && git checkout master

  2. 安装coco的依赖包,主要有rpm和python包

 (py3) [root@tiaobanji /opt]# cd /opt/coco/requirements
 (py3) [root@tiaobanji /opt/coco/requirements]#  yum -y  install $(cat rpm_requirements.txt)  
 (py3) [root@tiaobanji /opt/coco/requirements]#   pip install -r requirements.txt 
 #前面已经离线安装过python的包,这里就很快安装成功了,或提示已经安装成功。
   
 注:扩展: pip download -r requirements.txt  #使用download可以下载python包到本地

  3. 查看配置文件并运行

  (py3) [root@tiaobanji /opt]# cd /opt/coco
  (py3) [root@tiaobanji /opt/coco]#  cp conf_example.py conf.py         # 如果 coco 与 jumpserver 分开部署,请手动修改 conf.py
  (py3) [root@tiaobanji /opt/coco]# chmod +x cocod
  (py3) [root@tiaobanji /opt/coco]# ./cocod start -d 

新版本更新了运行脚本,使用方式./cocod start|stop|status|restart 后台运行请添加 -d 参数

D.安装Web-Terminal前端-Luna组件-配置Nginx整合各组件

安装luna组件

Luna概述:Luna现在是 Web Terminal 前端,计划前端页面都由该项目提供,Jumpserver 只提供 API,不再负责后台渲染html等。

访问(https://github.com/jumpserver/luna/releases)下载对应版本的 release 包,直接解压,不需要编译

解压 Luna:

(py3) [root@tiaobanji /]# cd /opt
(py3) [root@tiaobanji /opt]# tar xvf luna.tar.gz
(py3) [root@tiaobanji /opt]# ls /opt/luna

在线下载:wget https://github.com/jumpserver/luna/releases/download/v1.0.0/luna.tar.gz

配置 Nginx 整合各组件

vi /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

安装 Nginx 根据喜好选择安装方式和版本

(py3) [root@tiaobanji /]#   yum -y install nginx

修改 /etc/nginx/conf.d/jumpserver.conf

(py3) [root@tiaobanji /]# vim /etc/nginx/nginx.conf

删除第38行到 57行中server {。。。}相关的内容,在vim命令模式,输入38gg,快速跳到38行,然后输入20dd,就可以删除。

删除后,在38行插入以一下内容:

server {
    listen 80;

    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    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/;  # 如果coco安装在别的服务器,请填写它的ip
        proxy_buffering off;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    location / {
        proxy_pass http://localhost:8080;  # 如果jumpserver安装在别的服务器,请填写它的ip
    }
}

 

运行 Nginx

(py3) [root@tiaobanji /]#  nginx -t   # 检测配置文件
(py3) [root@tiaobanji /]# systemctl start nginx  ;  systemctl enable nginx
(py3) [root@tiaobanji /opt]# cd /opt/jumpserver     重启jumpserver
(py3) [root@tiaobanji /opt/jumpserver]#  ./jms start all -d 

接收coco注册

到会话管理-终端管理 接受 Coco的注册。点接受。 

注册:

刷新:

测试连接:

(py3) [root@tiaobanji /]# ssh -p2222 admin@172.16.1.91   #密码: admin 端口port:2222
#不知为何我一直登不上,直接在网页上修改密码

 

重新连接测试:

(py3) [root@tiaobanji /]#  ssh -p2222 admin@172.16.1.91   #密码: nihao123!

E.jumpserver平台系统初始化

系统基本设置

这里要写成自己真实的URL地址,不然后期用户访问不了。http://172.16.1.91

 

 

配置邮件发送服务器

点击页面上边的"邮件设置" TAB ,进入邮件设置页面:

SMTP服务器:smtp.163.com #目前qq的邮箱暂时不会设置以为ssl需要开启,不会!

 

注:自己邮箱要开启smtp和pop3服务。 官网:https://mail.163.com/ 注册账号

开启POP3/SMTP/IMAP服务方法:

请登录163邮箱,点击页面右上角的“设置”—在“高级”下,点“POP3/SMTP/IMAP”,勾选图中两个选项,点击确定。即可开启成功。开通后即可用闪电邮Outlook等软件收发邮件了。

 

 

服务器地址:POP3服务器:pop.163.com | SMTP服务器:smtp.163.com | IMAP服务器:imap.163.com

注:配置完后,需要重启一下服务。不然后期创建用户,收不到邮件。

(py3) [root@tiaobanji /]#  /opt/jumpserver/jms stop all -d
(py3) [root@tiaobanji /]#  /opt/jumpserver/jms start all -d
#一定要在虚拟环境捏启动

注意: 在使用jumpserver过程中,有一步是系统用户推送,要推送成功,client(后端服务器)要满足以下条件: 1. 后端服务器需要有python、sudo环境才能使用推送用户,批量命令等功能 2. 后端服务器如果开启了selinux,请安装libselinux-python。一般情况服务器上都关闭了selinux

posted @ 2019-12-03 10:39  kerwin-  阅读(704)  评论(0编辑  收藏  举报