• JumpServer堡垒机安装笔记


    厂商文档--一步一步安装CentOS(https://jumpserver.readthedocs.io/zh/master/setup_by_centos.html

    厂商文档--简单优化(https://jumpserver.readthedocs.io/zh/master/setup_by_optimization.html

    厂商文档--自动启动(https://jumpserver.readthedocs.io/zh/master/start_automatically.html

    1、推荐系统配置

    x86_64 双核/4G RAM/mysql(maridb)/centos7

    如果你打开了防火墙,则:

    firewall-cmd --zone=public --add-port=80/tcp --permanent  #开放80端口

    firewall-cmd --zone=public --add-port=2222/tcp --permanent  #用户ssh端口

    firewall-cmd --reload    #重新载入防火墙规则

    关闭selinux:

    setenforce 0

    sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

    2、准备python3和Python虚拟环境

    安装依赖包

    yum -y install wget gcc epel-release git

    安装python36

    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

    yum -y install python36 python36-devel

    运行虚拟环境

    由于CentOS自带python2.7所以运行python3最好使用虚拟环境

    cd /opt

    python3.6 -m venv py3

    source /opt/py3/bin/activate

    #运行后看到"(py3) [root@localhost py3]" 表示  成功。以后运行junpserver都要先用source进入py3虚拟环境。

    #退出虚拟环境“deactivate”,但进去就不要退出了。

    3、安装Jumpserver

    下载Jumpserver

    cd /opt/

    #由于github clone比较大(比较安全),如果不需要完整代码,下载zip文件较好

    #git clone 项目

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

    #下载zip文件

     wget https://github.com/jumpserver/jumpserver/archive/master.zip

    安装依赖包

    cd /opt/jumpserver/requirements

    yum -y install $(cat rpm_requirements.txt)   #依赖包都写在文件里

    #安装python库依赖

    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 start redis

    5、安装Mysql(mariadb)

    yum -y install mariadb mariadb-devel mariadb-server mariadb-shared

    systemctl enable mariadb

    systemctl start mariadb

    创建数据库Jumpserver并授权

    DB_PASSWORD=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 24`   #生成24位伪随机数密码

    echo -e "33[31m 你的数据库密码是 $DB_PASSWORD 33[0m"   #显示你的密码

    mysql -uroot -e "create database jumpserver default charset 'utf8'; grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by '$DB_PASSWORD'; flush privileges;"   #创建jumpserver数据库

    修改Jumpserver配置文件

    cd /opt/jumpserver

    cp config_example.yml config.yml  #复制配置文件

    SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`   #生成50位伪随机密钥

    echo "SECRET_KEY=$SECRET_KEY" >> ~/.bashrc    #把密钥复制到home目录的.bashrc中

    BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16`    #生出16位伪随机

    echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc   #把这个16位伪随机数追加到home目录的.bashrc中

    修改"/opt/jumpserver/config.yml"中的参数

    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

    逐一确认修改的参数

    vim /opt/jumpserver/config.yml

    #上面列出的6条已经更改。

    运行Jumpserver,注意,要在python3虚拟环境下运行

    cd /opt/jumpserver

    ./jms start all -d  #说明:./jms start|stop|status all  后台运行请添加 -d 参数

    6、安装SSH Server和WebSocket Server:Coco

    下载或克隆coco项目

    cd /opt

    source /opt/py3/bin/activate  #确保在虚拟py3的环境中

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

    安装coco依赖

    cd /opt/coco/requirements

    yum -y install $(cat rpm_requirements.txt)

    pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/  #果然使用国内源飞快

    修改配置文件并运行

    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

    vim config.yml    #逐项检查上面两个参数是否已更新上去

    ./cocod start -d  #在py3虚拟环境下面运行coco,使用方式./cocod start|stop|status  后台运行请添加 -d 参数

    安装WebTerminal 前端 Luna,需要Nginx来访问,直接解压不需要编译

    cd /opt

    wget https://demo.jumpserver.org/download/luna/1.5.0/luna.tar.gz

    tar -vxf luna.tar.gz

    chown -R root:root luna

    7、安装Windows组件

    安装依赖

    rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro

    rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm

    yum -y localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm https://download1.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-7.noarch.rpm

    yum install -y java-1.8.0-openjdk libtool

    yum install -y cairo-devel libjpeg-turbo-devel libpng-devel uuid-devel

    yum install -y ffmpeg-devel freerdp-devel freerdp-plugins pango-devel libssh2-devel libtelnet-devel libvncserver-devel pulseaudio-libs-devel openssl-devel libvorbis-devel libwebp-devel ghostscript

    8、编译安装guacamole服务

    cd /opt

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

    cd /opt/docker-guacamole

    tar -xf guacamole-server-0.9.14.tar.gz

    cd guacamole-server-0.9.14

    autoreconf -fi

    ./configure --with-init-dir=/etc/init.d

    make && make install

    ln -s /usr/local/lib/freerdp/*.so /usr/lib64/freerdp/

    cd ..

    rm -rf guacamole-server-0.9.14

    ldconfig

    配置Tomcat,先准备好运行目录和环境

    mkdir -p /config/guacamole /config/guacamole/lib /config/guacamole/extensions

    ln -sf /opt/docker-guacamole/guacamole-auth-jumpserver-0.9.14.jar /config/guacamole/extensions/guacamole-auth-jumpserver-0.9.14.jar

    ln -sf /opt/docker-guacamole/root/app/guacamole/guacamole.properties /config/guacamole/guacamole.properties

    cd /config

    #下载tomcat

    wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.41/bin/apache-tomcat-8.5.41.tar.gz

    tar -vxf tomcat-8.5.41.tar.gz

    rm tomcat-8.5.41.tar.gz

    mv appache-tomcat-8.5.41 tomcat8  #重新命名为一个好记的名字

    rm -rf /config/tomcat8/webapps/*   #删掉例子

    ln -sf /opt/docker-guacamole/guacamole-0.9.14.war /config/tomcat8/webapps/ROOT.war    #连接guacamole的客户端

    sed -i 's/Connector port="8080"/Connector port="8081"/g' /config/tomcat8/conf/server.xml   #修改配置文件,把默认端口改成8081

    sed -i 's/FINE/WARNING/g' /config/tomcat8/conf/logging.properties  #修改日志级别为warning

    wget https://demo.jumpserver.org/download/ssh-forward/v0.0.5/linux-amd64.tar.gz

    下载ssh-forward

    cd /config

    wget https://demo.jumpserver.org/download/ssh-forward/v0.0.5/linux-amd64.tar.gz

    tar -vxf linux-and64.tar.gz -C /bin/

    chmod +x /bin/ssh-forward

    配置环境变量(只需配置一次,配置玩检查是否正确配置即可)

    export JUMPSERVER_SERVER=http://127.0.0.1:8080  #即使生效

    echo "export JUMPSERVER_SERVER=http://127.0.0.1:8080" >> ~/.bashrc  #写入配置文件

    export BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN

    echo "export BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc

    export JUMPSERVER_KEY_DIR=/config/guacamole/keys

    echo "export JUMPSERVER_KEY_DIR=/config/guacamole/keys" >> ~/.bashrc

    export GUACAMOLE_HOME=/config/guacamole

    echo "export GUACAMOLE_HOME=/config/guacamole" >> ~/.bashrc

    启动Guacamole

    /etc/init.d/guacd start

    sh /config/tomcat8/bin/startup.sh

    9、配置Nginx整合各组件

    yum install yum-utils

    vi /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

    yum makecache fast

    yum install -y nginx

    rm -rf /etc/nginx/conf.d/default.conf

    systemctl enable nginx

    修改nginx的配置配置文件“/etc/nginx/conf.d/jumpserver.conf”

    vi /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;

        }

    }

    运行Nginx

    systemctl start nginx

    systemctl enable nginx

    10、性能优化

    vim /opt/jumpserver/config.yml

    DEBUG: flase

    LOG_LEVEL: ERROR

    vim /opt/coco/config.yml

    LOG_LEVEL: ERROR

    重启jumpserver和coco服务

    ./jms start all -d

    ./cocod start -d

    11、开机自启动

    生成启动文件

    #jms(Jumpserver)服务

    vi /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

    #CoCo服务

    vi /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

    #Guacamole服务

    chkconfig guacd on

    vi /usr/lib/systemd/system/guacamole.service

    [Unit]

    Description=guacamole

    After=network.target jms.service

    Wants=jms.service

    [Service]

    Type=forking

    # PIDFile=/config/tomcat8/tomcat.pid

    # BOOTSTRAP_TOKEN 根据实际情况修改可以在~/.bashrc中找到

    Environment="JUMPSERVER_SERVER=http://127.0.0.1:8080" "JUMPSERVER_KEY_DIR=/config/guacamole/keys" "GUACAMOLE_HOME=/config/guacamole" "BOOTSTRAP_TOKEN=******"

    ExecStart=/config/tomcat8/bin/startup.sh

    ExecReload=

    ExecStop=/config/tomcat8/bin/shutdown.sh

    [Install]

    WantedBy=multi-user.target

    开机自启

    systemctl enable jms

    systemctl enable coco

    systemctl enable guacamole

    启停服务(这些命令不要再生产环境使用,会引起错误,只有在不能自启动时才用)

    systemctl start/stop jms

    systemctl start/stop coco

    systemctl start/stop guacamole

  • 相关阅读:
    web中间件之nginx
    JVM之工具分析
    jprofiler监控tomcat
    如何查看端口被占用
    训练赛第二场C题 zoj 2339 Hyperhuffman
    训练赛第三场A题 zoj 559
    训练赛第二场G题 ZOJ 2343
    训练赛第一场D题
    训练赛第一场A题 (ZOJ 2313)
    HDU 1422 重温世界杯 DP题
  • 原文地址:https://www.cnblogs.com/gucb/p/11157357.html
Copyright © 2020-2023  润新知