前介

1、jumperver介绍

Jumpserver 是一款由Python编写开源的跳板机(堡垒机)系统,实现了跳板机应有的功能。基于ssh协议来管理,客户端无需安装agent。

特点:

完全开源,GPL授权 Python编写,容易再次开发 实现了跳板机基本功能,认证、授权、审计 集成了Ansible,批量命令等 支持WebTerminal Bootstrap编写,界面美观 自动收集硬件信息 录像回放 命令搜索 实时监控 批量上传下载

2、jumpserver 2.0安装

Centos 6.5 x86_64 关闭 iptables,关闭 selinux jumpserver:192.168.1.200 clients:192.168.1.210 ps:操作只针对 jumpserver,clients 不会进行操作,只是环境需求。

3、安装依赖包

yum -y install epel-release yum clean all && yum makecache yum -y update yum -y install git python-pip MySQL-devel gcc automake autoconf python-devel vim sshpass lrzsz readline-devel

4、下载jmpserver

cd /opt Git clone https://github.com/jumpserver/jumpserver.git

注: 如果下载失败,则去github上面下载zip包,unzip解压缩即可

jumpserver下载地址:

https://github.com/jumpserver/jumpserver

https://github.com/jumpserver/jumpserver/release

jumpserver官网指导文档

https://jumpserver.readthedocs.io/zh/master/

docker堡垒机 堡垒机 开源_github

5、执行快速安装脚本

cd /opt/jumpserver/install
pip install -r requirement.txt

docker堡垒机 堡垒机 开源_docker堡垒机_02

查看安装的包 pip freeze

python install.py 输入jumpserver的地址,默认为:”192.168.1.200”,回车即可。 是否安装MySQL:选择”y”进行安装

docker堡垒机 堡垒机 开源_docker堡垒机_03

MySQL 启动后会要求用户输入 邮件服务器及账户(后期用来发送用户名、ssh pass、web pass、ssh key)

163邮箱用授权密码,而不是登入密码 ,切记 。

docker堡垒机 堡垒机 开源_github_04

输入smtp信息之后发现报错了,是python的pycrypto模块问题,需要卸载重装: pip uninstall pycrypto easy_install pycrypto

docker堡垒机 堡垒机 开源_运维_05

docker堡垒机 堡垒机 开源_github_06

docker堡垒机 堡垒机 开源_github_07

安装之后继续 python install.py 进行安装,并且输入 web管理员用户名和管理员密码,ok

docker堡垒机 堡垒机 开源_github_08

运行 crontab,定期处理失效连接,定期更新资产信息 cd /opt/jumpserver python manage.py crontab add

注:

1)根据提示输入相关信息,完成安装,安装完成后,请访问web,继续查看后续文档

2)如果启动失败,请返回上层目录,手动运行 ./service.sh start 启动

3)如果 ./service.sh start 启动失败 cd /opt/jumpserver python manage.py runserver 0.0.0.0:80 python run_websocket.py

4)如果启动失败,可能是由于80端口和3000端口已经被占用,或者数据库账号密码不对,请检查

6、更新代码

cd /opt/jumpserver 
git pull

Linux中的环境搭建到这一步就结束,下一步就是web页面的操作


操作

一、jumpserver架构图

docker堡垒机 堡垒机 开源_github_09

主要难理解的三个用户概念:

  1. 用户: 指上图中的运维老大或运维小弟,用来通过公网登录jumpserver的
  2. 管理用户: 用于管理资产的用户,一般为root或sudo配置的无密码登录用户
  3. 系统用户: 登录资产时使用的用户, 为了安全不直接使用root用户,而是使用普通用户(通过root授予相应的权限)

4A标准

  • auth
  • authorized
  • audit
  • account

二、jumpserver部署

直接参考官方网站,简单暴力(但需要网速较好,因为要下载大量的软件包,python模块与docker镜像等)

https://jumpserver.readthedocs.io/zh/master/

安装完成后,使用浏览器访问http://IP就可以了

docker堡垒机 堡垒机 开源_运维_10

部署问题:

除了官方文档上的问题解决外,还有一个坑

因为软件包随着时间的不同,可能版本会有变化,如果在安装python模块时出现下面的问题,请解决,否则即使能部署成功,但后面的功能也会受影响

解决思路:

(py3) [root@vm5 ~]# pip install urllib3==1.22
(py3) [root@vm5 ~]# pip install future==0.16.0

docker堡垒机 堡垒机 开源_docker堡垒机_11

(py3) [root@vm5 ~]# pip install jms-storage==0.0.22

注意: pip install会自动卸载原版本,安装你指定的版本.但也有可能会出现新的报错。总之全解决,直到没有报错才继续。

三、邮箱授权

admin(运维老大)创建个用户(运维小弟),还要帮你创建密码?

不好意思,我小弟太多管不过来,而且我是管理员,不屑于知道你密码。

那你就配置个邮箱吧,发邮件链接给你自己改。

docker堡垒机 堡垒机 开源_docker堡垒机_12

docker堡垒机 堡垒机 开源_python_13

四、jumpserver系统设置

docker堡垒机 堡垒机 开源_python_14

docker堡垒机 堡垒机 开源_docker堡垒机_15

docker堡垒机 堡垒机 开源_python_16

五、创建jumpserver普通用户

docker堡垒机 堡垒机 开源_运维_17

docker堡垒机 堡垒机 开源_python_18

docker堡垒机 堡垒机 开源_github_19

docker堡垒机 堡垒机 开源_python_20

张三登录自己的邮箱自行设置密码

docker堡垒机 堡垒机 开源_python_21

docker堡垒机 堡垒机 开源_docker堡垒机_22

docker堡垒机 堡垒机 开源_github_23

docker堡垒机 堡垒机 开源_docker堡垒机_24

docker堡垒机 堡垒机 开源_github_25

docker堡垒机 堡垒机 开源_github_26

六、创建管理用户

docker堡垒机 堡垒机 开源_运维_27


docker堡垒机 堡垒机 开源_python_28


docker堡垒机 堡垒机 开源_运维_29

七、创建系统用户

docker堡垒机 堡垒机 开源_运维_30

docker堡垒机 堡垒机 开源_python_31

docker堡垒机 堡垒机 开源_docker堡垒机_32

docker堡垒机 堡垒机 开源_python_33

八、创建资产

docker堡垒机 堡垒机 开源_运维_34

docker堡垒机 堡垒机 开源_docker堡垒机_35

docker堡垒机 堡垒机 开源_运维_36

docker堡垒机 堡垒机 开源_运维_37

九、创建授权规则

docker堡垒机 堡垒机 开源_python_38

docker堡垒机 堡垒机 开源_docker堡垒机_39

docker堡垒机 堡垒机 开源_docker堡垒机_40

docker堡垒机 堡垒机 开源_运维_41

十、连接测试

10.1 命令连接进行管理

docker堡垒机 堡垒机 开源_github_42

docker堡垒机 堡垒机 开源_python_43

为了安全,建议配置nginx 反向代理 jumpserver

log_format jumpserver '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$request_time" $request_body "$http_referer" "$http_user_agent" "$http_x_forwarded_for" $scheme $http_host';
server {
listen 8080 ssl;
listen 80;
deny all;
server_name jumpserver.xxxx.com;
index index.html index.htm index.PHP;
ssl_certificate ssl/xxxx.com.crt;
ssl_certificate_key ssl/xxxx.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
if ( $scheme = http ) {
rewrite ^(.*)$ https://$host:8090$request_uri? permanent;
}
location / {
proxy_set_header Connection "";
proxy_http_version 1.1;
proxy_pass http://10.43.12.31:8090;
}
location ^~ /ws/ {
proxy_pass http://10.43.12.31:8090/ws/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
access_log /data0/logs/jumpserver.log jumpserver;
error_log /data0/logs/jumpserver_error.log debug;
}

10.2 登录web进行管理

docker堡垒机 堡垒机 开源_docker堡垒机_44

点击web终端就会跳到web管理终端

docker堡垒机 堡垒机 开源_运维_45

点击文件管理就会跳到文件管理界面

docker堡垒机 堡垒机 开源_运维_46

十一、管理员查看信息

admin管理员可以进行会话的管理与查看, 命令历史记录,录像的回放等功能

docker堡垒机 堡垒机 开源_github_47

docker堡垒机 堡垒机 开源_python_48

docker堡垒机 堡垒机 开源_python_49

更多功能请自行挖掘,觉得功能还不够,请自行二次开发.