jumpserver

说明


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


基础环境

master: jumpserver 服务

slave1: 要被管理的主机

参考文档:

https://docs.jumpserver.org/zh/master/install/setup_by_fast/

https://github.com/LIZEJU/jumpserver/tags (jumpserver的github地址)



centos阿里源镜像

http://mirrors.aliyun.com/centos/

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

yum -y clean all

yum -y makecache fast

yum -y install epel*

yum -y makecache fast

# 修改字符集,否则可能报 input/output error的问题,因为日志里打印了中文

localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8

export LC_ALL=zh_CN.UTF-8

echo 'LANG=zh_CN.UTF-8' > /etc/locale.conf

yum -y install wget sqlite-devel xz gcc automake zlib-devel openssl-devel epel-release git

获取 GPG 密钥失败:[Errno 14] curl#37 - "Couldn't open file /etc/pki/rpm-gpg/RPM-GP

G-KEY-EPEL-7

[root@master ~]# scp -r /etc/pki/rpm-gpg/RPM-GPG-KEY-* slave1:/etc/pki/rpm-gpg/

root@slave1's password:

RPM-GPG-KEY-CentOS-7                            100% 1690    13.8KB/s  00:00   

RPM-GPG-KEY-CentOS-Debug-7                      100% 1004  145.8KB/s  00:00   

RPM-GPG-KEY-CentOS-Testing-7                    100% 1690  390.2KB/s  00:00   

RPM-GPG-KEY-EPEL-7                              100% 1662  776.6KB/s  00:00

Jumpserver  github下载

下载python3.6

https://www.python.org/downloads/source/

https://www.python.org/ftp/python/3.6.13/Python-3.6.13.tgz

tar xvf Python-3.6.13.tgz

cd Python-3.6.13

./configure && make -j 4 && make install

python3 -V

cd /opt/

创建虚拟环境

python3 -m venv py3

[root@master opt]# ls

py3

[root@master opt]# cd py3/

[root@master py3]# ls

bin  include  lib  lib64  pyvenv.cfg

[root@master py3]# cd bin/

[root@master bin]# ls

activate      activate.fish  easy_install-3.6  pip3    python

activate.csh  easy_install  pip              pip3.6  python3

[root@master bin]# python -V

Python 2.7.5

[root@master bin]# source activate

(py3) [root@master bin]# python -V

Python 3.6.13

安装jumpserver 



https://github.com/LIZEJU/jumpserver/tags  下载jumpserver的压缩包

安装依赖rpm包

cd jumpserver/requirements

yum -y install $(cat rpm_requirements.txt)

安装python依赖库

cd jumpserver/requirements

source /opt/py3/bin/activate (激活创建的虚拟环境)

pip install -r requirements.txt 

安装redis,jumpserver使用redis作为缓存和异步celery_broke

yum -y install redis 

systemctl enable redis ; systemctl start redis 

安装mariadb ,可以不用设置,jumpserver默认使用的sqllite作为数据库,在这里使用mysql

yum install mariadb mariadb-devel mariadb-server -y

systemctl enable mariadb  ;  systemctl start mariadb

创建数据库

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)]> exit;

修改jumpserver的配置文件

cd /opt/jumpserver

cp config_example.py config.py

vim config.py

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

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

class DevelopmentConfig(Config):

    DEBUG = True

    DB_ENGINE = 'mysql'

    DB_HOST = '127.0.0.1'

    DB_PORT = 3306

    DB_USER = 'jumpserver'

    DB_PASSWORD = '123456'

    DB_NAME = 'jumpserver

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

(py3)  cd /opt/jumpserver/utils

(py3) bash make_migrations.sh  #注,在执行这一条命令之前,必续保障之前的pip install ./* 命令已经执行完了,不然后导入不了Django等软件包。

9、行 Jumpserver

(py3) cd /opt/jumpserver

(py3) chmod +x jms

(py3) ./jms start all -d # 后台运行使用 -d 参数

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

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

#启动服务的脚本,使用方式./jms start|stop|status|restart all  后台运行请添加 -d 参数

可以访问链接:

http://192.168.10.100:8080

user/pwd == admin/admin 

安装coco组件

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

(py3) cd /opt/coco  #直接使用离线代码

(py3) source /opt/py3/bin/activate 

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

或者在github上搜索coco,并找他的发布版本下载

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

(py3) cd /opt/coco/requirements

(py3) yum -y  install $(cat rpm_requirements.txt) 

(py3) pip install -r requirements.txt  #前面已经离线安装过python的包,这里就很快安装成功了,或提示已经安装成功。

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

3、查看配置文件并运行

(py3) cd /opt/coco

(py3)cp conf_example.py conf.py  # 如果 coco 与 jumpserver 分开部署,请手动修改 conf.py

(py3) chmod +x cocod

(py3) ./cocod start -d  #后台运行使用 -d 参数

# 新版本更新了运行脚本,使用方式./cocod start|stop|status|restart  后台运行请添加 -d 参数


安装terminal 前端 lua组件,以及配置nginx组合各组件

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

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

解压 Luna

(py3) cd /opt

(py3) tar xvf luna.tar.gz

(py3) ls /opt/luna

注:在线下载

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

配置 Nginx 整合各组件

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

(py3) yum -y install nginx

5.2 准备配置文件 修改 /etc/nginx/conf.d/jumpserver.conf

内容如下:

(py3)  vim /etc/nginx/nginx.conf

删除第38行到 57行中server {。。。}相关的内容,在vim命令模式,输入38gg,快速跳到38行,然后输入20dd,就可以删除。

删除后,在38行插入以一下内容:

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/jumpserver-package/luna/;

    }

    location /media/ {

        add_header Content-Encoding gzip;

        root /opt/jumpserver-package/jumpserver/data/;

    }

    location /static/ {

        root  /opt/jumpserver-package/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

    }

}

运行nginx

nginx -t 检查配置文件

systemctl start nginx ; systemctl enable nginx

访问:

http://192.168.10.100:80/   == 192.168.10.100:8080

http://192.168.10.100:80/luna/ 访问到luna webternimal页面, 一个web终端窗口

http://192.168.10.100:80/socket.io/ ==  http://localhost:5000/socket.io/  coco websocket接口

更多内容参考官方手册:http://docs.jumpserver.org/zh/docs/step_by_step.html

推荐阅读更多精彩内容