Jumpserver堡垒机搭建

系统: CentOS 7 IP: 192.168.11.199
关闭 selinux 和防火墙

1 # setenforce 0             # 临时关闭,重启后失效
2 # systemctl stop firewalld.service # 临时关闭,重启后失效

 

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

1 # localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8
2 # export LC_ALL=zh_CN.UTF-8
3 # echo 'LANG="zh_CN.UTF-8"' > /etc/locale.conf

 

一. 准备 Python3 和 Python 虚拟环境
1.1 安装依赖包

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

 

1.2 编译安装

1 # wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
2 # tar xvf Python-3.6.1.tar.xz && cd Python-3.6.1
3 # ./configure && make && make install

 

1.3 建立 Python 虚拟环境

1 # cd /opt
2 # python3 -m venv py3
3 # source /opt/py3/bin/activate

 

1.4 自动载入 Python 虚拟环境配置

1 # cd /opt
2 # git clone https://github.com/kennethreitz/autoenv.git
3 # echo 'source /opt/autoenv/activate.sh' >> ~/.bashrc
4 # source ~/.bashrc



二. 安装 Jumpserver
2.1 下载或 Clone 项目

1 # cd /opt/
2 # git clone https://github.com/jumpserver/jumpserver.git && cd jumpserver && git checkout master
3 # echo "source /opt/py3/bin/activate" > /opt/jumpserver/.env # 进入 jumpserver 目录时将自动载入 python 虚拟环境

 

2.2 安装依赖 RPM 包

1 # cd /opt/jumpserver/requirements
2 # yum -y install $(cat rpm_requirements.txt) # 如果没有任何报错请继续

 

2.3 安装 Python 库依赖

1 # pip install -r requirements.txt

 

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

1 # yum -y install redis
2 # systemctl enable redis
3 # systemctl start redis

 

2.5 安装 MySQL

1 # yum -y install mariadb mariadb-devel mariadb-server   # centos7下安装的是mariadb
2 # systemctl enable mariadb
3 # systemctl start mariadb
4 # mysql_secure_installation    #设置mysql密码,比如密码设置为123456

 

2.6 创建数据库 Jumpserver 并授权

1 # mysql -p123456
2 > create database jumpserver default charset 'utf8';
3 > grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by '123456';
4 > flush privileges;

 

2.7 修改 Jumpserver 配置文件

1 # cd /opt/jumpserver
2 # cp config_example.py config.py
3 # vi config.py

 

# 注意对齐,不要直接复制本文档的内容,实际内容以文件为准
注意: 配置文件是 Python 格式,不要用 TAB,而要用空格
修改:

1 # SECRET_KEY = os.environ.get('SECRET_KEY') or '2vym+ky!997d5kkcc64mnz06y1mmui3lut#(^wd=%s_qj$1%x'
2  SECRET_KEY = '请随意输入随机字符串(推荐字符大于等于 50位)'

 

# 日志级别,默认为DEBUG,可调整为INFO, WARNING, ERROR, CRITICAL,默认INFO

1 LOG_LEVEL = os.environ.get("LOG_LEVEL") or 'WARNING'
2 LOG_DIR = os.path.join(BASE_DIR, 'logs')

 

# 使用的数据库配置,支持sqlite3, mysql, postgres等,默认使用sqlite3

1 # See https://docs.djangoproject.com/en/1.10/ref/settings/#databases

 

# 默认使用SQLite3,如果使用其他数据库请注释下面两行

1 # DB_ENGINE = 'sqlite3'
2 # DB_NAME = os.path.join(BASE_DIR, 'data', 'db.sqlite3')

 

# 如果需要使用mysql或postgres,请取消下面的注释并输入正确的信息,本例使用mysql做演示(mariadb也是mysql)

1 DB_ENGINE = os.environ.get("DB_ENGINE") or 'mysql'
2 DB_HOST = os.environ.get("DB_HOST") or '127.0.0.1'
3 DB_PORT = os.environ.get("DB_PORT") or 3306
4 DB_USER = os.environ.get("DB_USER") or 'jumpserver'
5 DB_PASSWORD = os.environ.get("DB_PASSWORD") or '123456'
6 DB_NAME = os.environ.get("DB_NAME") or 'jumpserver'

 


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

1 # cd /opt/jumpserver/utils
2 # bash make_migrations.sh



2.9 运行 Jumpserver

1 # cd /opt/jumpserver
2 # ./jms start all # 后台运行使用 -d 参数./jms start all -d

 

运行不报错,请浏览器访问 http://192.168.11.199:8080/ 默认账号: admin 密码: admin

三. 安装 SSH Server 和 WebSocket Server: Coco
3.1 下载或 Clone 项目
新开一个终端,别忘了 source /opt/py3/bin/activate

1 # cd /opt
2 # source /opt/py3/bin/activate
3 # git clone https://github.com/jumpserver/coco.git && cd coco && git checkout master
4 # echo "source /opt/py3/bin/activate" > /opt/coco/.env # 进入 coco 目录时将自动载入 python 虚拟环境

 


3.2 安装依赖

1 # cd /opt/coco/requirements
2 # yum -y install $(cat rpm_requirements.txt)
3 # pip install -r requirements.txt

 


3.3 修改配置文件并运行

1 # cd /opt/coco
2 # mkdir keys
3 # cp conf_example.py conf.py # 如果 coco 与 jumpserver 分开部署,请手动修改 conf.py
4 # vi conf.py

 

# 注意对齐,不要直接复制本文档的内容
注意: 配置文件是 Python 格式,不要用 TAB,而要用空格
修改:

1 # NAME = "localhost"
2 NAME = "coco"

 

# Jumpserver项目的url, api请求注册会使用, 如果Jumpserver没有运行在127.0.0.1:8080,请修改此处

1 # CORE_HOST = os.environ.get("CORE_HOST") or 'http://127.0.0.1:8080'
2 CORE_HOST = 'http://127.0.0.1:8080'

 


# 设置日志级别 ['DEBUG', 'INFO', 'WARN', 'ERROR', 'FATAL', 'CRITICAL']

1 # LOG_LEVEL = 'INFO'
2 LOG_LEVEL = 'WARN'

 

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

# 新版本更新了运行脚本,使用方式./cocod start|stop|status|restart 后台运行请添加 -d 参数
启动成功后去Jumpserver 会话管理-终端管理(http://192.168.11.199:8080/terminal/terminal/)接受coco的注册

四. 安装 Web Terminal 前端: Luna
Luna 已改为纯前端,需要 Nginx 来运行访问
4.1 解压 Luna

# cd /opt
# wget https://github.com/jumpserver/luna/releases/download/1.4.3/luna.tar.gz
# tar xvf luna.tar.gz
# chown -R root:root luna

 


五. 安装 Windows 支持组件(如果不需要管理 windows 资产,可以直接跳过这一步)
因为手动安装 guacamole 组件比较复杂,这里提供打包好的 docker 使用, 启动 guacamole

5.1 Docker安装 (仅针对CentOS7,CentOS6安装Docker相对比较复杂)

1 # yum remove docker-latest-logrotate docker-logrotate docker-selinux dockdocker-engine
2 # yum install -y yum-utils device-mapper-persistent-data lvm2

 


# 添加docker官方源

1 # yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
2 # yum makecache fast
3 # yum install docker-ce

 

# 国内部分用户可能无法连接docker官网提供的源,这里提供阿里云的镜像节点供测试使用

# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# rpm --import http://mirrors.aliyun.com/docker-ce/linux/centos/gpg
# yum makecache fast
# yum -y install docker-ce
# systemctl start docker
# systemctl status docker

 

5.2 启动 Guacamole

这里所需要注意的是 guacamole 暴露出来的端口是 8081,若与主机上其他端口冲突请自定义

1 # docker run --name jms_guacamole -d \
2 -p 8081:8080 -v /opt/guacamole/key:/config/guacamole/key \
3 -e JUMPSERVER_KEY_DIR=/config/guacamole/key \
4 -e JUMPSERVER_SERVER=http://<填写jumpserver的url地址> \
5 jumpserver/guacamole:latest

 


启动成功后去Jumpserver 会话管理-终端管理(http://192.168.11.199:8080/terminal/terminal/)接受[Gua]开头的一个注册

六. 配置 Nginx 整合各组件

6.1 安装nginx

1 # yum -y install nginx

 


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

 1 # vim /etc/nginx/conf.d/jumpserver.conf
 2 server {
 3 listen 80; # 代理端口,以后将通过此端口进行访问,不再通过8080端口
 4 server_name demo.jumpserver.org; # 修改成你的域名
 5 
 6 client_max_body_size 100m; # 录像及文件上传大小限制
 7 
 8 location /luna/ {
 9 try_files $uri / /index.html;
10 alias /opt/luna/; # luna 路径,如果修改安装目录,此处需要修改
11 }
12 
13 location /media/ {
14 add_header Content-Encoding gzip;
15 root /opt/jumpserver/data/; # 录像位置,如果修改安装目录,此处需要修改
16 }
17 
18 location /static/ {
19 root /opt/jumpserver/data/; # 静态资源,如果修改安装目录,此处需要修改
20 }
21 
22 location /socket.io/ {
23 proxy_pass http://192.168.11.199:5000/socket.io/; # 如果coco安装在别的服务器,请填写它的ip
24 proxy_buffering off;
25 proxy_http_version 1.1;
26 proxy_set_header Upgrade $http_upgrade;
27 proxy_set_header Connection "upgrade";
28 proxy_set_header X-Real-IP $remote_addr;
29 proxy_set_header Host $host;
30 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
31 access_log off;
32 }
33 
34 location /coco/ {
35 proxy_pass http://192.168.11.199:5000/coco/; # 如果coco安装在别的服务器,请填写它的ip
36 proxy_set_header X-Real-IP $remote_addr;
37 proxy_set_header Host $host;
38 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
39 access_log off;
40 }
41 
42 location /guacamole/ {
43 proxy_pass http://192.168.11.199:8081/; # 如果guacamole安装在别的服务器,请填写它的ip
44 proxy_buffering off;
45 proxy_http_version 1.1;
46 proxy_set_header Upgrade $http_upgrade;
47 proxy_set_header Connection $http_connection;
48 proxy_set_header X-Real-IP $remote_addr;
49 proxy_set_header Host $host;
50 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
51 access_log off;
52 }
53 
54 location / {
55 proxy_pass http://192.168.11.199:8080; # 如果jumpserver安装在别的服务器,请填写它的ip
56 proxy_set_header X-Real-IP $remote_addr;
57 proxy_set_header Host $host;
58 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
59 }
60 }

 

6.3 运行 Nginx
# nginx -t # 确保配置没有问题, 有问题请先解决

1 # systemctl start nginx
2 # systemctl enable nginx

 

6.4 开始使用 Jumpserver
检查应用是否已经正常运行

1 # cd /opt/jumpserver
2 # ./jms status # 确定jumpserver已经运行,如果没有运行请重新启动jumpserver
3 # cd /opt/coco
4 # ./cocod status # 确定jumpserver已经运行,如果没有运行请重新启动coco

 

# 如果安装了 Guacamole
# docker ps # 检查容器是否已经正常运行,如果没有运行请重新启动Guacamole
服务全部启动后,访问 http://192.168.11.199,访问nginx代理的端口,不要再通过8080端口访问

默认账号: admin 密码: admin

如果部署过程中没有接受应用的注册,需要到Jumpserver 会话管理-终端管理 接受 Coco Guacamole 等应用的注册。

测试连接

如果登录客户端是 macOS 或 Linux ,登录语法如下

1 # ssh -p2222 admin@192.168.11.199
2 # sftp -P2222 admin@192.168.11.199


密码: admin

如果登录客户端是 Windows ,Xshell Terminal 登录语法如下

1 # ssh admin@192.168.11.199 2222
2 # sftp admin@192.168.11.199 2222


密码: admin


Xshell登录通过堡垒机登录:
新建连接(堡垒机IP和密码)——>用户身份验证(系统普通用户)

 

posted @ 2018-11-14 09:44  依然-Fanstic  阅读(600)  评论(0编辑  收藏  举报