• CentOS 7下JumpServer安装及配置(超详细版)


    前言

    Jumpserver是一种用于访问和管理远程设备的Web应用程序,通常用于对服务器进行安全访问。它基于SSH协议,提供了一个安全和可管理的环境来管理SSH访问。Jumpserver是基于Python开发的一款开源工具,其提供了强大的访问控制功能,可以轻松实现用户、主机、命令和审计日志的管理。

    Jumpserver的主要功能包括:

    1. 访问控制:Jumpserver提供了灵活的访问控制,可以根据用户、角色、主机、命令和时间等因素实现精细的控制。

    2. 统一认证:Jumpserver支持LDAP、AD、Radius等认证方式,可以实现与企业内部认证系统的集成。

    3. 会话管理:Jumpserver可以记录所有SSH会话并生成审计日志,以便管理人员了解用户的操作情况。

    4. 实时监控:Jumpserver可以实时监控SSH会话,并提供了实时监控面板,可以随时了解用户的操作情况。

    5. 审计日志:Jumpserver提供了完整的审计日志功能,包括用户登录、会话记录、命令执行情况等,方便管理人员进行安全审计和追溯。

    6. 多租户:Jumpserver支持多租户功能,可以实现不同租户的资源隔离和安全管理。

    总之,Jumpserver是一款功能强大的安全访问控制系统,可以为企业提供强大的安全管理和审计功能。

    目录

    1 环境配置

    2 修改字符集

    3 安装软件包

    4 编译安装

    5 克隆(git clone)

    6 下载Jumpserver

    7 配置Jumpserver

     7.1 安装所需的Python modules

     7.2 安装Redis

     7.3 安装MySQL

     7.4 修改Jumpserver配置文件

     7.5 把配置写入config.yml文件

    8 启动/关闭Jumpserver

    9 部署koko

     9.1 使用docker部署

     9.2 手工下载部署

      9.2.1 部署

      9.2.2 启动koko 

     10 部署guacamole

     10.1 部署

     10.2 列出本地镜像

    11 部署luna

    12 配置nginx 

     12.1 nginx的安装

     12.2 配置nginx

     12.3 运行nginx

     12.4 修改nginx的主配置文件

    13 Jumpserver登录测试


    1 环境配置

    (1)关闭防火墙。

    systemctl stop firewalld

    (2)关闭SELinux。

    setenforce 0

    # setenforce 1    #设置SELinux为强制模式
    # setenforce 0    #设置SELinux为宽容模式

    普及:

    获取SELinux状态:

    getenforce

    getenforce是一个Linux命令,用于查看SELinux(Security-Enhanced Linux)安全机制的状态(SELinux是一款基于Linux内核的安全模块)。该命令可以显示当前SELinux的强制模式状态:enforcing(强制模式)、permissive(宽容模式)或disabled(禁用模式)。

    2 修改字符集

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

    3 安装软件包

    yum -y install wget sqlite-devel xz gcc automake zlib-devel openssl-devel epel-release git

    如图,显示“完毕!”即表示我们安装成功!

    接下来我们使用wget命令下载个Python的包,下载时间过长,耐心等待。

    wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz 

    为了确保我们安装成功,我们可以使用ls命令查看下

    如图即表示安装成功~接下来我们使用tar命令解压压缩包。

    tar xf Python-3.6.1.tar.xz 
    

     使用ls命令查看,发现有Python-3.6.1即表示我们解压成功!

    4 编译安装

    首先我们要进入到Python-3.6.1这个目录。

    cd Python-3.6.1

     编译安装(时间漫长,耐心等待)

    ./configure && make && make install

    5 克隆(git clone)

    进入opt目录下

    cd /opt

    使用Python3的环境。

    python3 -m venv py3
    
    source /opt/py3/bin/activate

    运行完毕后会出现:(py3) [root@localhost opt]# 

    使用git命令克隆

    git clone git://github.com/kennethreitz/autoenv.git

    【问题解决】

    问题一:

    fatal: unable to connect to github.com:

    github.com[0: 20.205.243.166]: errno=???? 

    这是因为有些网络环境可能会限制Git 协议默认使用端口的访问,或者直接阻止使用Git协议。因此,我们需要将git://github.com/替换为https://github.com/,这样可以确保与GitHub进行通信。

    git clone https://github.com/kennethreitz/autoenv.git

    问题二:

    fatal: unable to access 'https://github.com/kennethreitz/autoenv.git/': TCP connection reset by peer

    我们需要取消httphttps代理。 

    git config --global --unset http.proxy
    
    git config --global --unset https.proxy

     如图即表示我们成功啦~

    克隆完成后,source默认使用bashrc

    echo 'source /opt/autoenv/activate.sh' >> ~/.bashrc

     使环境变量生效。

    source ~/.bashrc

    6 下载Jumpserver

    我们还是使用克隆命令(git clone)下载并进入jumpserver目录(cd jumpserver)并将工作目录切换到主分支(git checkout master)。(时间漫长,耐心等待)

    git clone https://github.com/jumpserver/jumpserver.git && cd jumpserver && git checkout master

    在此过程中遇到同等问题还是取消http、https代理即可。

    7 配置Jumpserver

     7.1 安装所需的Python modules

    进入 jumpserver 目录时将自动载入 python 虚拟环境.

    echo "source /opt/py3/bin/activate" > /opt/jumpserver/.env

    安装依赖RPM包

    cd requirements/

     输入y

     

    yum -y install $(cat rpm_requirements.txt)

     安装Python依赖

    pip install --upgrade pip

     阿里云源下载(更快)

    pip install -r requirements.txt

    【问题解决】

    ERROR: Could not open requirements file: [Errno 2] 没有那个文件或目录: 'requirements.txt'

    先创建requirements.txt 

    pip freeze > requirements.txt

    重新执行命令

    pip install -r requirement.txt

     7.2 安装Redis

    yum -y install redis

    设置开机自启

    systemctl enable redis

     启动redis

    systemctl start redis

     7.3 安装MySQL

    在centos里,默认的数据库是mariadb

    yum -y install mariadb mariadb-devel mariadb-server

    启动mariadb

    systemctl start mariadb

    设置开机自启

    systemctl enable mariadb

    进入mariadb

    mysql

     创建jumpserver数据库默认使用utf8字符集

    create database jumpserver default charset 'utf8';

     给本机授权

    grant all on jumpserver.* to 'jumpserveradmin'@'127.0.0.1' identified by 'jumpserverpwd';

    刷新数据库

    flush privileges;

    \q退出

    \q

     7.4 修改Jumpserver配置文件

    先进入/opt/jumpserver目录下。(因为我们刚才在/opt/jumpserver/requirements下,所以直接cd ..进入上一目录即可。)

    cd ..
    cp config_example.yml config.yml

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

     注意:A-Za-z0-9 中不能有空格!且符号`不能写错,位置也不能错,否则将会遇到“-bash: /dev/urandom: 权限不够”的情况。

    echo $SECRET_KEY

    把SECRET_KEY写入bashrc中。

    echo "SECRET_KEY=$SECRET_KEY" >> ~/.bashrc

    生成随机BOOTSTRAP_TOKEN
    BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16`
    echo $BOOTSTRAP_TOKEN

     

    把BOOTSTRAP_TOKEN写入bashrc中。

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

     7.5 把配置写入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
    echo -e "\033[31m 你的SECRET_KEY是 $SECRET_KEY \033[0m"

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

    确认内容有没有错误

    vi config.yml

    修改如图所示内容

    修改成如图所示:

    配置完成啦~

    8 启动/关闭Jumpserver

    在/opt/jumpserver路径下。

    启动

    ./jms start 

    【看到一堆ok即表示启动成功,如果没成功显示error则表示配置有问题,则重新vi config.yml配置】

     后台启动(后台运行使用 -d 参数)

    ./jms start -d

    关闭

    ./jms stop

    【问题解决】

    Traceback (most recent call last):
      File "./jms", line 11, in
        import django
    ModuleNotFoundError: No module named 'django'

     

    使用pip install 模块名下载。

    pip install Django

    下载完成后重新启动就好。

    如果下载不成功,出现一堆红色下载不成功。

    更新 pip 到最新版本 

    pip install --upgrade pip

    再执行一次就好了。

    pip install Django

     最后一行显示successfully installed等表示成功安装django。

    成功啦~

    9 部署koko

    koko支持终端管理,默认端口(port)为2222。

    【提供两种方法,自行选择部署】

     9.1 使用docker部署

    下载docker

    yum -y install docker

     

    启动docker

    systemctl start docker

    查看自己的IP地址。(IP地址在“2:ens33:”中inet后面)

    ip a

    Server_IP=自己的IP地址。

    Server_IP=192.168.10.111

    查看BOOTSTRAP_TOKEN值

    echo $BOOTSTRAP_TOKEN

     根据查看的值输入下面指令。(值不一样,不要照搬下面指令)

    BOOTSTRAP_TOKEN=BZYt8bkFhzZjAjc2
    docker run --name jms_koko -d -p 2222:2222 -p 5000:5000 -e CORE_HOST=http://$Server_IP:8080 -e BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN jumpserver/jms_koko:1.5.5

    显示comolete就说明部署完成啦~

     9.2 手工下载部署

    【本人采用docker部署,所以手工部署就不附图啦~】

      9.2.1 部署

    进入/opt目录。

    cd /opt

    使用wget命令下载压缩包。【官方网站:https://github.com/jumpserver/koko/releases

    wget https://github.com/jumpserver/koko/releases/download/1.5.2/koko-master-37daa82-linux-amd64.tar.gz

     解压

    tar -xf koko-master-37daa82-linux-amd64.tar.gz

     进入/opt/kokodir

    cd /opt/kokodir

    授权

    chown -R root:root /opt/kokodir

    先使用cp命令备份一下(cp 源文件路径  目标文件夹)

    cp config_example.yml config.yml

     编辑config.yul   

    vi config.yml

    BOOTSTRAP_TOKEN需要 jumpserver/config.yml 里面获取,保证一致】 

    1. # 项目名称, 会用来向Jumpserver注册, 识别而已, 不能重复
    2. # NAME: {{ Hostname }}
    3. # Jumpserver项目的url, api请求注册会使用
    4. CORE_HOST: http://127.0.0.1:8080   # Core 的地址
    5. # Bootstrap Token, 预共享秘钥, 用来注册coco使用的service account和terminal
    6. # 请和jumpserver 配置文件中保持一致,注册完成后可以删除
    7. BOOTSTRAP_TOKEN: ********  # 和 Core config.yml 的值保持一致
    8. # 启动时绑定的ip, 默认 0.0.0.0
    9. BIND_HOST: 0.0.0.0
    10. # 监听的SSH端口号, 默认2222
    11. SSHD_PORT: 2222            # 使用 0.0.0.0:2222
    12. # 监听的HTTP/WS端口号,默认5000
    13. HTTPD_PORT: 5000           # 使用 0.0.0.0:5000
    14. # 项目使用的ACCESS KEY, 默认会注册,并保存到 ACCESS_KEY_STORE中,
    15. # 如果有需求, 可以写到配置文件中, 格式 access_key_id:access_key_secret
    16. # ACCESS_KEY: null
    17. # ACCESS KEY 保存的地址, 默认注册后会保存到该文件中
    18. # ACCESS_KEY_FILE: data/keys/.access_key
    19. # 设置日志级别 [DEBUG, INFO, WARN, ERROR, FATAL, CRITICAL]
    20. LOG_LEVEL: DEBUG           # 开发建议设置 DEBUG, 生产环境推荐使用 ERROR
    21. # SSH连接超时时间 (default 15 seconds)
    22. # SSH_TIMEOUT: 15
    23. # 语言 [en,zh]
    24. # LANGUAGE_CODE: zh
    25. # SFTP的根目录, 可选 /tmp, Home其他自定义目录
    26. # SFTP_ROOT: /tmp
    27. # SFTP是否显示隐藏文件
    28. # SFTP_SHOW_HIDDEN_FILE: false
    29. # 是否复用和用户后端资产已建立的连接(用户不会复用其他用户的连接)
    30. # REUSE_CONNECTION: true
    31. # 资产加载策略, 可根据资产规模自行调整. 默认异步加载资产, 异步搜索分页; 如果为all, 则资产全部加载, 本地搜索分页.
    32. # ASSET_LOAD_POLICY:
    33. # zip压缩的最大额度 (单位: M)
    34. # ZIP_MAX_SIZE: 1024M
    35. # zip压缩存放的临时目录 /tmp
    36. # ZIP_TMP_PATH: /tmp
    37. # 向 SSH Client 连接发送心跳的时间间隔 (单位: 秒),默认为30, 0则表示不发送
    38. # CLIENT_ALIVE_INTERVAL: 30
    39. # 向资产发送心跳包的重试次数,默认为3
    40. # RETRY_ALIVE_COUNT_MAX: 3
    41. # 会话共享使用的类型 [local, redis], 默认local
    42. # SHARE_ROOM_TYPE: local
    43. # Redis配置
    44. # REDIS_HOST: 127.0.0.1      # 如果需要部署多个 koko, 需要通过 redis 来保持会话
    45. # REDIS_PORT: 6379
    46. # REDIS_PASSWORD:
    47. # REDIS_CLUSTERS:
    48. # REDIS_DB_ROOM:

      9.2.2 启动koko 

    ./koko

     10 部署guacamole

    【基于HTML5和 JavaScript 的VNC查看器】

     10.1 部署

    docker run --name jms_guacamole -d -p 8081:8081 -e JUMPSERVER_SERVER=http://$Server_IP:8080 -e BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN jumpserver/jms_guacamole:1.5.5

    显示如图所示内容即表示部署成功!

    【问题解决】

    /usr/bin/docker-current: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
    See '/usr/bin/docker-current run --help'.

    启动下docker就好啦~

    systemctl start docker

    或者重新启动下docker服务。

    systemctl restart docker.service

     10.2 列出本地镜像

    docker images

    11 部署luna

    与nginx结合支持Web Terminal前端。

    进入opt目录。

    cd /opt/

    wget命令下载luna压缩包。

    wget https://github.com/jumpserver/luna/releases/download/1.5.5/luna.tar.gz

     【问题解决】

    [root@localhost opt]# wget https://github.com/jumpserver/luna/releases/download/1.5.5/luna.tar.gz
    --2023-10-10 10:41:10--  https://github.com/jumpserver/luna/releases/download/1.5.5/luna.tar.gz
    正在解析主机 github.com (github.com)... 20.205.243.166
    正在连接 github.com (github.com)|20.205.243.166|:443... 已连接。
    无法建立 SSL 连接。

    原因:

    wget在使用HTTPS协议时,默认会去验证其网站的证书,而这个证书验证经常会失败。

    问题解决:

    方法一:在后面加“--no-check-certificate”。(执行时候不验证SSL)

    --no-check-certificate

    【在最后加,在wget后面加还会报同样的错误】 

    搞定啦~ 

    方法二:将https换成http (更换协议,将https协议换成http)

    解压

    tar xf luna.tar.gz

    授权

    chown -R root:root luna

    12 配置nginx 

     12.1 nginx的安装

    https://blog.csdn.net/m0_64304713/article/details/133031042

    1.配置nginx所需环境

    yum -y install gcc gcc-c++ make zlib-devel pcre pcre-devel openssl-devel

    ​​

    pcre使nginx支持http rewrite模块

    openssl 使nginx支持ssl

    zlib提供nginx对http包的内容进行gzip压缩

    2.获取nginx压缩包

    方法一:官网直接下载.tar.gz压缩包,然后直接拉到linux里面/使用rz命令上传。(1.如果压缩包拉不进去,使用yum -y install lrzsz指令,再进行拉取。2.rz命令上传需先下载rz)

    yum -y install lrzsz

    方法二:使用wget命令下载(需要系统提前安装wget,如果没有安装,使用yum install wget进行安装。)

    3.解压

    解压到 /usr/local 下

    tar xzvf nginx-1.23.1.tar.gz -C /usr/local/

    ​​

    4.配置

    进入解压后的目录下。

    cd /usr/local/nginx-1.23.1/

     可以配置啦~ O(∩_∩)O哈哈~

    ./configure --prefix=/usr/local/nginx 

    ​​

    5.编译安装

    make && make install

     ​​

    编译安装成功!

     12.2 配置nginx

    cd /usr/local/nginx/conf/

    ls命令查看

    ​​

    创建conf.d文件夹

    mkdir conf.d

    ​​

    cd conf.d/

     创建并编辑Jumpserver.conf【注意:一定是以.conf结尾。】

    vi Jumpserver.conf

    写入内容如下:

    1. server {
    2. listen 80;
    3. client_max_body_size 100m; # 录像及文件上传大小限制
    4. location /luna/ {
    5. try_files $uri / /index.html;
    6. alias /opt/luna/; # luna 路径, 如果修改安装目录, 此处需要修改
    7. }
    8. location /media/ {
    9. add_header Content-Encoding gzip;
    10. root /opt/jumpserver/data/; # 录像位置, 如果修改安装目录, 此处需要修改
    11. }
    12. location /static/ {
    13. root /opt/jumpserver/data/; # 静态资源, 如果修改安装目录, 此处需要修改
    14. }
    15. location /socket.io/ {
    16. proxy_pass http://localhost:5000/socket.io/;
    17. proxy_buffering off;
    18. proxy_http_version 1.1;
    19. proxy_set_header Upgrade $http_upgrade;
    20. proxy_set_header Connection "upgrade";
    21. proxy_set_header X-Real-IP $remote_addr;
    22. proxy_set_header Host $host;
    23. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    24. access_log off;
    25. }
    26. location /koko/ {
    27. proxy_pass http://localhost:5000/koko/;
    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. location /guacamole/ {
    34. proxy_pass http://localhost:8081/;
    35. proxy_buffering off;
    36. proxy_http_version 1.1;
    37. proxy_set_header Upgrade $http_upgrade;
    38. proxy_set_header Connection $http_connection;
    39. proxy_set_header X-Real-IP $remote_addr;
    40. proxy_set_header Host $host;
    41. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    42. access_log off;
    43. }
    44. location / {
    45. proxy_pass http://localhost:8080;
    46. proxy_set_header X-Real-IP $remote_addr;
    47. proxy_set_header Host $host;
    48. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    49. }
    50. }

     12.3 运行nginx

    /usr/local/nginx/sbin/nginx

     后面加-t,显示ok,successful即表示运行成功~

    ​​

     12.4 修改nginx的主配置文件

    cd /usr/local/nginx/conf/

    编辑nginx.conf文件。

    vi nginx.conf 

    编辑前:

    ​​

    在keepalive_timeout  65;下面添加如下命令。

    include /usr/local/nginx/conf/conf.d/*.conf;

    编辑后: 

    ​​

    编辑完成后保存退出。

    重新启动nginx。

    /usr/local/nginx/sbin/nginx -s reload

    ​​

    没有报错,就可以开始登录测试吧~

    【如果报错,则表示刚才配置文件编写有问题,回去重新检查。】

    13 Jumpserver登录测试

    浏览器使用IP地址登录。

    错误页面

    ​​

     正确页面会显示Jumpserver开源堡垒机登录页面。

    用户名: admin 密码: admin】

    好啦,接下来就可以使用Jumpserver开源堡垒机啦~

    创作不易,给个三连吧~

    ​​

  • 相关阅读:
    【小程序】组件化开发的基本使用(一)
    CDR插件开发之Addon插件004 - VS2022开发环境简介及个性化配置
    项目实战:ES的增加数据和查询数据
    istio pod不启动及访问报RBAC错误问题解决
    Linux在线安装Mongodb
    LLaMA Adapter和LLaMA Adapter V2
    大数据-ClickHouse技术二(数据库引擎)
    STM32单片机-BKP和RTC
    SSM整合-异常处理器和项目异常处理方案
    Oauth2系列6:隐式模式
  • 原文地址:https://blog.csdn.net/m0_64304713/article/details/133578164