Jumpserver堡垒机搭建

系统: CentOS 7 IP: 192.168.11.199
关闭 selinux 和防火墙
# setenforce 0 # 临时关闭,重启后失效
# systemctl stop firewalld.service # 临时关闭,重启后失效

修改字符集,否则可能报 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

一. 准备 Python3 和 Python 虚拟环境
1.1 安装依赖包
# yum -y install wget sqlite-devel xz gcc automake zlib-devel openssl-devel epel-release git

1.2 编译安装
# wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
# tar xvf Python-3.6.1.tar.xz && cd Python-3.6.1
# ./configure && make && make install

1.3 建立 Python 虚拟环境
# cd /opt
# python3 -m venv py3
# source /opt/py3/bin/activate

1.4 自动载入 Python 虚拟环境配置
# cd /opt
# git clone https://github.com/kennethreitz/autoenv.git
# echo 'source /opt/autoenv/activate.sh' >> ~/.bashrc
# source ~/.bashrc

二. 安装 Jumpserver
2.1 下载或 Clone 项目
# cd /opt/
# git clone https://github.com/jumpserver/jumpserver.git && cd jumpserver && git checkout master
# echo "source /opt/py3/bin/activate" > /opt/jumpserver/.env # 进入 jumpserver 目录时将自动载入 python 虚拟环境

2.2 安装依赖 RPM 包
# cd /opt/jumpserver/requirements
# yum -y install $(cat rpm_requirements.txt) # 如果没有任何报错请继续

2.3 安装 Python 库依赖
# pip install -r requirements.txt

2.4 安装 Redis, Jumpserver 使用 Redis 做 cache 和 celery broke
# yum -y install redis
# systemctl enable redis
# systemctl start redis


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

2.6 创建数据库 Jumpserver 并授权
# mysql -p123456
> create database jumpserver default charset 'utf8';
> grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by '123456';
> flush privileges;

2.7 修改 Jumpserver 配置文件
# cd /opt/jumpserver
# cp config_example.py config.py
# vi config.py

# 注意对齐,不要直接复制本文档的内容,实际内容以文件为准
注意: 配置文件是 Python 格式,不要用 TAB,而要用空格
修改:
# SECRET_KEY = os.environ.get('SECRET_KEY') or '2vym+ky!997d5kkcc64mnz06y1mmui3lut#(^wd=%s_qj$1%x'
SECRET_KEY = '请随意输入随机字符串(推荐字符大于等于 50位)'

# 日志级别,默认为DEBUG,可调整为INFO, WARNING, ERROR, CRITICAL,默认INFO
LOG_LEVEL = os.environ.get("LOG_LEVEL") or 'WARNING'
LOG_DIR = os.path.join(BASE_DIR, 'logs')

# 使用的数据库配置,支持sqlite3, mysql, postgres等,默认使用sqlite3
# See https://docs.djangoproject.com/en/1.10/ref/settings/#databases

# 默认使用SQLite3,如果使用其他数据库请注释下面两行
# DB_ENGINE = 'sqlite3'
# DB_NAME = os.path.join(BASE_DIR, 'data', 'db.sqlite3')

# 如果需要使用mysql或postgres,请取消下面的注释并输入正确的信息,本例使用mysql做演示(mariadb也是mysql)
DB_ENGINE = os.environ.get("DB_ENGINE") or 'mysql'
DB_HOST = os.environ.get("DB_HOST") or '127.0.0.1'
DB_PORT = os.environ.get("DB_PORT") or 3306
DB_USER = os.environ.get("DB_USER") or 'jumpserver'
DB_PASSWORD = os.environ.get("DB_PASSWORD") or '123456'
DB_NAME = os.environ.get("DB_NAME") or 'jumpserver'

2.8 生成数据库表结构和初始化数据
# cd /opt/jumpserver/utils
# bash make_migrations.sh

2.9 运行 Jumpserver
# cd /opt/jumpserver
# ./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
# cd /opt
# source /opt/py3/bin/activate
# git clone https://github.com/jumpserver/coco.git && cd coco && git checkout master
# echo "source /opt/py3/bin/activate" > /opt/coco/.env # 进入 coco 目录时将自动载入 python 虚拟环境

3.2 安装依赖
# cd /opt/coco/requirements
# yum -y install $(cat rpm_requirements.txt)
# pip install -r requirements.txt

3.3 修改配置文件并运行
# cd /opt/coco
# mkdir keys
# cp conf_example.py conf.py # 如果 coco 与 jumpserver 分开部署,请手动修改 conf.py
# vi conf.py

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

# Jumpserver项目的url, api请求注册会使用, 如果Jumpserver没有运行在127.0.0.1:8080,请修改此处
# CORE_HOST = os.environ.get("CORE_HOST") or 'http://127.0.0.1:8080'
CORE_HOST = 'http://127.0.0.1:8080'

# 设置日志级别 ['DEBUG', 'INFO', 'WARN', 'ERROR', 'FATAL', 'CRITICAL']
# LOG_LEVEL = 'INFO'
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相对比较复杂)
# yum remove docker-latest-logrotate docker-logrotate docker-selinux dockdocker-engine
# yum install -y yum-utils device-mapper-persistent-data lvm2
#
# 添加docker官方源
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# yum makecache fast
# 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,若与主机上其他端口冲突请自定义

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

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

六. 配置 Nginx 整合各组件
# yum -y install nginx

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

# vim /etc/nginx/conf.d/jumpserver.conf
server {
listen 80; # 代理端口,以后将通过此端口进行访问,不再通过8080端口
server_name demo.jumpserver.org; # 修改成你的域名

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

location /luna/ {
try_files $uri / /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/ {
proxy_pass http://192.168.11.199:5000/socket.io/; # 如果coco安装在别的服务器,请填写它的ip
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/ {
proxy_pass http://192.168.11.199:5000/coco/; # 如果coco安装在别的服务器,请填写它的ip
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/ {
proxy_pass http://192.168.11.199:8081/; # 如果guacamole安装在别的服务器,请填写它的ip
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 / {
proxy_pass http://192.168.11.199:8080; # 如果jumpserver安装在别的服务器,请填写它的ip
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

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


6.4 开始使用 Jumpserver
检查应用是否已经正常运行
# cd /opt/jumpserver
# ./jms status # 确定jumpserver已经运行,如果没有运行请重新启动jumpserver
# cd /opt/coco
# ./cocod status # 确定jumpserver已经运行,如果没有运行请重新启动coco

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

默认账号: admin 密码: admin

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

测试连接

如果登录客户端是 macOS 或 Linux ,登录语法如下
# ssh -p2222 [email protected]
# sftp -P2222 [email protected]
密码: admin

如果登录客户端是 Windows ,Xshell Terminal 登录语法如下
# ssh [email protected] 2222
# sftp [email protected] 2222
密码: admin


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

猜你喜欢

转载自www.cnblogs.com/jay-fred/p/9956315.html