Jumpserver:1.CentOS下安装

2019-05-30  本文已影响0人  小六的昵称已被使用

总体介绍

欢迎来到 Jumpserver 文档。

Jumpserver 是全球首款完全开源的堡垒机, 使用 GNU GPL v2.0 开源协议, 是符合 4A 的专业运维审计系统。

Jumpserver 使用 Python / Django 进行开发, 遵循 Web 2.0 规范, 配备了业界领先的 Web Terminal 解决方案, 交互界面美观、用户体验好。

Jumpserver 采纳分布式架构, 支持多机房跨区域部署, 中心节点提供 API, 各机房部署登录节点, 可横向扩展、无并发访问限制。

Jumpserver 现已支持管理 SSH、 Telnet、 RDP、 VNC 协议资产。

改变世界, 从一点点开始。

组件说明

Jumpserver 为管理后台, 管理员可以通过Web页面进行资产管理、用户管理、资产授权等操作

Coco 为 SSH Server 和 Web Terminal Server 。用户可以通过使用自己的账户登录 SSH 或者 Web Terminal 直接访问被授权的资产。不需要知道服务器的账户密码

Luna 为 Web Terminal Server 前端页面, 用户使用 Web Terminal 方式登录所需要的组件

Guacamole 为 Windows 组件, 用户可以通过 Web Terminal 来连接 Windows 资产 (暂时只能通过 Web Terminal 来访问)

端口说明

Protocol    Server name     Port        Config File
TCP         Jumpserver      8080        jumpserver/config.yml
TCP         Coco            2222, 5000  coco/config.yml
TCP         Guacamole       8081
TCP         Db              3306
TCP         Redis           6379
TCP         Nginx           80

环境

[root@test-node-1 ~]# cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core)

第一步:准备 Python3 和 Python 虚拟环境

以后运行 Jumpserver 都要先运行以下 source 命令, 以下所有命令均在该虚拟环境中运行

## 安装依赖
yum -y install wget gcc epel-release git krb5-devel

## 安装 Python3.6
yum -y install python36 python36-devel

## 建立 Python 虚拟环境
## 因为 CentOS 7 自带的是 Python2, 而 Yum 等工具依赖原来的 Python2
## 为了不扰乱原来的环境我们来使用 Python 虚拟环境
cd /opt
python3.6 -m venv py3
source /opt/py3/bin/activate

第二步:安装 Jumpserver

1.下载或 Clone 项目

source /opt/py3/bin/activate
cd /opt/
git clone --depth=1 https://github.com/jumpserver/jumpserver.git

2.安装依赖 RPM 包

cd /opt/jumpserver/requirements
yum -y install $(cat rpm_requirements.txt)

3.安装 Python 库依赖

pip install --upgrade pip setuptools
pip install -r requirements.txt

## 如果下载速度很慢, 可以换国内源
pip install --upgrade pip setuptools -i https://mirrors.aliyun.com/pypi/simple/
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/

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

yum -y install redis
systemctl enable redis
systemctl stop redis
systemctl start redis
systemctl status redis

5.安装 MySQL

## 1.安装MySQL
cat <<EOF >/etc/yum.repos.d/mysql-community.repo 
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
EOF
yum install -y mysql-community-server

## 2.启动和初始化
systemctl start mysqld
systemctl status mysqld
systemctl enable mysqld

grep 'temporary password' /var/log/mysqld.log
mysql_secure_installation

6.创建数据库 Jumpserver 并授权

mysql -uroot -pXiaoliu123!

create database jumpserver default charset 'utf8';
grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by 'Xiaoliu123!';
flush privileges;
select user, host from mysql.user;
show databases;
exit

7.修改 Jumpserver 配置文件

cd /opt/jumpserver
cp config_example.yml config.yml

SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`  # 生成随机SECRET_KEY
echo "SECRET_KEY=$SECRET_KEY" >> ~/.bashrc
BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16`  # 生成随机BOOTSTRAP_TOKEN
echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc

sed -i "s/SECRET_KEY:/SECRET_KEY: $SECRET_KEY/g" /opt/jumpserver/config.yml
sed -i "s/BOOTSTRAP_TOKEN:/BOOTSTRAP_TOKEN: $BOOTSTRAP_TOKEN/g" /opt/jumpserver/config.yml
sed -i "s/# DEBUG: true/DEBUG: false/g" /opt/jumpserver/config.yml
sed -i "s/# LOG_LEVEL: DEBUG/LOG_LEVEL: ERROR/g" /opt/jumpserver/config.yml
sed -i "s/# SESSION_EXPIRE_AT_BROWSER_CLOSE: false/SESSION_EXPIRE_AT_BROWSER_CLOSE: true/g" /opt/jumpserver/config.yml
sed -i "s/DB_PASSWORD: /DB_PASSWORD: $DB_PASSWORD/g" /opt/jumpserver/config.yml

echo -e "\033[31m 你的SECRET_KEY是 $SECRET_KEY \033[0m"
echo -e "\033[31m 你的BOOTSTRAP_TOKEN是 $BOOTSTRAP_TOKEN \033[0m"

## 确认内容有没有错误
cat config.yml

8.运行 Jumpserver

cd /opt/jumpserver

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

第三步:安装 SSH Server 和 WebSocket Server: Coco

1.下载或 Clone 项目

cd /opt
source /opt/py3/bin/activate
git clone --depth=1 https://github.com/jumpserver/coco.git

2.安装依赖

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

## 如果下载速度很慢, 可以换国内源
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/

3.修改配置文件并运行

cd /opt/coco
cp config_example.yml config.yml

sed -i "s/BOOTSTRAP_TOKEN: <PleasgeChangeSameWithJumpserver>/BOOTSTRAP_TOKEN: $BOOTSTRAP_TOKEN/g" /opt/coco/config.yml
sed -i "s/# LOG_LEVEL: INFO/LOG_LEVEL: ERROR/g" /opt/coco/config.yml

cat config.yml

4.运行

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

第四步:安装 Web Terminal 前端: Luna

Luna 已改为纯前端, 需要 Nginx 来运行访问

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

## 下载
cd /opt
wget https://github.com/jumpserver/luna/releases/download/1.4.10/luna.tar.gz

## 如果网络有问题导致下载无法完成可以使用下面地址
wget https://demo.jumpserver.org/download/luna/1.4.10/luna.tar.gz

## 解压
tar xf luna.tar.gz
chown -R root:root luna

第五步:配置 Nginx 整合各组件

1.安装 Nginx

## 安装依赖
yum install yum-utils

## 配置 YUM 源
cat <<\EOF >/etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
EOF

## 安装 Nginx
yum makecache fast
yum install -y nginx

## 启动 Nginx
rm -rf /etc/nginx/conf.d/default.conf
systemctl enable nginx
systemctl stop nginx
systemctl start nginx
systemctl status nginx

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

cat <<\EOF >/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://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";
        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://localhost: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://localhost: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://localhost: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;
    }
}
EOF

3.运行 Nginx

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

# CentOS 7
systemctl stop nginx
systemctl start nginx
systemctl status nginx
systemctl enable nginx

第六步:开始使用 Jumpserver

检查应用是否已经正常运行

服务全部启动后, 访问 http://192.168.244.144, 访问nginx代理的端口, 不要再通过8080端口访问

默认账号: admin 密码: admin

到Jumpserver 会话管理-终端管理 检查 Coco Guacamole 等应用的注册。

测试连接

## 如果登录客户端是 macOS 或 Linux, 登录语法如下(密码: admin)
ssh -p2222 admin@192.168.244.144
sftp -P2222 admin@192.168.244.144

## 如果登录客户端是 Windows, Xshell Terminal 登录语法如下(密码: admin)
ssh admin@192.168.244.144 2222
sftp admin@192.168.244.144 2222

如果能登陆代表部署成功

sftp默认上传的位置在资产的 /tmp 目录下
windows拖拽上传的位置在资产的 Guacamole RDP上的 G 目录下

第七步:Systemd 管理自启

1.Jumpserver

cat <<\EOF >/usr/lib/systemd/system/jms.service
[Unit]
Description=jms
After=network.target mariadb.service redis.service
Wants=mariadb.service redis.service

[Service]
Type=forking
Environment="PATH=/opt/py3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
ExecStart=/opt/jumpserver/jms start all -d
ExecReload=
ExecStop=/opt/jumpserver/jms stop

[Install]
WantedBy=multi-user.target
EOF

2.Coco

cat <<\EOF >/usr/lib/systemd/system/coco.service
[Unit]
Description=coco
After=network.target jms.service

[Service]
Type=forking
PIDFile=/opt/coco/coco.pid
Environment="PATH=/opt/py3/bin"
ExecStart=/opt/coco/cocod start -d
ExecReload=
ExecStop=/opt/coco/cocod stop

[Install]
WantedBy=multi-user.target
EOF

3.开机自启设置

## 开机自动启动
systemctl enable jms
systemctl enable coco

## 启动
systemctl start jms
systemctl start coco

## 状态查看
systemctl status jms
systemctl status coco

## 停止
systemctl stop jms
systemctl stop coco

附录:

https://jumpserver.readthedocs.io/zh/docs/introduce.html

上一篇下一篇

猜你喜欢

热点阅读