一、jumpserver簡介
JumpServer 是全球首款完全開源的堡壘機, 使用 GNU GPL v2.0 開源協議, 是符合 4A 的專業運維審計系統。
JumpServer 使用 Python / Django 進行開發, 遵循 Web 2.0 規范, 配備了業界領先的 Web Terminal 解決方案, 交互界面美觀、用戶體驗好。
JumpServer 采納分布式架構, 支持多機房跨區域部署, 中心節點提供 API, 各機房部署登錄節點, 可橫向擴展、無並發訪問限制。
JumpServer 現已支持管理 SSH、 Telnet、 RDP、 VNC 協議資產。
官網:https://docs.jumpserver.org/zh/master/
二、jumpserver安裝
2.1、極速安裝
采用極速安裝的方式
https://docs.jumpserver.org/zh/master/install/setup_by_fast/
[root@cloud01 ~]# curl -sSL https://github.com/jumpserver/jumpserver/releases/download/v2.1.1/quick_start.sh #!/bin/bash # which wget >/dev/null 2>&1 if [ $? -ne 0 ];then yum install -y wget fi which git >/dev/null 2>&1 if [ $? -ne 0 ];then yum install -y git fi if [ ! -d "/opt/setuptools" ]; then wget -qO /opt/setuptools.tar.gz http://demo.jumpserver.org/download/setuptools.tar.gz tar -xf /opt/setuptools.tar.gz -C /opt rm -rf /opt/setuptools.tar.gz fi cd /opt/setuptools git pull if [ ! -f "/opt/setuptools/config.conf" ]; then cp config_example.conf config.conf fi ./jmsctl.sh install [root@cloud01 ~]# curl -sSL https://github.com/jumpserver/jumpserver/releases/download/v2.1.1/quick_start.sh | sh
可以通過http://ip:port訪問
2.2、修改密碼
2.3、相關命令
jumpserver默認安裝在/opt目錄下
[root@cloud01 opt]# ls containerd jumpserver lina luna py3 setuptools [root@cloud01 opt]# cd setuptools/ [root@cloud01 setuptools]# ll total 44 -rw-r--r-- 1 root root 989 Aug 11 11:49 config.conf -rw-r--r-- 1 root root 875 Aug 9 15:07 config_example.conf -rwxr-xr-x 1 root root 1961 Aug 9 15:07 jmsctl.sh -rw-r--r-- 1 root root 18046 Aug 9 15:07 LICENSE -rw-r--r-- 1 root root 623 Aug 9 15:07 README.md drwxr-xr-x 6 root root 4096 Aug 9 15:07 scripts drwxr-xr-x 2 root root 4096 Aug 11 11:46 v2.1.1 [root@cloud01 setuptools]# tree . ├── config.conf ├── config_example.conf ├── jmsctl.sh ├── LICENSE ├── README.md ├── scripts │ ├── check_install_env.sh │ ├── docker │ │ └── daemon.json │ ├── install_core.sh │ ├── install_docker.sh │ ├── install_guacamole.sh │ ├── install_koko.sh │ ├── install_mariadb.sh │ ├── install_nginx.sh │ ├── install_py3.sh │ ├── install_redis.sh │ ├── install.sh │ ├── install_status.sh │ ├── nginx │ │ ├── jumpserver.conf │ │ ├── nginx-1.18.0-1.el7.ngx.x86_64.rpm │ │ └── nginx.repo │ ├── pypi │ │ └── pip.conf │ ├── reset.sh │ ├── service │ │ └── jms_core.service │ ├── set_firewall.sh │ ├── start.sh │ ├── stop.sh │ ├── uninstall.sh │ └── upgrade.sh └── v2.1.1 ├── jumpserver-v2.1.1.tar.gz ├── lina-v2.1.1.tar.gz └── luna-v2.1.1.tar.gz 6 directories, 31 files [root@cloud01 setuptools]# cat jmsctl.sh #啟停腳本 #!/usr/bin/env bash # BASE_DIR=$(cd "$(dirname "$0")";pwd) PROJECT_DIR=${BASE_DIR} SCRIPT_DIR=${BASE_DIR}/scripts action=$1 target=$2 if [ ! -f "$PROJECT_DIR/config.conf" ]; then echo -e "Error: No config file found." echo -e "You can run 'cp config_example.conf config.conf', and edit it." exit 1 fi source ${PROJECT_DIR}/config.conf function usage() { echo "JumpServer 部署安裝腳本" echo echo "Usage: " echo " jmsctl [COMMAND] ..." echo " jmsctl --help" echo echo "Commands: " echo " install 安裝 JumpServer" echo " start 啟動 JumpServer" echo " stop 停止 JumpServer" echo " restart 重啟 JumpServer" echo " status 檢查 JumpServer" echo " uninstall 卸載 JumpServer" echo " upgrade 升級 JumpServer" echo " reset 重置組件" } function main() { case "${action}" in install) bash ${SCRIPT_DIR}/install.sh ;; uninstall) bash ${SCRIPT_DIR}/uninstall.sh ;; upgrade) bash ${SCRIPT_DIR}/upgrade.sh ;; start) bash ${SCRIPT_DIR}/start.sh ;; stop) bash ${SCRIPT_DIR}/stop.sh ;; restart) bash ${SCRIPT_DIR}/stop.sh bash ${SCRIPT_DIR}/start.sh ;; status) bash ${SCRIPT_DIR}/install_status.sh ;; reset) if [ ! $target ]; then echo -e "Usage: jmsctl reset COMMAND\n" echo -e "Commands:" echo -e " koko 重置 koko" echo -e " guacamole 重置 guacamole" exit 1 else bash ${SCRIPT_DIR}/reset.sh $target fi ;; --help) usage ;; -h) usage ;; *) echo -e "jmsctl: unknown COMMAND: '$action'" echo -e "See 'jmsctl --help' \n" usage esac } main #配置文件 [root@cloud01 setuptools]# cat config.conf # 以下設置默認情況下不需要修改, 系統會自動生成隨機字符串填入 # 需要安裝的版本 Version=v2.1.1 # Jms 加密配置 SECRET_KEY=Hak96I6o80uvcN7JhziR1OE6zpPrtBUfYJFXlE0THCy9kG0mZT BOOTSTRAP_TOKEN=D8yzPUwX3z9PrLcf # 數據庫 配置, 如果 數據庫 安裝在其他的服務器, 請修改下面設置 DB_HOST=127.0.0.1 DB_PORT=3306 DB_USER=jumpserver DB_PASSWORD=pnWq6QqkbIyFuSuF1rwU5 DB_NAME=jumpserver # Redis 配置, 如果 Redis 安裝在其他的服務器, 請修改下面設置 REDIS_HOST=127.0.0.1 REDIS_PORT=6379 REDIS_PASSWORD=uvfIlbIyNDnErhNfp # 服務端口設置, 如果雲服務器未備案請修改 http_port 端口為其他端口 http_port=80 ssh_port=2222 # 服務安裝目錄 install_dir=/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` Docker_IP=`ip addr | grep docker.* | grep inet | awk '{print $2}' | head -n 1` [root@cloud01 setuptools]# ./jmsctl.sh --help JumpServer 部署安裝腳本 Usage: jmsctl [COMMAND] ... jmsctl --help Commands: install 安裝 JumpServer start 啟動 JumpServer stop 停止 JumpServer restart 重啟 JumpServer status 檢查 JumpServer uninstall 卸載 JumpServer upgrade 升級 JumpServer reset 重置組件 [root@cloud01 setuptools]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1dc9d1c225e9 jumpserver/jms_guacamole:v2.1.1 "./entrypoint.sh" 2 hours ago Up 2 hours 127.0.0.1:8081->8080/tcp jms_guacamole 64ca610406c5 jumpserver/jms_koko:v2.1.1 "./entrypoint.sh" 2 hours ago Up 2 hours 0.0.0.0:2222->2222/tcp, 127.0.0.1:5000->5000/tcp jms_koko
三、jumpserver使用
3.1、郵件配置
3.2、用戶管理
1)創建用戶組
2)創建用戶
3.3、資產管理
1)創建管理用戶
管理用戶是資產(被控服務器)上的 root,或擁有 NOPASSWD: ALL sudo 權限的用戶, JumpServer 使用該用戶來 `推送系統用戶`、`獲取資產硬件信息` 等。
首先在被控服務器上創建管理用戶,可以使用root,我這里單獨創建一個用戶
[root@service06 ~]# useradd jump && echo "123456"|passwd --stdin jump Changing password for user jump. passwd: all authentication tokens updated successfully. [root@service06 ~]# visudo ## Allow root to run any commands anywhere root ALL=(ALL) ALL jump ALL=(ALL) NOPASSWD: ALL
2)創建系統用戶
系統用戶是 JumpServer 跳轉登錄資產時使用的用戶,可以理解為登錄資產用戶,如 web,sa,dba(`ssh web@some-host`),而不是使用某個用戶的用戶名跳轉登錄服務器(`ssh xiaoming@some-host`); 簡單來說是用戶使用自己的用戶名登錄 JumpServer,JumpServer 使用系統用戶登錄資產。 系統用戶創建時,如果選擇了自動推送,JumpServer 會使用 Ansible 自動推送系統用戶到資產中,如果資產(交換機)不支持 Ansible,請手動填寫賬號密碼。
3)創建資產
測試連接及更新硬件信息:
再次查看資產列表:
3.4、權限管理
1)資產授權
登錄普通用戶查看:
使用web終端,默認登錄之前創建的系統用戶,由jumpserver自動推送過去的
3.5、會話管理
1)會話管理
歷史回話支持回放功能:
2)命令記錄
3)文件管理
可以上傳下載文件,也可以對普通用戶改權限進行限制
3.6、作業中心
1)任務列表
2)批量命令
底層使用的是ansible
3)任務監控