• 欢迎访问显哥博客,本网站纯属学习技术,绝无商业用途,欢迎小伙伴们共同学习!研究技术!QQ:52249909 加我QQ
  • 世界75亿人,这么小的概率,能认识你,是我一生的幸运,不妨加个QQ接触一下:52249909 加我QQ

大型企业架构部署之搭建Jumpserver堡垒机

Linux架构 lixian 4年前 (2020-03-31) 2664次浏览 0个评论 扫描二维码
文章目录[隐藏]

一、Jumpserver堡垒机概述

大型企业架构部署之搭建Jumpserver堡垒机

1.跳板机概述

跳板机就是一台服务器,开发或运维人员在维护过程中首先要统一登录到这台服务器,然后再登录到目标设备进行维护和操作。
跳板机缺点:没有实现对运维或开发人员操作行为的控制和审计,使用跳板机的过程中还是会出现误操作、违规操作导致的事故,一旦出现操作事故很难快速定位到原因和责任人。

2.堡垒机概述

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

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

二、实验环境准备

一台jumpserver服务端
一台或几台服务器资源,作为被管理的服务器

搭建jumpserver所用到的软件包集。
(1)服务器终端下载:

cd /opt && wget https://web.lixian.fun/data/jumpserver-package.zip

(2)本地下载地址:
或者下载到本地上,然后使用xshell上传到服务器。
文件下载

三、安装Python3环境

1.上传资源包并解压

[root@jump ~]# cd /opt/
[root@jump /opt]# rz  jumpserver-package.zip
[root@jump /opt]# ll
total 72708
-rw-r--r-- 1 root root 74450263 Sep  9  2019 jumpserver-package.zip
[root@jump /opt]# unzip jumpserver-package.zip
[root@jump /opt]# cd jumpserver-package
[root@jump /opt/jumpserver-package]# mv * /opt/
[root@jump /opt/jumpserver-package]# cd ..
[root@jump /opt]# rm -rf jumpserver-package jumpserver-package.zip
[root@jump /opt]# ls -l
total 24220
drwxr-xr-x  5 root root      194 Jun  8  2018 coco
drwxr-xr-x 11 root root      253 Jun  8  2018 jumpserver
-rw-r--r--  1 root root  7910019 Apr 10  2018 luna.tar.gz
-rw-r--r--  1 root root 16872064 Apr 10  2018 Python-3.6.1.tar.xz
drwxr-xr-x  2 root root     8192 Jun  8  2018 python-package

2.修改中文字符集

Jumpserver是我们国人开发的,所以有些报错在日志里是中文的,这里我们把字符集修改为中文。

[root@jump /opt]# cat /etc/locale.conf 
LANG="en_US.UTF-8"
[root@jump /opt]# export LC_ALL=zh_CN.UTF-8
[root@jump /opt]# echo 'LANG=zh_CN.UTF-8' > /etc/locale.conf
[root@jump /opt]# logout                
[root@jump ~]# cat /etc/locale.conf
LANG=zh_CN.UTF-8

将本地的yum源更新为阿里云的仓库源

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

开启yum缓存功能

把软件包下载下来方便后期使用

sed -ri '/^keepcache/s#0#1#g' /etc/yum.conf

安装Python依赖包

[root@jump ~]# yum -y install wget sqlite-devel xz gcc automake zlib-devel openssl-devel epel-release git

编译安装python3.6.1

[root@jump ~]# cd /opt/
[root@jump /opt]# tar fx Python-3.6.1.tar.xz
[root@jump /opt]# cd Python-3.6.1/ && ./configure && make && make install

建立Python虚拟环境

解决python2.7和python3.5冲突了怎么办?
老程序需要使用2.7,新程序需要3.6?
因为 CentOS 6/7 自带的是 Python2,而Yum等工具依赖原来的Python,为了不扰乱原来的环境我们使用Python虚拟环境。

[root@jump /opt/Python-3.6.1]# cd /opt/
[root@jump /opt]# python3 -m venv py3
[root@jump /opt]# source py3/bin/activate
(py3) [root@jump /opt]#

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

四、安装jumpserver堡垒机

1.安装依赖rpm包

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

2.配置pip加速下载

(py3) [root@jump /opt/jumpserver/requirements]# cd ~
(py3) [root@jump ~]# mkdir .pip
(py3) [root@jump ~]# cat >~/.pip/pip.conf <<EOF
[global]

index-url = http://mirrors.aliyun.com/pypi/simple/

[install]

trusted-host=mirrors.aliyun.com
EOF
(py3) [root@jump ~]#

3.安装python依赖库

(py3) [root@jump ~]# cd /opt/jumpserver/requirements/
(py3) [root@jump requirements]# sed -ir 's#python-gssapi==0.6.4#\#python-gssapi==0.6.4#g' requirements.txt
(py3) [root@jump requirements]# pip install -r requirements.txt
(py3) [root@jump requirements]# sed -ir 's#\#python-gssapi==0.6.4#python-gssapi==0.6.4#g' requirements.txt
(py3) [root@jump requirements]# pip install -r requirements.txt

4.安装redis服务

jumpserver使用redis做cache缓存

(py3) [root@jump requirements]# yum install -y redis
(py3) [root@jump requirements]# systemctl enable redis && systemctl start redis
Created symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /usr/lib/systemd/system/redis.service.

5.安装MySQL数据库

(py3) [root@jump requirements]# yum install mariadb mariadb-devel mariadb-server -y
(py3) [root@jump requirements]# systemctl enable mariadb && systemctl start mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.

6.创建jumpserver数据库并授权

(py3) [root@jump requirements]# mysqladmin -uroot password
New password: 
Confirm new password: 
(py3) [root@jump requirements]# mysql -uroot -p
Enter password: 
MariaDB [(none)]> create database jumpserver default charset 'utf8';
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit
Bye

7.修改jumpserver配置文件

(py3) [root@jump requirements]# cd /opt/jumpserver/
(py3) [root@jump jumpserver]# cp config_example.py config.py
(py3) [root@jump jumpserver]# vim config.py
    # MySQL or postgres setting like:
    DB_ENGINE = 'mysql'
    DB_HOST = '127.0.0.1'
    DB_PORT = 3306
    DB_USER = 'jumpserver'
    DB_PASSWORD = '123456'
    DB_NAME = 'jumpserver'

一定要注意python的缩进
一定要注意python的缩进
一定要注意python的缩进(重要的事情说三遍)
大型企业架构部署之搭建Jumpserver堡垒机

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

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

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

出现以下图示则初始化成功
大型企业架构部署之搭建Jumpserver堡垒机

9.启动jumpserver

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

如果运行失败了,需要重新启动一下

使用方式./jms start|stop|status|restart all -d
# -d 是后台启动的意思

失败:

- Start Beat as Periodic Task Scheduler
Error: celery start error
Stop service: gunicorn
celery is stopped
beat is stopped

重启:

(py3) [root@jump jumpserver]# ./jms restart all -d
gunicorn is stopped
celery is running: 39116
beat is running: 39122

启动成功:

gunicorn is running: 39183
celery is running: 39199
beat is running: 39201

10.浏览器测试访问:IP:8080

默认用户名:admin,默认密码:admin
访问成功到这里搭建jumpserver就完美成功啦,但是这样还不够,没有很全的功能,下面需要安装coco和Luna等组件。
大型企业架构部署之搭建Jumpserver堡垒机

大型企业架构部署之搭建Jumpserver堡垒机

五、安装Coco组件和ssh server

当我们打开jumpserver左侧栏的会话管理中的web终端,会出现一个报错,需要我们部署luna,coco,配置nginx做url分发。
大型企业架构部署之搭建Jumpserver堡垒机

1.安装coco组件

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

(py3) [root@jump ~]# cd /opt/coco/requirements/
(py3) [root@jump requirements]# yum -y install $(cat rpm_requirements.txt)
(py3) [root@jump requirements]# pip install -r requirements.txt

前面已经离线安装过python的包,这里有可能提示已经安装过了。

2.运行coco

(py3) [root@jump requirements]# cd /opt/coco/
(py3) [root@jump coco]# cp conf_example.py conf.py
(py3) [root@jump coco]# chmod +x cocod 
(py3) [root@jump coco]# ./cocod start -d

六、安装luna组件并安装nginx整合各个组件

1.安装luna组件

Luna概述:Luna现在是 Web Terminal 前端,计划前端页面都由该项目提供,Jumpserver 只提供 API,不再负责后台渲染html等。
访问(https://github.com/jumpserver/luna/releases)下载对应版本的 release 包,直接解压,不需要编译。
这里我们资源包已经下载好了,直接解压即可。

(py3) [root@jump coco]# cd /opt/
(py3) [root@jump opt]# tar xf luna.tar.gz

2.安装nginx服务

(py3) [root@jump coco]# yum install -y nginx

3.修改nginx配置文件

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

删除nginx.conf配置文件默认的server层,并把下面的server层内容添加进去
删除nginx.conf配置文件默认的server层,并把下面的server层内容添加进去
删除nginx.conf配置文件默认的server层,并把下面的server层内容添加进去

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
    }
}

4.启动nginx服务

(py3) [root@jump coco]# nginx -t 
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
(py3) [root@jump coco]# systemctl restart nginx && systemctl enable nginx
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.

5.浏览器IP+80端口访问

点击会话管理,再点击web终端就可以正常访问了,不会出现报错啦。
大型企业架构部署之搭建Jumpserver堡垒机

七、使用jumpserver连接管理主机

web终端如果连接完成,我们就可以创建用户,连接主机进行管理了。

1.创建管理用户

首先点击左侧的创建管理用户,管理用户是服务器的 root,或拥有 NOPASSWD: ALL sudo 权限的用户,Jumpserver 使用该用户来推送系统用户、获取资产硬件信息等。
大型企业架构部署之搭建Jumpserver堡垒机

2.创建系统用户

系统用户是 Jumpserver 跳转登录资产时使用的用户,可以理解为登录资产用户, Jumpserver使用系统用户登录资产。
也就是我们资产的用户。
大型企业架构部署之搭建Jumpserver堡垒机

3.创建资产主机

点击资产列表,创建资产,填写资产主机的信息。
大型企业架构部署之搭建Jumpserver堡垒机

4.资产授权

给资产授权,就是相当于推送系统用户给资产主机,然后使用这个系统用户来管理主机。
大型企业架构部署之搭建Jumpserver堡垒机

5.查看资产主机状态

主机状态必须是绿色的可连接的才可以进行管理。
大型企业架构部署之搭建Jumpserver堡垒机

6.web终端连接

点击左侧的Web终端,然后点击我们刚才创建的资产主机,即可连接到主机,这里资产主机的用户就是我们创建的系统用户,现在理解了吧 【显哥出品,必为精品】
大型企业架构部署之搭建Jumpserver堡垒机


本站博主 , 版权所有丨如未注明 , 均为原创
转载请注明原文链接:大型企业架构部署之搭建Jumpserver堡垒机
喜欢 (4)

您必须 登录 才能发表评论!