目錄:
一、JumpServer簡介
二、JumpServer特點
三、JumpServer概述
四、JumpServer環境說明
五、Jumpserver部署安裝
六、Jumpsrever多組件負載說明
七、Jumpserver快速使用手冊
一、JumpServer簡介
Jumpserver是一款由python編寫, Django開發的開源跳板機/堡壘機系統, 助力互聯網企業高效 用戶、資產、權限、審計 管理。jumpserver實現了跳板機應有的功能,基於ssh協議來管理,客戶端無需安裝agent。
Jumpserver是全球首款完全開源的堡壘機,使用 GNU GPL v2.0 開源協議,是符合 4A 的專業運維審計系統。
Jumpserver 使用 Python /Django 進行開發,遵循 Web 2.0 規范,配備了業界領先的 Web Terminal 解決方案,交互界面美觀、用戶體驗好。
Jumpserver 采納分布式架構,支持多機房跨區域部署,中心節點提供 API,各機房部署登錄節點,可橫向擴展、無並發訪問限制。
二、JumpServer特點
1)完全開源,GPL授權
2)Python編寫,容易再次開發
3)實現了跳板機基本功能,身份認證、訪問控制、授權、審計 、批量操作等。
4)集成了Ansible,批量命令等
5)支持WebTerminal
6)Bootstrap編寫,界面美觀
7)自動收集硬件信息
8)錄像回放
9)命令搜索
10)實時監控
11)批量上傳下載
三、JumpServer概述
由於來源身份不明、越權操作、密碼泄露、數據被竊、違規操作等因素都可能會使運營的業務系統面臨嚴重威脅,一旦發生事故,如果不能快速定位事故原因,運維人員往往就會背黑鍋。幾種常見的運維人員背黑鍋場景:
1)由於不明身份利用遠程運維通道攻擊服務器造成業務系統出現異常,但是運維人員無法明確攻擊來源,那么領導很生氣、后果很嚴重;
2)只有張三能管理的服務器,被李四登錄過並且做了違規操作,但是沒有證據是李四登錄的,那么張三只能背黑鍋了;
3)運維人員不小心泄露了服務器的密碼。一旦發生安全事故,那么后果不堪設想;
4)某服務器的重要數據被竊。但是數據文件無法挽回,那么面臨的是無法估量的經濟損失
四、JumpServer環境說明
(一)、安裝環境
- 硬件配置: 2個CPU核心, 4G 內存, 50G 硬盤(最低)
- 操作系統: Linux 發行版 x86_64
- Python環境:Python = 3.6.x
- 數據庫:Mysql Server ≥ 5.6 \ Mariadb Server ≥ 5.5.56
- 緩存數據庫:Redis
- 代理:Ningx
l 主機IP:192.168.1.100
(二)、組件說明
- Jumpserver 為管理后台, 管理員可以通過 Web 頁面進行資產管理、用戶管理、資產授權等操作, 用戶可以通過 Web 頁面進行資產登錄, 文件管理等操作
- koko 為 SSH Server 和 Web Terminal Server 。用戶可以使用自己的賬戶通過 SSH 或者 Web Terminal 訪問 SSH 協議和 Telnet 協議資產
- Luna 為 Web Terminal Server 前端頁面, 用戶使用 Web Terminal 方式登錄所需要的組件
- Guacamole 為 RDP 協議和 VNC 協議資產組件, 用戶可以通過 Web Terminal 來連接 RDP 協議和 VNC 協議資產 (暫時只能通過 Web Terminal 來訪問)
(三)、端口說明
- Jumpserver 默認端口為 8080/tcp 配置文件 jumpserver/config.yml
- koko 默認 SSH 端口為 2222/tcp, 默認 Web Terminal 端口為 5000/tcp 配置文件在 koko/config.yml
- Guacamole 默認端口為 8081/tcp, 配置文件 /config/tomcat9/conf/server.xml
- Nginx 默認端口為 80/tcp
- Redis 默認端口為 6379/tcp
- Mysql 默認端口為 3306/tcp
Protocol |
Server name |
Port |
TCP |
Jumpserver |
8080 |
TCP |
koko |
2222, 5000 |
TCP |
Guacamole |
8081 |
TCP |
Db |
3306 |
TCP |
Redis |
6379 |
TCP |
Nginx |
80 |
五、Jumpserver部署安裝
(一)、設置防火牆和selinux
firewall-cmd --zone=public --add-port=80/tcp --permanent # nginx端口 firewall-cmd --zone=public --add-port=2222/tcp --permanent # 用戶SSH登錄端口coco firewall-cmd --reload # 重新載入規則 setenforce 0 sed –i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config |
(二)、准備Python3和Python虛擬環境
1、安裝依賴包
yum install epel-release -y yum -y install git python-pip mariadb-devel gcc automake autoconf python-devel sshpass readline-devel mysql-devel |
2、安裝Python3.6
yum -y install python36 python36-devel # 如果下載速度很慢, 可以換國內源 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo yum -y install python36 python36-devel |
3、建立Python虛擬環境
因為 CentOS 7 自帶的是 Python2, 而 Yum 等工具依賴原來的 Python, 為了不擾亂原來的環境我們來使用 Python 虛擬環境。
cd /opt python3.6 -m venv py3 #創建虛擬環境,環境命令自定義為py3 source /opt/py3/bin/activate #運行虛擬化境 # 看到下面的提示符代表成功, 以后運行 Jumpserver 都要先運行以上 source 命令, 以下所有命令均在該虛擬環境中運行 (py3) [root@localhost py3] # 出現以上字符代表運行成功 |
(三)、安裝JumpServer
1、下載或 Clone 項目
項目提交較多 git clone 時較大, 你可以選擇去 Github 項目頁面直接下載zip包
cd /opt/ git clone --depth=1 https://github.com/jumpserver/jumpserver.git |
2、安裝RPM依賴包
cd /opt/jumpserver/requirements yum -y install $(cat rpm_requirements.txt) # 如果沒有任何報錯請繼續 |
3、安裝Python庫依賴
pip install -r requirements.txt 報錯:需要更新pip 解決:pip install --upgrade pip 然后再次安裝 # 如果下載速度很慢, 可以換國內源 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
yum -y install redis systemctl start redis && systemctl enable redis |
5、安裝Mysql數據庫
本教程使用 Mysql 作為數據庫, 如果不使用 Mysql 可以跳過相關 Mysql 安裝和配置
(1)、安裝Mysql數據庫
yum -y install mariadb mariadb-devel mariadb-server mariadb-shared |
(2)、啟動數據庫並設置開機自啟
systemctl start mariadb && systemctl enable mariadb |
(3)、創建JumpServer數據庫並授權(切記不要自己設置密碼)
DB_PASSWORD=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 24` # 生成隨機數據庫密碼 echo -e "\033[31m 你的數據庫密碼是 $DB_PASSWORD \033[0m"
mysql -uroot -e "create database jumpserver default charset 'utf8'; grant all on jumpserver.* to 'jumpserver'@'localhost' identified by '$DB_PASSWORD'; flush privileges;" |
6、修改jumpserver配置文件
(1)、修改配置文件
cd /opt/jumpserver cp config_example.yml config.yml
SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50` # 生成隨機SECRET_KEY echo "SECRET_KEY=$SECRET_KEY" >> ~/.bashrc
BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16` # 生成隨機BOOTSTRAP_TOKEN 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 "\033[31m 你的SECRET_KEY是 $SECRET_KEY \033[0m"
echo -e "\033[31m 你的BOOTSTRAP_TOKEN是 $BOOTSTRAP_TOKEN \033[0m" |
(2)、配置文件說明
# SECURITY WARNING: keep the secret key used in production secret! # 加密秘鑰 生產環境中請修改為隨機字符串, 請勿外泄 SECRET_KEY: # SECURITY WARNING: keep the bootstrap token used in production secret! # 預共享Token coco和guacamole用來注冊服務賬號, 不在使用原來的注冊接受機制 BOOTSTRAP_TOKEN:
# Development env open this, when error occur display the full process track, Production disable it # DEBUG 模式 開啟DEBUG后遇到錯誤時可以看到更多日志 DEBUG: false
# DEBUG, INFO, WARNING, ERROR, CRITICAL can set. See https://docs.djangoproject.com/en/1.10/topics/logging/ # 日志級別 LOG_LEVEL: ERROR # LOG_DIR:
# Session expiration setting, Default 24 hour, Also set expired on on browser close # 瀏覽器Session過期時間, 默認24小時, 也可以設置瀏覽器關閉則過期 # SESSION_COOKIE_AGE: 86400 SESSION_EXPIRE_AT_BROWSER_CLOSE: true
# Database setting, Support sqlite3, mysql, postgres .... # 數據庫設置 # See https://docs.djangoproject.com/en/1.10/ref/settings/#databases
# SQLite setting: # 使用單文件sqlite數據庫 # DB_ENGINE: sqlite3 # DB_NAME:
# MySQL or postgres setting like: # 使用Mysql作為數據庫 DB_ENGINE: mysql DB_HOST: 127.0.0.1 DB_PORT: 3306 DB_USER: jumpserver DB_PASSWORD: DB_NAME: jumpserver
# When Django start it will bind this host and port # ./manage.py runserver 127.0.0.1:8080 # 運行時綁定端口 HTTP_BIND_HOST: 0.0.0.0 HTTP_LISTEN_PORT: 8080
# Use Redis as broker for celery and web socket # Redis配置 REDIS_HOST: 127.0.0.1 REDIS_PORT: 6379 # REDIS_PASSWORD: # REDIS_DB_CELERY: 3 # REDIS_DB_CACHE: 4
# Use OpenID authorization # 使用OpenID 來進行認證設置 # BASE_SITE_URL: http://localhost:8080 # AUTH_OPENID: false # True or False # AUTH_OPENID_SERVER_URL: https://openid-auth-server.com/ # AUTH_OPENID_REALM_NAME: realm-name # AUTH_OPENID_CLIENT_ID: client-id # AUTH_OPENID_CLIENT_SECRET: client-secret # OTP settings # OTP/MFA 配置 # OTP_VALID_WINDOW: 0 # OTP_ISSUER_NAME: Jumpserver |
(3)、運行Jumpserver
cd /opt/jumpserver/ ./jms start all -d # 后台運行使用 -d 參數. ./jms start|stop|status all |
至此JumpServer安裝告一段落 接下來進入其他服務安裝
(四)、安裝 docker 部署coco與guacamole
1、安裝Docker
yum install -y yum-utils device-mapper-persistent-data lvm2 # 安裝相關依賴 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 配置Docker源 yum makecache fast # 重新生成緩存 rpm --import https://mirrors.aliyun.com/docker-ce/linux/centos/gpg yum -y install docker-ce # 安裝Docker-ce mkdir -p /etc/docker wget -O /etc/docker/daemon.json http://demo.jumpserver.org/download/docker/daemon.json # 下載相關文件 systemctl restart docker && systemctl enable docker # 啟動docker並設置開機自啟 |
2、部署 coco 與 guacamole
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="172.17.0.0/16" port protocol="tcp" port="8080" accept" # 設置防火牆規則,允許容器ip訪問宿主8080端口 firewall-cmd --reload # 172.17.0.x 是docker容器默認的IP池, 這里偷懶直接授權ip段了, 可以根據實際情況單獨授權IP Server_IP=`ip addr | grep inet | egrep -v '(127.0.0.1|inet6|docker)' | awk '{print $2}' | tr -d "addr:" | head -n 1 | cut -d / -f1` # 獲取當前服務器IP地址 docker run --name jms_coco -d -p 2222:2222 -p 5000:5000 -e CORE_HOST=http://$Server_IP:8080 -e BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN jumpserver/jms_coco:1.4.8 # http://<Jumpserver_url> 指向 jumpserver 的服務端口, 如 http://192.1681.100:8080
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.4.8 # BOOTSTRAP_TOKEN 為 Jumpserver/config.yml 里面的 BOOTSTRAP_TOKEN |
3、安裝 Web Terminal 前端: Luna
前端: Luna 需要 Nginx 來運行訪問
(1)、下載安裝包
cd /opt wget https://github.com/jumpserver/luna/releases/download/1.4.8/luna.tar.gz |
(2)、解壓並授權
tar -xzf luna.tar.gz chown -R root:root luna |
(五)、安裝Nginx進行整合發布
1、設置Nginx的YUM源
cat > /etc/yum.repos.d/nginx.repo <<EOF [nginx] name=nginx repo baseurl=http://nginx.org/packages/Centos/7/$basearch/ gpgcheck=0 enabled=1 EOF |
2、生成緩存
yum makecache fast |
3、安裝Nginx
yum install nginx -y |
4、配置Nginx並整合各個組件
rm -rf /etc/nginx/conf.d/default.conf # 刪除默認Nginx配置文件 vim /etc/nginx/conf.d/jumpserver.conf # 創建新的配置文件 內如如下: server { listen 80;
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/; 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/; 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 / { 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; } }
|
5、測試Nginx配置文件並啟動
# 運行 Nginx nginx -t # 確保配置沒有問題, 有問題請先解決 systemctl start nginx && systemctl enable nginx |
輸入ip之后即可打開如下界面:
默認賬號: admin 密碼: admin 到會話管理-終端管理 接受 coco Guacamole 等應用的注冊
6、測試連接
# 測試連接 ssh -p2222 admin@192.168.1.100 sftp -P2222 admin@192.168.1.100 密碼: admin # 如果是用在 Windows 下, Xshell Terminal 登錄語法如下 ssh admin@192.168.1.100 2222 sftp admin@192.168.1.100 2222 密碼: admin 如果能登陸代表部署成功
# sftp默認上傳的位置在資產的 /tmp 目錄下 # windows拖拽上傳的位置在資產的 Guacamole RDP上的 G 目錄下 |
六、Jumpsrever多組件負載說明
(一)、設置多個coco容器
coco 服務默認運行在單核心下面, 當負載過高時會導致用戶訪問變慢, 這時可運行多個 docker 容器緩解
docker run --name jms_coco01 -d -p 2223:2222 -p 5001:5000 -e CORE_HOST=http://<Jumpserver_url> -e BOOTSTRAP_TOKEN=****** jumpserver/jms_coco:1.4.8
docker run --name jms_coco02 -d -p 2224:2222 -p 5002:5000 -e CORE_HOST=http://<Jumpserver_url> -e BOOTSTRAP_TOKEN=****** jumpserver/jms_coco:1.4.8 |
(二)、設置多個guacamole容器
docker run --name jms_guacamole01 -d -p 8082:8081 -e JUMPSERVER_SERVER=http://<Jumpserver_url> -e BOOTSTRAP_TOKEN=****** jumpserver/jms_guacamole:1.4.8
docker run --name jms_guacamole02 -d -p 8083:8081 -e JUMPSERVER_SERVER=http://<Jumpserver_url> -e BOOTSTRAP_TOKEN=****** jumpserver/jms_guacamole:1.4.8 |
(三)、修改Nginx默認配置文件
vim /etc/nginx/nginx.conf
user nginx; worker_processes auto;
error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid;
events { worker_connections 1024; }
# 加入 tcp 代理 stream { log_format proxy '$remote_addr [$time_local] ' '$protocol $status $bytes_sent $bytes_received ' '$session_time "$upstream_addr" ' '"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';
access_log /var/log/nginx/tcp-access.log proxy; open_log_file_cache off;
upstream cocossh { server localhost:2222 weight=1; server localhost:2223 weight=1; # 多節點 server localhost:2224 weight=1; # 多節點 # 這里是 coco ssh 的后端ip hash $remote_addr; } server { listen 2220; # 不能使用已經使用的端口, 自行修改, 用戶ssh登錄時的端口 proxy_pass cocossh; proxy_connect_timeout 10s; } } # 到此結束
http { include /etc/nginx/mime.types; default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on; # tcp_nopush on;
keepalive_timeout 65;
# 關閉版本顯示 server_tokens off;
include /etc/nginx/conf.d/*.conf; } |
(四)、修改Nginx下jumpserver配置文件
firewall-cmd --zone=public --add-port=2220/tcp --permanent
firewall-cmd --reload
vim /etc/nginx/conf.d/jumpserver.conf
upstream jumpserver { server localhost:8080; # 這里是 jumpserver 的后端ip }
upstream cocows { server localhost:5000 weight=1; server localhost:5001 weight=1; # 多節點 server localhost:5002 weight=1; # 多節點 # 這里是 coco ws 的后端ip ip_hash; }
upstream guacamole { server localhost:8081 weight=1; server localhost:8082 weight=1; # 多節點 server localhost:8083 weight=1; # 多節點 # 這里是 guacamole 的后端ip ip_hash; }
server { listen 80; server_name demo.jumpserver.org; # 自行修改成你的域名
client_max_body_size 100m; # 錄像上傳大小限制
location / { proxy_pass http://jumpserver; 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 /luna/ { try_files $uri / /index.html; alias /opt/luna/; }
location /media/ { add_header Content-Encoding gzip; root /opt/jumpserver/data/; # 錄像位置, 如果修改安裝目錄, 此處需要修改 }
location /static/ { root /opt/jumpserver/data/; # 靜態資源, 如果修改安裝目錄, 此處需要修改 }
location /socket.io/ { proxy_pass http://cocows/socket.io/; # coco 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://cocows/coco/; 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://guacamole/; # guacamole 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; } } |
(五)、測試配置文件並重啟
nginx -t nginx -s reload |
七、Jumpserver快速使用手冊
(一)、系統設置
1、基本設置
# 修改 url 的"localhost"為你的實際 url 地址, 否則郵件收到的地址將為"localhost" 也無法創建新用戶
2、郵件設置
# 點擊頁面上邊的"郵件設置", 進入郵件設置頁面
# 默認使用 25 端口, 不勾選 SSL 和 TLS; 如果需要勾選 SSL, 端口需要修改成 465; 如果需要勾選 TLS, 端口需要改成 587
# 不可以同時勾選 SSL 和 TLS
# 配置郵件服務后, 點擊頁面的"測試連接"按鈕, 如果配置正確, Jumpserver 會發送一條測試郵件到您的 SMTP 賬號郵箱里面, 確定收到測試郵件后點擊保存即可使用
3、LDAP設置
# 如果不需要使用"ldap"用戶登陸 jumpserver, 可以直接跳過, 不需要設置
# 先"測試"通過才能保存
# DN 和 OU 一定要完整(如 "DN:cn=Manage,ou=Jumpserver,dc=jumpserver,ou=org")
# 注:可借用第三方 gui 工具查看 ldap 用戶的屬性, 新版本已經支持中文名登錄, 即cn=中文也可正常使用
4、終端設置
# "密碼認證"和"密鑰認證"是 SSH 連接跳板機時所使用的認證方式(都不選會造成無法使用 SSH 方式連接登錄跳板機, 不影響 web 登錄)
# "Telnet成功正則表達式" telnet設備登陸失敗需要設置
# "命令存儲""錄像存儲"位置設置
# "命令存儲""錄像存儲"修改后, 需要在Jumpserver 會話管理-終端管理 修改terminal的配置 錄像存儲 命令記錄, 然后重啟 Jumpserver 服務
# 設置后重啟 Coco 才能生效
5、安全設置
# "MAF二次認證"勾選會開啟全局強制"MFA", 所有 jumpserver 用戶必須使用動態口令進行認證登錄(即時生效)
# "限制登錄失敗"和"限制登錄時間"設置需要重啟 jumpserver 才能生效
# "SSH最大空閑時間"設置需要重啟 coco 才能生效
# "密碼校驗規則"設置立即生效
(二)、用戶管理
1、創建用戶
# 點擊頁面左側"用戶列表"菜單下的"用戶列表", 進入用戶列表頁面
# 點擊頁面左上角"創建用戶"按鈕, 進入創建用戶頁面, (也可以通過右上角導入模版進行用戶導入)
# 其中, 用戶名即 Jumpserver 登錄賬號(具有唯一性, 不能重名)。名稱為頁面右上角用戶標識(可重復)
# 成功提交用戶信息后, Jumpserver 會發送一條設置"用戶密碼"的郵件到您填寫的用戶郵箱
# 點擊郵件中的設置密碼鏈接, 設置好密碼后, 您就可以用戶名和密碼登錄 Jumpserver 了。
# 用戶首次登錄 Jumpserver, 會被要求完善用戶信息, 按照向導操作即可。
注:MFA 即 Google Authenticator, 使用此軟件需要APP時間與瀏覽器時間同步
2、創建用戶組
(三)、資產管理
1、編輯資產樹
# "節點"不能重名, 右擊節點可以添加、刪除和重命名節點, 以及進行資產相關的操作
注:如果有 linux 資產和 windows 資產, 建議先建立 Linux 節點與 Windows 節點, 不然"授權"時不好處理
2、創建管理用戶
# "管理用戶"是資產上真實存在的用戶,例如root, 或擁有 NOPASSWD: ALL sudo 權限的用戶, Jumpserver 使用該用戶來推送系統用戶、獲取資產硬件信息等。 Windows或其它硬件可以隨意設置一個
# "名稱" 不能重復
# "ssh私鑰" 如果私鑰有密碼, 請把key的密碼填在密碼欄上, 目前僅支持 RSA DSA 格式私鑰
3、創建系統用戶
# "系統用戶"是 Jumpserver 跳轉登錄資產時使用的用戶, 用戶使用該用戶登錄資產
# "自動生成密碼"、"自動推送"、"Sudo"等功能需要對應資產的"管理用戶"是且有root權限, 否則自動推送失敗
# ssh 協議的 "Sudo" 欄設定用戶的 sudo 權限,
# ssh 協議如果創建的"系統用戶"已在資產上面存在, "推送"將會覆蓋掉原用戶的"home"目錄權限(注: 替換成700權限)
# ssh 協議的 "ssh私鑰" 如果私鑰有密碼, 請把key的密碼填在密碼欄上, 目前僅支持 RSA DSA 格式私鑰
# 這里簡單舉幾個 "sudo" 設置例子
Sudo /bin/su # 當前系統用戶可以免sudo密碼執行sudo su命令
Sudo /usr/bin/git, /usr/bin/php, /bin/cat, /bin/more, /bin/less, /usr/bin/tail
# 當前系統用戶可以免sudo密碼執行git php cat more less tail
Sudo !/usr/bin/yum # 當前系統用戶不可以執行sudo yum命令
# 此處的權限應該根據使用用戶的需求匯總后定制, 原則上給予最小權限即可
# "系統用戶"創建時, 如果選擇了"自動推送" Jumpserver 會使用"Ansible"自動推送系統用戶到資產中, "root"用戶不支持推送
# 如果資產(交換機、Windows)不支持"Ansible", 請去掉"自動生成密鑰"、"自動推送"勾選。手動填寫資產上已有的賬號及賬號密碼
# 如果想讓用戶登錄資產時自己輸入密碼, 可以在創建系統用戶時選擇"手動登錄"
4、創建命令過濾
如無需要, 可忽略此步驟, 目前僅支持 ssh 與 telnet 協議
# "系統用戶"可以綁定一些"命令過濾器",一個過濾器可以定義一些"規則"
# 當"用戶"使用這個"系統用戶"登錄資產,然后執行一個命令 這個命令需要被綁定過濾器的所有規則匹配,高優先級先被匹配
# 當一個規則匹配到了,如果規則的動作是 "允許" 這個命令會被放行; 如果規則的動作是 "禁止" 命令將會被禁止執行; 否則就匹配下一個規則,如果最后沒有匹配到規則,則允許執行
# 點擊 "命令過濾器列表" 規則下方的數字進入 "命令過濾器規則列表" , 點擊新建規則創建相應規則
# 拒絕所有命令可以使用正則表達式 .*
5、創建資產
# 點擊頁面左側的"資產管理"菜單下的"資產列表"按鈕, 查看當前所有的資產列表。
# 點擊頁面左上角的"創建資產"按鈕, 進入資產創建頁面, 填寫資產信息。
# IP 地址和管理用戶要確保正確, 確保所選的管理用戶的用戶名和密碼能"牢靠"地登錄指定的 IP 主機上。
# 資產的系統平台也務必正確填寫。公網 IP 信息只用於展示, 可不填, Jumpserver 連接資產使用的是 IP 信息
# 資產創建信息填寫好保存之后, ssh 協議資產可"測試資產"是否能正確連接, 其他協議暫不支持
注:被連接資產需要"python"組件, 且版本大於等於2.6, Ubuntu等資產默認不允許root用戶遠程ssh登錄, 請自行處理
# 如果資產不能正常連接, 請檢查"管理用戶"的用戶名和密鑰是否正確以及該"管理用戶"是否能使用 SSH 從 Jumpserver 主機正確登錄到資產主機上
(四)、創建授權規則
1、為用戶分配資產
# "名稱", 授權的名稱, 不能重復
# "用戶"和"用戶組"二選一, 不推薦即選擇用戶又選擇用戶組
# "資產"和"節點"二選一, 選擇節點會包含節點下面的所有資產
# "系統用戶", 及所選的用戶或用戶組下的用戶能通過該系統用戶使用所選節點或者節點下的資產
# 用戶(組), 資產(節點), 系統用戶是一對一的關系, 所以當擁有 Linux、Windows 不同類型資產時, 應該分別給 Linux 資產和 Windows 資產創建授權規則
一般情況下, 資產授權給個人, 節點授權給用戶組, 一個授權只能選擇一個系統用戶
(五)、用戶登錄
1、登錄Jumpserver用戶
# 用戶只能看到自己被管理員授權了的"資產", 如果登錄后無資產, 請聯系管理員進行確認
2、連接資產
# 在我的資產點擊資產右邊的 "連接" 快速連接資產
# 也可以點擊左側欄的 "Web終端"