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和密码)——>用户身份验证(系统普通用户)
您的资助是我最大的动力!
金额随意,欢迎来赏!