Jumpserver堡垒机

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

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

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

Jumpserver概述:

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

Jumpserver实现的功能:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
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/1Ik_vh04KPmTxftPKThym_A
提取码:pjtr

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
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/
在这里插入图片描述
在这里插入图片描述
已完成部署

二、安装Web Terminal- koko组件

这里只是部署了Jumpserver, 没有 Web Terminal,所以访问 Web Terminal(web linux终端)会报错。
在这里插入图片描述
在这里插入图片描述
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终端说明,安装成功
在这里插入图片描述
使用ssh测试
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
有了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的服务都使用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使用

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

创建用户

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

在这里插入图片描述
在这里插入图片描述

创建资产

资产管理用户已经创建好了,现在创建资产
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

创建命令过滤器

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

当一个规则匹配到了,如果规则的动作是允许,这个命令会被放行, 如果规则的动作是禁止,命令将会被禁止执行, 否则就匹配下一个规则,如果最后没有匹配到规则,则允许执行
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
资产管理管理这1.30,这样设置就会当管理1.30的时候,不会使用rm -rf 命令
在这里插入图片描述

创建系统用户

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

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

资产授权

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

测试web终端

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

使用会话登录资产

打开之前创建的会话
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
退出资产输入exit,在退出的话输入q

录像.

登录admin用户查看录像
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
视频存放的路径
在这里插入图片描述

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值