搭建jumperserver堡垒机管理万台服务器-1

1  Jumpserver堡垒机概述-部署Jumpserver运行环境

2  安装Coco组件

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

4  jumpserver平台系统初始化

5  实战:使用jumpserver 管理数万台服务器

部署准备:

序号 服务器名 IP 角色
1 k5 10.27.17.62 jumbserver 、redis、mariadb、koko、Web Terminal 
2      

.1.1  跳板机概述

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

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

堡垒机概述:

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

堡垒机比跳板机多了实时收集、监控网络环境、集中报警等功能。

Jumpserver概述:

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

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

1.2  部署Jumpserver运行环境

安装说明:

服务器名:k5      ip:10.27.17.42         内容: jumpserver 服务端     

服务器名:hero3    ip:10.27.17.43        内容: jumpserver的客户端,资源,被管理服务器  

服务端准备:

上传依赖的软件到到Linux系统上   "rz "   上传到、/opt上

关闭防火墙并清空规则

[root@k5 opt]# systemctl stop firewalld

[root@k5 opt]# systemctl disable firewalld

[root@k5 opt]# iptables -F

关闭 SELINUX

[root@k5 opt]# vim /etc/selinux/config

修改字符集

[root@k5 opt]# localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8
[root@k5 opt]# export LC_ALL=zh_CN.UTF-8
[root@k5 opt]# echo 'LANG=zh_CN.UTF-8' > /etc/locale.conf

1.3安装Python 3和python 的虚拟环境

(1)、安装依赖包

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

(2)、编译安装python3.6.1

[root@k5 ~]# cd /opt

[root@k5 ~]# tar xvf Python-3.6.1.tar.xz  && cd Python-3.6.1

[root@k5 ~]# ./configure  &&  make  -j 4 && make install

(3)、建立 Python 虚拟环境

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

[root@k5 ~]# cd /opt

[root@k5 ~]# python3 -m venv py3

[root@k5 ~]# source /opt/py3/bin/activate

(py3) [root@k5 ~]#        #切换成功后,前面有一个py3 标识

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

1.4  安装 Jumpserver 1.0.0

1、下载或 Clone 项目

方法1:项目提交较多 git clone 时较大,你可以选择去 Github 项目页面直接下载zip包。

(py3) [root@k5 ~]# cd /opt/jumpserver/   #我们已经提前下载

注:在线下载方法:

方法2:

(py3) [root@k5 ~]#git clone --depth=1 https://github.com/jumpserver/jumpserver.git && cd jumpserver && git checkout master

注:depth用于指定克隆深度,为1即表示只克隆最近一次commit

2、 安装依赖 RPM 包

(py3) [root@k5 jumpserver]# cd /opt/jumpserver/requirements

(py3) [root@k5 requirements]# yum -y install $(cat rpm_requirements.txt)

3、 安装 Python 库依赖

(py3) [root@k5 requirements]# cd /opt/jumpserver/requirements

(py3) [root@k5 requirements]# source /opt/py3/bin/activate

(py3) [root@k5 requirements]# pip -V

pip 9.0.1 from /opt/py3/lib/python3.6/site-packages (python 3.6)

方法1:离线安装:

(py3) [root@k5  python-package]# cd /opt/python-package

(py3) [root@k5  ~]# pip install  ./*

方法2:在线安装:

(py3) [root@k5~]#  pip install -r requirements.txt

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

建议这里选择方法2

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

(py3) [root@k5 requirements]# rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

(py3) [root@k5 requirements]# yum  -y install redis

(py3) [root@k5 requirements]# systemctl enable redis  ;  systemctl start redis

6、建数据库 Jumpserver 并授权

(py3) [root@k5 ~]# 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;

7、改 Jumpserver 配置文件,让Jumpserver可以连接数据库

(py3) [root@k5 ~]# cd /opt/jumpserver

(py3) [root@k5 jumpserver]# cp config_example.py config.py

(py3) [root@k5 jumpserver]# vim config.py

修改:如下38-43

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

注意: 配置文件是 Python 格式,不要用 TAB,而要用空格

34 DB_ENGINE = 'sqlite3'
35 DB_NAME = os.path.join(BASE_DIR, 'data', 'db.sqlite3')
36
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@k5 jumpserver]# cd /opt/jumpserver/utils

(py3) [root@k5 utils]# bash make_migrations.sh  #注,在执行这一条命令之前,必续保障之前的pip install ./* 命令已经执行完了。

9、运行 Jumpserver一定在python3环境下执行

(py3) [root@k5 utils]# source  /opt/py3/bin/activate

(py3) [root@k5 utils]# cd /opt/jumpserver

(py3) [root@k5 jumpserver]# chmod +x jms

(py3) [root@k5 jumpserver]# ./jms start all -d         #后台运行使用 -d 参数

注: ./jms start all #前台运行

如果运行失败,报错如一下:

- Start Beat as Periodic Task Scheduler

Error: celery start error

Stop service: gunicorn热

celery is stopped

beat is stopped

解决:重新启动一下

测试:

jumpserver堡垒机测试链接:http://10.27.17.62:8080   用户 : admin 密码: admin

2  安装 Coco组件

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

(py3) [root@k5 jumpserver]# cd /opt/coco  #直接使用离线代码

(py3) [root@k5 coco]# source /opt/py3/bin/activate

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

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

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

注:扩展: pip download -r requirements.txt  #使用download可以下载python包到本地

3、查看配置文件并运行

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

#如果 coco 与 jumpserver 分开部署,请手动修改 conf.py

(py3) [root@k5 coco]# ./cocod restart -d      #启动
(py3) [root@k5 coco]# netstat -antup | grep 5000    #这时不会成功,当你成功激活后,此时就会成功。

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

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

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

解压 Luna

(py3) [root@k5 ~]# cd /opt

(py3) [root@k5  ~ ]# tar zxvf luna.tar.gz

(py3) [root@k5 ~]# ls /opt/luna

注:在线下载

#wget https://github.com/jumpserver/luna/releases/download/v1.0.0/luna.tar.gz

3.2  配置 Nginx 整合各组件

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

(py3) [root@k5 jumpserver]# yum -y install nginx

在准备配置文件

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

注释掉以下:

#server {
72 # listen 80 default_server;
73 # listen [::]:80 default_server;
74 # server_name _;
75 # root /usr/share/nginx/html;
76
77 # # Load configuration files for the default server block.
78 # include /etc/nginx/default.d/*.conf;
79
80 # location / {
81 # }
82
83 # error_page 404 /404.html;
84 # location = /40x.html {
85 # }
86
87 # error_page 500 502 503 504 /50x.html;
88 # location = /50x.html {
89 # }
90 ## }

添加以下:

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

3.3  运行 Nginx

(py3) [root@k5 opt]# nginx -t   # 检测配置文件

(py3) [root@k5 jumpserver]# systemctl start nginx  ;  systemctl enable nginx

3.4  接受coco注册

登录:http://10.27.17.62/  到会话管理-终端管理 接受 Coco的注册。点接受。

再刷新页面:

(py3) [root@k5 nginx]# ssh -p2222  admin@10.27.17.62    #密码:admin

搭建jumperserver堡垒机管理万台服务器-1的更多相关文章

  1. 搭建jumperserver堡垒机管理万台服务器-2

    搭建jumperserver堡垒机管理万台服务器-2 1  Jumpserver堡垒机概述-部署Jumpserver运行环境 2  安装Coco组件 3  安装Web-Terminal前端-Luna组 ...

  2. Facebook 运维内幕曝光:一人管理2万台服务器

    Facebook 运维内幕曝光:一人管理2万台服务器 oschina 发布于: 2013年11月23日 (29评) 分享到  新浪微博腾讯微博 收藏+32 11月30日 珠海 源创会,送U盘,先到先得 ...

  3. Linux搭建nginx负载均衡(两台服务器之间)

    负载均衡种类 第一种:通过硬件负载解决,常见的有NetScaler.F5.Radware和Array等商用的负载均衡器,价格比较昂贵 第二种:通过软件负载解决,常见的软件有LVS.Nginx.apac ...

  4. 使用Docker搭建Jumpserver堡垒机

    使用Docker搭建Jumpserver堡垒机 1.环境准备 操作系统:CentOS 7.6.1810 软件源:阿里云镜像 #内核版本(Docker 要求 CentOS 系统的内核版本高于 3.10) ...

  5. 基于Docker搭建Jumpserver堡垒机操作实践

    一.背景 笔者最近想起此前公司使用过的堡垒机系统,觉得用的很方便,而现在的公司并没有搭建此类系统,想着以后说不定可以用上:而且最近也有点时间,因此来了搭建堡垒机系统的兴趣,在搭建过程中参考了比较多的文 ...

  6. 阿里云堡垒机密钥连接ECS服务器

    文:铁乐与猫 2017-6月中旬 堡垒机远程桌面windows系统就不用细说了 堡垒机远程ssh连接linux系统倒要说一下,毕竟是为安全一般只用通过密钥连接,而不使用密码的方式连接. 首先我们得在需 ...

  7. (四)ansible 通过堡垒机访问内网服务器

    场景:     在ansible的使用过程中,存在这样的场景,ansible所在的管理节点与被管理的机器需要 通过一个跳板机才能连接,无法直接连接.要解决这个问题,并不需要在 ansible里做什么处 ...

  8. centos 6.5 搭建开源堡垒机 Teleport 遇到的问题解决

    几款开源的堡垒机 下面进行 teleport 的安装: https://docs.tp4a.com/install/#11 异常1:libc.so.6: version `GLIBC_2.14' no ...

  9. 使用Jumpserver堡垒机管理MySQL应用

    第一步,添加系统用户 资产管理,系统用户,创建<数据库协议>MySQL 用户名和密码填写实际可以访问数据库的用户名和密码 第二步,添加应用 应用管理,数据库 主机和端口填写可以访问数据库的 ...

随机推荐

  1. sqli-labs(28a)

    0X01构造闭合 爆字段数 /?id=') order by 1%23 ?id=') order by 5%23 偷看一下源码 就只过滤了union select 闭合') 那我们来尝试一下 0X02 ...

  2. Django REST framework 之 认证 权限 限制

    认证是确定你是谁 权限是指你有没有访问这个接口的权限 限制主要是指限制你的访问频率 认证 REST framework 提供了一些开箱即用的身份验证方案,并且还允许你实现自定义方案. 接下类我们就自己 ...

  3. sass scss less 的编译工具 koala

    使用 koala 时注意事项: 1.目录中一定不能出现中文,否则就会报错 2.文件中如果出现中文(!注释也算) 开头一定要加   @charset "utf-8"; 否则就会出现无 ...

  4. lr中用C语言比较两个字符串变量

    以下脚本,定义两个一样的字符数组,对比后,打印出result的值: Action() { int result; char string1[] = "We can see the strin ...

  5. 使用NSIS脚本制作一个安装包

    大部分人第一次看到NSIS脚本都是一脸懵逼的.因为它这个脚本的结构乍一看上去就非常奇怪,不作说明的话是看不懂的. 编写脚本命令的时候要非常注意,命令要按照规定写在脚本中不同的段落里,也就是说,命令的先 ...

  6. java 解析上传的Excel文件

    java poi解析上传的Excel文件 package com.zhl.push.Utils; /** * @Author TAO * @ClassName ExcelData * @Descrip ...

  7. 使用Postman对HTTP接口进行功能测试

    一.工具说明 Postman是一种网页调试与发送网页http请求的工具.我们可以用来很方便的模拟get或者post或者其他方式的请求来调试接口. 二.应用场景 1.Get请求 get请求通过接口参数拼 ...

  8. iframe根据子frame的高度自动高度

    <script type="text/javascript"> //光标移动到顶部 this.to_top=function(){ $("html,body& ...

  9. Java多线程学习——wait方法(管道法/生产者消费者模式)

    简单介绍管道法: 生产者生产数据输送到管道,消费者从管道拿出数据,管道为空消费者等待,管道满生产者生产,消费者消费生产者生产,生产者生产消费者消费. public class Corn { //要生产 ...

  10. C语言I-2019博客作业02

    这个作业属于哪个课程 C语言程序设计I 这个作业要求在哪里 C语言I-2019秋作业02 我在这个课程的目标是 学会编程及提问的技能 这个作业在哪个具体目标方面帮助我实现目标 深入了解C语言程序设计中 ...