Jumpserver堡垒机安装配置全过程

最低配置要求:

硬件配置: 2个CPU核心, 4G 内存, 50G 硬盘(最低)
操作系统: Linux 发行版 x86_64

1、搭建环境前期准备

关闭selinux与防火墙

setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
systemctl stop firewalld.service
systemctl disable firewalld.service

安装环境依赖包

yum -y install wget gcc epel-release git gcc krb5-devel libtiff-devel libjpeg-devel libzip-devel freetype-devel libwebp-devel tcl-devel tk-devel sshpass openldap-devel mariadb-devel libffi-devel openssh-clients telnet openldap-clients docker

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

2、安装Python3和Python虚拟环境,并安装jumpserver

安装python3.6

yum -y install python3.6 python36-devel python-pip

建立虚拟化环境(因为 CentOS 7 自带的是 Python2,而 Yum 等工具依赖原来的 Python, 为了不扰乱原来的环境我们来使用 Python虚拟环境)

cd /opt/
python3.6 -m venv py3
source /opt/py3/bin/activate

安装jumpserver

git clone --depth=1 https://github.com/jumpserver/jumpserver.git

安装RPM包

cd /opt/jumpserver/requirements/
yum -y install $(cat rpm_requirements.txt)
pip install wheel -i https://mirrors.aliyun.com/pypi/simple/
pip install --upgrade pip setuptools -i https://mirrors.aliyun.com/pypi/simple/

安装python库依赖(推荐换源)

cd ~
mkdir .pip
ls ~/.pip
vi ~/.pip/pip.conf

添加配置如下:
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/

[install]
trusted-host=mirrors.aliyun.com

换源成功,添加依赖

pip install -r requirements.txt  # 不要指定-i参数,因为镜像上可能没有最新的包,如果没有任何报错请继续

在这里遇到了python-gssapi-0.6.4.tar.gz怎么也安装不了的问题,这就需要用到之前下好的rz命令了

① 首先找到这个包并注释掉
vim jumpserver/requirements/requirements.txt

② 然后运行
pip install -r /opt/jumpserver/requirements/requirements.txt -i https://mirrors.aliyun.com/pypi/simple/

③ 安装完毕后,取消注释
vim jumpserver/requirements/requirements.txt

④ 取消注释后,有再尝试上面的命令安装,如果仍然失败,则选择电脑本机手动下载,然后使用rz -be上传包                    #一定注意是使用rz -be,这是二进制上传的方式

⑤ 手动安装rpm包
pip install python-gssapi-0.6.4.tar.gz

配置修改(记住 SECRET_KEY和BOOTSTRAP_TOKE)

cd /opt/jumpserver/
cp config_example.yml config.yml
SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`
echo "SECRET_KEY=$SECRET_KEY" >> ~/.bashrc
BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16`
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 "33[31m 你的SECRET_KEY是 $SECRET_KEY 33[0m"
echo -e "33[31m 你的BOOTSTRAP_TOKEN是 $BOOTSTRAP_TOKEN 33[0m"

启动程序,在启动成功后设置开机自启

cd /opt/jumpserver/
./jms start -d

echo 'source /opt/py3/bin/activate && /opt/jumpserver/jms start -d' >> /etc/rc.local && chmod +x /etc/rc.d/rc.local

3.安装 SSH Server 和 WebSocket Server: koko

下载docker容器项目

(这里有尝试下coco作为websocket,但是怎么下启动都报错,所以选择了koko作为组件)

cd /opt

Server_IP=`ip addr | grep 'state UP' -A2 | grep inet 
| egrep -v '(127.0.0.1|inet6|docker)' | awk '{print $2}' | tr -d "addr:" 
| head -n 1 | cut -d / -f1`   && echo -e "33[31m 你的服务器IP是 $Server_IP 33[0m"   && echo -e "33[31m 你的BOOTSTRAP_TOKEN是 $BOOTSTRAP_TOKEN 33[0m"

docker run --name jms_koko -d   -p 2222:2222 -p 127.0.0.1:5000:5000   -e CORE_HOST=http://$Server_IP:8080   -e BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN   -e LOG_LEVEL=ERROR   --restart=always   jumpserver/jms_koko:2.0.1

开启ipv4

echo "net.ipv4.ip_forward=1" >>/usr/lib/sysctl.d/00-system.conf

systemctl restart network && systemctl restart docker

4.安装 Web Terminal 前端: Luna

下载安装

cd /opt/
wget https://github.com/jumpserver/luna/releases/download/1.3.3/luna.tar.gz
tar xf luna.tar.gz
chown -R root:root luna

  

5.Docker部署Guacamole组件

cd /opt
docker run --name jms_guacamole -d 
  -p 127.0.0.1:8081:8080 
  -e JUMPSERVER_SERVER=http://$Server_IP        #必须修改为自身的ip地址
  -e BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN      #必须填入自身的TOKEN
  -e GUACAMOLE_LOG_LEVEL=ERROR 
  jumpserver/jms_guacamole:2.0.1

  

6.lina组件部署

cd /opt
wget https://demo.jumpserver.org/download/lina/latest/lina-v2.2.3.tar.gz
tar -xf lina-v2.2.3.tar.gz
mv lina-v2.2.3 lina
chown -R nginx:nginx lina

  

7.Nginx 整合各组件配置

server {
    listen 80;

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

    location /ui/ {
        try_files $uri / /index.html;
        alias /opt/lina/;
    }

    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 /koko/ {
        proxy_pass       http://localhost:5000;
        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 /guacamole/ {
        proxy_pass       http://localhost:8081/;
        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 /ws/ {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://localhost:8070;
        proxy_http_version 1.1;
        proxy_buffering off;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    location /api/ {
        proxy_pass http://localhost:8080;
        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 /core/ {
        proxy_pass http://localhost:8080;
        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 / {
        rewrite ^/(.*)$ /ui/$1 last;
    }
}

  

8.启用nginx

systemctl enable nginx
systemctl start nginx
systemctl status nginx
nginx -t
nginx -s reload

  

原文地址:https://www.cnblogs.com/tcarry/p/13674733.html