zoukankan      html  css  js  c++  java
  • 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
    

      

  • 相关阅读:
    精英程序员
    C语言(2)
    C语言练习
    C语言工具---Code::Blocks
    C语言(1)
    【udacity】机器学习-神经网络
    【udacity】机器学习-回归
    【udacity】机器学习-决策树
    【术语记录】机器学习
    python入门(九):目录操作
  • 原文地址:https://www.cnblogs.com/tcarry/p/13674733.html
Copyright © 2011-2022 走看看