Jumpserver堡垒机

Jumpserver简介
Jumpserver堡垒机_第1张图片
堡垒机概述:
为互联网企业提供了认证,授权,审计,自动化运维等功能。
堡垒机,在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的入侵和破坏,可以实时收集和监控网络环境。一但出现违规的操作导致的事故,可以快速定位到原因和责任人

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

堡垒机比跳板机多了几个功能:
1、给其它服务器推送sudo用户,并为其设置权限
2、多了一个用户行为监控的功能(有录像)
堡垒机比跳板机多了实时收集、监控网络环境、集中报警等功能。

Jumpserver概述:

Jumpserver 是全球首款完全开源的堡垒机,使用 GNU GPL v2.0 开源协议,是符合 4A 的专业运维审计系统。
Jumpserver 使用 Python / Django 进行开发,遵循 Web 2.0 规范,配备了业界领先的 Web Terminal 解决方案,交互界面美观、用户体验好。
Jumpserver 采纳分布式架构,支持多机房跨区域部署,中心节点提供 API,各机房部署登录节点,可横向扩展、无并发限制。
为互联网企业提供了认证,授权,审计,自动化运维等功能。

Jumpserver实现的功能:
Jumpserver堡垒机_第2张图片
Jumpserver堡垒机_第3张图片
Jumpserver堡垒机_第4张图片
Jumpserver堡垒机_第5张图片
Jumpserver堡垒机_第6张图片
1、用户组/用户 :添加组方便进行授权,用户是授权和登陆的主体.

2、资产组/资产/IDC : 主机信息简洁完整,用户自定义备注登录,支持自动获取主页硬件信息.

3、Sudo/系统用户/授权规则 :支持sudo 授权,系统用户用于登陆客户端,授权是将用户、资产和系统用户关联起来.

4、在线/登录历史/命令记录/上传下载 : 在线实时监控用户操作,统计和录像回放用户操作内容,阻断控制,详细记录上传下载.

5、上传/下载 : 支持文件上传下载,实现 rzsz方式.

6、默认设置 : 默认管理用户,设置包括用户密码密钥,默认信息为了方便添加资产而设计.

jumpserver组件

1、Jumpserver 为管理后台,管理员可以通过Web页面进行资产管理、用户管理、资产授权等操作

2、Coco 为 SSH Server 和 Web Terminal Server(网页linux客户端)。用户可以通过使用自己的账户登录 SSH 或者 Web Terminal 直接访问被授权的资产。不需要知道服务器的账户密码,新版本的coco被koko取代。

3、Luna 为 Web Terminal Server 前端页面,用户使用 Web Terminal 方式登录所需要的组件

4、Guacamole 为 Windows 组件,用户可以通过 Web Terminal 来连接 Windows 资产 (暂时只能通过 Web Terminal 来访问)

Jumpserver 环境要求

硬件配置 2个cpu核心 、4G内存 、50硬盘
环境配置 python3.6版本以上 、mysql server5.6版本以上 、mariadb server 5.5.56版本以上

一.部署jumpserver堡垒机

[root@centos7-2 ~]# hostnamectl set-hostname jumpserver    更改主机名
[root@centos7-2 ~]# logout  

1.安装python3.6的版本

安装python3.6的版本,当前系统是centos7自带版本的是2.7.5的版本

软件下载地址:
https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz

2.上传所有安装包

Jumpserver-packs包里包含了所有需要的rpm包。

网盘地址:所有的包
链接:https://pan.baidu.com/s/1kAYb5weI6RgAYaLF8S8Uhw
提取码:visc`

3.解压上传的包

[root@jumpserver ~]# tar xf pip-packs.tar.gz 
[root@jumpserver ~]# tar xf Python-3.6.8.tgz -C /usr/local/src/
[root@jumpserver ~]# vim /etc/yum.repos.d/jumpserver.repo   配置本地jumpserveryum源
[jumpserver]
name=CentOS7
baseurl=file:///root/jumpserver-packs
enable=1
gpgcheck=0

4.安装jumpserver依赖

[root@jumpserver ~]# tar xf jumpserver-packs.tar.gz      解压
[root@jumpserver ~]# yum install -y gcc zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel

5.安装python3.6.8

[root@jumpserver ~]# cd /usr/local/src/Python-3.6.8/
[root@jumpserver Python-3.6.8]#  ./configure --prefix=/usr/local/python   //预编译
[root@jumpserver Python-3.6.8]# make -j 2     调用两个核心加快编译
[root@jumpserver Python-3.6.8]# make install
[root@jumpserver ~]# cd /usr/local/python/bin/
[root@jumpserver bin]# ls

在这里插入图片描述
优化环境变量,给python做软连接

[root@jumpserver bin]# ln -s /usr/local/python/bin/* /usr/local/bin/    
[root@jumpserver ~]# python3 -V    #查看版本
 Python 3.6.8
[root@jumpserver ~]# pip3 -V    #查看版本
pip 18.1 from /usr/local/python/lib/python3.6/site-packages/pip (python 3.6)
主要用于安装python一些模块

6.配置python环境

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

[root@jumpserver ~]# python3.6 -m venv /opt/py3   创建py3虚拟环境
[root@jumpserver ~]# source /opt/py3/bin/activate    载入py3虚拟环境

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

(py3) [root@jumpserver ~]#

设置为开机自启,打开另一个终端会自动进入python环境

(py3) [root@jumpserver ~]# echo "source /opt/py3/bin/activate" >> /root/.bashrc

7.安装jumpserver

(py3) [root@jumpserver ~]# yum -y install unzip    安装解压工具
(py3) [root@jumpserver ~]# unzip jumpserver-master.zip   解压
(py3) [root@jumpserver ~]# mv jumpserver-master/ /opt/jumpserver   mv到opt下
(py3) [root@jumpserver ~]# cd /opt/jumpserver/requirements/

安装rpm依赖
直接安装rpm_requirements.txt文件中所有的软件

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

安装jumpserver运行代码依赖

使用pip安装,我们刚才上传了pip并解压了所有直接使用

(py3) [root@jumpserver ~]# cd /opt/jumpserver/requirements/
(py3) [root@jumpserver requirements]# pip install --no-index --find-links=/root/pip-packs/ pyasn1 six cffi pytest-runner   ###--on-index表示不联网装,但是后面得指定从哪装这些是依赖       安装依赖
(py3) [root@jumpserver requirements]# pip install --no-index --find-links=/root/pip-packs/ -r requirements.txt

安装代码运行所需的依赖
查看是否安装成功

(py3) [root@jumpserver ~]# cd pip-packs/
(py3) [root@jumpserver pip-packs]# ls

8.安装redis
Jumpserver使用Redis做缓存,加快了客户端访问速度
Jumpserver使用Redis做cache和分布式任务队列,如果有搭建好的redis集群,可以不用搭建。也可以使用二进制包安装redis。

(py3) [root@jumpserver ~]# yum -y install redis   安装redis
py3) [root@jumpserver ~]# systemctl start redis    开启redis服务
(py3) [root@jumpserver ~]# systemctl enable redis   把redis添加开机启动项

9.安装mysql
如果有mysql集群,可以不同搭建,centos7默认使用mariadb数据库,也可以源码安装mysql5.7

(py3) [root@jumpserver ~]# yum -y install mariadb mariadb-devel mariadb-server 安装mariadb
(py3) [root@jumpserver ~]# systemctl start mariadb   开启服务
(py3) [root@jumpserver ~]# systemctl enable mariadb   添加开机启动项

10.创建jumpserver并授权

(py3) [root@jumpserver ~]# mysql
MariaDB [(none)]> create database jumpserver default charset 'utf8';   创建jumpserver数据库
MariaDB [(none)]> grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by 'jumpserver';

允许jumpserver用户从本地登录密码是jumpserver,对此库所有的表授予任何权限

MariaDB [(none)]> flush privileges;   刷新权限

11.生成密钥

生成49位的密钥,Linux1也可以用以下方式来生成密钥。(每次生成的密钥都不一样)

py3) [root@jumpserver ~]#  cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 49;echo  
MbgU67f1Td0HnNYusX5AgDZKZ3AvOpeDzL8QfMsYTgJSaGrp6
(py3) [root@jumpserver ~]# cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16;echo
O6HeyM4BKj7CxDdG

生成的这两个密钥,下面会用到

12.修改jumpserver配置文件

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

Jumpserver堡垒机_第7张图片
Jumpserver堡垒机_第8张图片
Jumpserver堡垒机_第9张图片
13.生成数据库表结构和初始化数据

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

14.运行jumpserver

(py3) [root@jumpserver utils]# cd /opt/jumpserver/
py3) [root@jumpserver jumpserver]# ./jms start all
 #可以-d参数在后台运行 ./jms start all -d, 确保已经载入 py3 虚拟环境。尽量用以下方式启动

设置service脚本

(py3) [root@jumpserver ~]# vim /usr/lib/systemd/system/jms.service

添加以下内容

[Unit] Description=jms After=network.target mariadb.service
redis.service docker.service Wants=mariadb.service redis.service
docker.service

[Service] Type=forking
Environment=“PATH=/opt/py3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin”
ExecStart=/opt/jumpserver/jms start all -d
ExecRestart=/opt/jumpserver/jms restart all -d
ExecStop=/opt/jumpserver/jms stop

[Install] WantedBy=multi-user.target

(py3) [root@jumpserver ~]# systemctl daemon-reload
(py3) [root@jumpserver ~]#  systemctl restart jms   启动
(py3) [root@jumpserver ~]# netstat -anptu|grep 8080

在这里插入图片描述

(py3) [root@jumpserver ~]# systemctl enable jms  设置开机自启

11.登录访问jumpserver

登陆jumpserver,默认账号:admin 密码:admin
http://192.168.1.20:8080/
Jumpserver堡垒机_第10张图片
Jumpserver堡垒机_第11张图片
已完成部署

二、安装Web Terminal- koko组件

这里只是部署了Jumpserver, 没有 Web Terminal,所以访问 Web Terminal(web linux终端)会报错。
Jumpserver堡垒机_第12张图片
在这里插入图片描述
Koko的下载网址
https://github.com/jumpserver/koko/releases/download/1.5.2/koko-master-9ab4ea6-linux-amd64.tar.gz

py3) [root@jumpserver ~]# tar xf koko-master-6d4e69b-linux-amd64.tar.gz -C /opt/ 解压koko
(py3) [root@jumpserver ~]# chown -R root:root /opt/kokodir/   更改属组属主

修改koko配置文件

(py3) [root@jumpserver ~]#  cd /opt/kokodir/
(py3) [root@jumpserver kokodir]# cp config_example.yml config.yml  准备koko配置文件

(py3) [root@jumpserver kokodir]# vi config.yml #密钥要跟jumpserver的密钥一致
在这里插入图片描述

注释去掉

在这里插入图片描述

(py3) [root@jumpserver kokodir]# ./koko &  把koko放后台运行

在这里插入图片描述

默认监听两个端口号 5000和2222

(py3) [root@jumpserver kokodir]# echo " cd /opt/kokodir && ./koko & " >> /etc/rc.local      开机启动
 py3) [root@jumpserver kokodir]# chmod +x /etc/rc.local

在web后台查看终端

可以看见有jumpserver终端说明,安装成功
Jumpserver堡垒机_第13张图片
使用ssh测试
Jumpserver堡垒机_第14张图片

Jumpserver堡垒机_第15张图片
在这里插入图片描述
有了Web Terminal以后,我们可以远程堡垒机,然后通过堡垒机进行登录管理服务器。

jumpserver组件

Jumpserver 为管理后台,管理员可以通过Web页面进行资产管理、用户管理、资产授权等操作

Coco 为 SSH Server 和 Web Terminal Server(网页linux客户端)。用户可以通过使用自己的账户登录 SSH 或者 Web Terminal 直接访问被授权的资产。不需要知道服务器的账户密码,新版本的coco被koko取代。

Luna 为 Web Terminal Server 前端页面,用户使用 Web Terminal 方式登录所需要的组件
Guacamole 为 Windows 组件,用户可以通过 Web Terminal 来连接 Windows 资产 (暂时只能通过 Web Terminal 来访问)

部署luna 组件

软件下载地址:
https://github.com/jumpserver/luna/releases/download/1.5.2/luna.tar.gz

(py3) [root@jumpserver ~]#  tar -zxvf luna.tar.gz -C /opt/   解压lua
(py3) [root@jumpserver ~]# chown -R root:root /opt/luna/   设置权限

设置nginx 整合各组件

这里直接使用yum安装,也可以使用源码包安装.协调各个组件

(py3) [root@jumpserver ~]# yum install -y nginx    
(py3) [root@jumpserver ~]#  vim /etc/nginx/nginx.conf   修改配置文件

Nginx主要提供反向代理功能,这里要修改主配置文件里的默认server端口
Jumpserver堡垒机_第16张图片

所有的jumpserver的服务都使用nginx来进行反向代理,开启nginx缓存

(py3) [root@jumpserver ~]#  vim /etc/nginx/conf.d/jumpserver.conf  
 创建jumpserver配置文件
  server {
     
    listen 80;

    client_max_body_size 100m;  # 录像及文件上传大小限制

    location /luna/ {
     
        try_files $uri / /index.html; #如果访问不到luna就会访问到index.html
        alias /opt/luna/;  # luna 路径, 如果修改安装目录, 此处需要修改
    }

    location /media/ {
     
        add_header Content-Encoding gzip;
        root /opt/jumpserver/data/;  # 录像位置, 如果修改安装目录, 此处需要修改
    }

    location /static/ {
     
        root /opt/jumpserver/data/;  # 静态资源, 如果修改安装目录, 此处需要修改
    }

    location /socket.io/ {
           #将所有请求交给koko的5000端口
        proxy_pass       http://localhost:5000/socket.io/;
        proxy_buffering off;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        access_log off;
    }
 
    location /coco/ {
            #访问coco反向代理给5000端口
        proxy_pass       http://localhost:5000/coco/;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        access_log off;
    }
     location /guacamole/ {
           #以下参数是连接windos系统的参数
        proxy_pass       http://localhost:8081/;
        proxy_buffering off;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $http_connection;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        access_log off;
    }

    location / {
      #nginx访问,直接访问到jumpserver。访问时不需后面加8080
        proxy_pass http://localhost:8080;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
(py3) [root@jumpserver ~]# nginx -t    检查nginx语法

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

(py3) [root@jumpserver ~]# systemctl start nginx   启动nginx
(py3) [root@jumpserver ~]#  systemctl enable nginx   添加开机启动项
(py3) [root@jumpserver ~]# netstat -anput|grep 808

登录jumpserver

使用nginx做反向代理以后,就可以直接使用80端口来访问jumpserver
http://192.168.1.20/测试是否可以访问lua页面
Jumpserver堡垒机_第17张图片
Jumpserver堡垒机_第18张图片

jumpserver使用

配置jumpserver基本设置.
修改当前站点的URL为本机IP或者jumpserver的域名,不然新建用户发送过去的邮件修改不了密码。
Jumpserver堡垒机_第19张图片
在这里插入图片描述
1、设置jumpserver邮箱
设置jumpserver发件邮箱,用来给用户发送通知邮件,设置完了以后测试一下邮箱联通。
首先要生成授权码,然后设置邮箱
在这里插入图片描述
Jumpserver堡垒机_第20张图片
这里生成的授权码,后面会用到******************
Jumpserver堡垒机_第21张图片
最后点提交
在这里插入图片描述
这时候会收到一条邮件
在这里插入图片描述

创建用户

这里创建的用户是登陆jumpserver的用户,这个用户可以登陆jumpserver,然后通过jumpserver去连接被管理的服务器,最后登陆到被管理的服务器进行命令操作。当然,这里创建的用户也可以提权来管理jumpserver的后台。
在这里插入图片描述
Jumpserver堡垒机_第22张图片
Jumpserver堡垒机_第23张图片
邮件发送到了用户的邮箱,提示设置密码
在这里插入图片描述
Jumpserver堡垒机_第24张图片
Jumpserver堡垒机_第25张图片
现在可以是使用我们刚创建好的角色登录jumpserver
Jumpserver堡垒机_第26张图片
Jumpserver堡垒机_第27张图片
创建用户组
在这里插入图片描述
Jumpserver堡垒机_第28张图片
Jumpserver堡垒机_第29张图片
资产管理
Jumpserver所能管理的主机,叫做资产
开启两台主机,添加资产。
主机名是centos2和centos3

Jumpserver堡垒机_第30张图片
Jumpserver堡垒机_第31张图片

创建资产

资产管理用户已经创建好了,现在创建资产
Jumpserver堡垒机_第32张图片
Jumpserver堡垒机_第33张图片
Jumpserver堡垒机_第34张图片
Jumpserver堡垒机_第35张图片

创建命令过滤器

系统用户可以绑定一些命令过滤器,一个过滤器可以定义一些规则
当用户使用这个系统用户登录资产,然后执行一个命令 这个命令需要被绑定过滤器的所有规则匹配,高优先级先被匹配,

当一个规则匹配到了,如果规则的动作是允许,这个命令会被放行, 如果规则的动作是禁止,命令将会被禁止执行, 否则就匹配下一个规则,如果最后没有匹配到规则,则允许执行
Jumpserver堡垒机_第36张图片

Jumpserver堡垒机_第37张图片
在这里插入图片描述
Jumpserver堡垒机_第38张图片
Jumpserver堡垒机_第39张图片
Jumpserver堡垒机_第40张图片
资产管理管理这1.30,这样设置就会当管理1.30的时候,不会使用rm -rf 命令
Jumpserver堡垒机_第41张图片

创建系统用户

在资产上创建用户
系统用户是 Jumpserver 跳转登录被管理服务器时使用的用户,而不是使用某个用户的用户名跳转登录服务器(ssh xiaoming@some-host); 简单来说是用户使用自己的用户名登录 Jumpserver,Jumpserver 使用系统用户登录资产。

系统用户创建时,如果选择了自动推送,Jumpserver 会使用 Ansible 自动推送系统用户到资产中,如果资产(交换机)不支持 Ansible,请手动填写账号密码。
注意:这里添加完系统用户之后需要再给这个用户设置一个密码

Jumpserver堡垒机_第42张图片
Jumpserver堡垒机_第43张图片
在这里插入图片描述

资产授权

Jumpserver堡垒机_第44张图片
Jumpserver堡垒机_第45张图片
在这里插入图片描述
Jumpserver堡垒机_第46张图片

#在1.30上查看,是否有admin用户

[root@centos2 ~]# grep "admin" /etc/passwd
admin:x:1000:1000::/home/admin:/bin/bash

测试web终端

这里使用谷歌类的浏览器,有些浏览器不支持luna。使用运维总监登录
使用web终端登陆资产
Jumpserver堡垒机_第47张图片
在这里插入图片描述
如果这里连接不上,重新启动koko
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

使用会话登录资产

打开之前创建的会话
Jumpserver堡垒机_第48张图片
Jumpserver堡垒机_第49张图片
Jumpserver堡垒机_第50张图片
退出资产输入exit,在退出的话输入q

录像.

登录admin用户查看录像
Jumpserver堡垒机_第51张图片
Jumpserver堡垒机_第52张图片
Jumpserver堡垒机_第53张图片
Jumpserver堡垒机_第54张图片
在这里插入图片描述
视频存放的路径
在这里插入图片描述

你可能感兴趣的:(堡垒机,centos,linux,运维)