使用開源軟件 jumpserver 搭造自己的堡壘機


使用開源軟件 jumpserver 搭造自己的堡壘機

開軟地址:https://github.com/jumpserver/jumpserver

目前版本:1.5.2 測試的時候有少許BUG,但功能卻不影響體驗的.

儀表盤

資產列表

web終端->登錄linux

web終端->登錄windows

還可以錄制遠程連接的錄像並上傳到 阿里雲的oss,azure,s3,本機

批量作業中心

ssh 中登錄遠端主機

	Administrator,  歡迎使用Jumpserver開源堡壘機系統

1) 輸入 ID 進行直接登陸.
2) 輸入 部分IP、主機名、備注 進行進行搜索登錄(如果唯一).
3) 輸入 / + IP, 主機名 or 備注 進行搜索, 如: /192.168.
4) 輸入 p 進行顯示您有權限的主機.
5) 輸入 g 進行顯示您有權限的節點.
6) 輸入 r 進行刷新最新的機器和節點信息.
7) 輸入 h 進行顯示幫助.
8) 輸入 q 進行退出.
Opt> p
  ID   | 主機名               | IP                    | 登錄用戶             | 備注                                       
+------+----------------------+-----------------------+----------------------+-------------------------------------------+
  1    | Tcent-zabbixSv       | 118.24.x.x         | makeit               | zabbix,Sv                                  
  2    | aliyun2G5M           | 101.132.x.x       | makeit               | master-server                              
  3    | bwgcn2               | 95.163.x.x         | makeit               |                                            
  4    | cn2gia               | 216.24.x.x        | makeit               |                                            
  5    | testCentos7          | 192.168.22.194        | makeit               | kvm,centos7系統,主要用來測試               
  6    | testwin764           | 192.168.22.13         | makeit-windows       |                                            
  7    | vhome_route          | 127.0.0.1             | makeit               |                                            
  8    | vhome_rsp2           | 127.0.0.1             | makeit               |                                            
頁碼: 1, 每頁行數: 19, 總頁數: 1, 總數量: 8
Opt> 


好了,下面是官方的簡介

Jumpserver 是全球首款完全開源的堡壘機,使用 GNU GPL v2.0 開源協議,是符合 4A 的運維安全審計系統。

Jumpserver 使用 Python / Django 進行開發,遵循 Web 2.0 規范,配備了業界領先的 Web Terminal 解決方案,交互界面美觀、用戶體驗好。

Jumpserver 采納分布式架構,支持多機房跨區域部署,支持橫向擴展,無資產數量及並發限制。改變世界,從一點點開始。

核心功能列表


身份驗證 Authentication 登錄認證 資源統一登錄和認證
LDAP 認證
支持 OpenID,實現單點登錄
多因子認證 MFA(Google Authenticator)
賬號管理 Account 集中賬號管理 管理用戶管理
系統用戶管理
統一密碼管理 資產密碼托管
自動生成密碼
密碼自動推送
密碼過期設置
批量密碼變更(X-PACK) 定期批量修改密碼
生成隨機密碼
多雲環境的資產納管(X-PACK) 對私有雲、公有雲資產統一納管
授權控制 Authorization 資產授權管理 資產樹
資產或資產組靈活授權
節點內資產自動繼承授權
RemoteApp(X-PACK) 實現更細粒度的應用級授權
組織管理(X-PACK) 實現多租戶管理,權限隔離
多維度授權 可對用戶、用戶組或系統角色授權
指令限制 限制特權指令使用,支持黑白名單
統一文件傳輸 SFTP 文件上傳/下載
文件管理 Web SFTP 文件管理
安全審計 Audit 會話管理 在線會話管理
歷史會話管理
錄像管理 Linux 錄像支持
Windows 錄像支持
指令審計 指令記錄
文件傳輸審計 上傳/下載記錄審計

安裝及使用文檔


演示視頻和系統截圖


我們提供了演示視頻和系統截圖可以讓你快速了解 Jumpserver。

SDK


我們編寫了一些SDK,供你的其它系統快速和 Jumpserver API 交互。

  • Python Jumpserver 其它組件使用這個 SDK 完成交互
  • Java 愷珺同學提供的 Java 版本的 SDK

Jumpserver 環境要求:

  • 硬件配置: 2個CPU核心, 4G 內存, 50G 硬盤(最低)
  • 操作系統: Linux 發行版 x86_64
  • Python = 3.6.x
  • Mysql Server ≥ 5.6
  • Mariadb Server ≥ 5.5.56
  • Redis

極速安裝

生產環境建議使用 1.4.8 版本

自建服務器極速安裝

生產環境建議使用 1.4.8 版本

說明

  • 全新安裝的 Centos7 系統
  • 保持服務器網絡暢通

開始安裝

以下命令均在一個終端里面執行


echo -e "\033[31m 1. 防火牆 Selinux 設置 \033[0m" \
  && if [ "$(systemctl status firewalld | grep running)" != "" ]; then firewall-cmd --zone=public --add-port=80/tcp --permanent; firewall-cmd --zone=public --add-port=2222/tcp --permanent; firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="172.17.0.0/16" port protocol="tcp" port="8080" accept"; firewall-cmd --reload; fi \
  && if [ "$(getenforce)" != "Disabled" ]; then setsebool -P httpd_can_network_connect 1; fi


echo -e "\033[31m 2. 部署環境 \033[0m" \
  && yum update -y \
  && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
  && yum -y install kde-l10n-Chinese \
  && 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 \
  && yum -y install wget gcc epel-release git \
  && 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 \
  && yum makecache fast \
  && rpm --import https://mirrors.aliyun.com/docker-ce/linux/centos/gpg \
  && echo -e "[nginx-stable]\nname=nginx stable repo\nbaseurl=http://nginx.org/packages/centos/\$releasever/\$basearch/\ngpgcheck=1\nenabled=1\ngpgkey=https://nginx.org/keys/nginx_signing.key" > /etc/yum.repos.d/nginx.repo \
  && rpm --import https://nginx.org/keys/nginx_signing.key \
  && yum -y install redis mariadb mariadb-devel mariadb-server MariaDB-shared nginx docker-ce \
  && systemctl enable redis mariadb nginx docker \
  && systemctl start redis mariadb \
  && yum -y install python36 python36-devel \
  && python3.6 -m venv /opt/py3


echo -e "\033[31m 3. 下載組件 \033[0m" \
  && cd /opt \
  && if [ ! -d "/opt/jumpserver" ]; then git clone --depth=1 https://github.com/jumpserver/jumpserver.git; fi \
  && if [ ! -f "/opt/luna.tar.gz" ]; then wget https://demo.jumpserver.org/download/luna/1.5.2/luna.tar.gz; tar xf luna.tar.gz; chown -R root:root luna; fi \
  && yum -y install $(cat /opt/jumpserver/requirements/rpm_requirements.txt) \
  && echo -e "[easy_install]\nindex_url = https://mirrors.aliyun.com/pypi/simple/" > ~/.pydistutils.cfg \
  && source /opt/py3/bin/activate \
  && pip install --upgrade pip setuptools -i https://mirrors.aliyun.com/pypi/simple/ \
  && pip install -r /opt/jumpserver/requirements/requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ \
  && curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io \
  && systemctl restart docker \
  && docker pull jumpserver/jms_koko:1.5.2 \
  && docker pull jumpserver/jms_guacamole:1.5.2 \
  && rm -rf /etc/nginx/conf.d/default.conf \
  && wget -O /etc/nginx/conf.d/jumpserver.conf https://demo.jumpserver.org/download/nginx/conf.d/jumpserver.conf



echo -e "\033[31m 4. 處理配置文件 \033[0m" \
  && source ~/.bashrc \
  && if [ "$DB_PASSWORD" = "" ]; then DB_PASSWORD=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 24`; fi \
  && if [ "$SECRET_KEY" = "" ]; then SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`; echo "SECRET_KEY=$SECRET_KEY" >> ~/.bashrc; fi \
  && if [ "$BOOTSTRAP_TOKEN" = "" ]; then BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16`; echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc; fi \
  && if [ "$Server_IP" = "" ]; then 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`; fi \
  && if [ ! -d "/var/lib/mysql/jumpserver" ]; then 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;"; fi \
  && if [ ! -f "/opt/jumpserver/config.yml" ]; then cp /opt/jumpserver/config_example.yml /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; fi


echo -e "\033[31m 5. 啟動 Jumpserver \033[0m" \
  && systemctl start nginx \
  && cd /opt/jumpserver \
  && ./jms start -d \
  && 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 --restart=always jumpserver/jms_koko:1.5.2 \
  && docker run --name jms_guacamole -d -p 127.0.0.1:8081:8081 -e JUMPSERVER_SERVER=http://$Server_IP:8080 -e BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN --restart=always jumpserver/jms_guacamole:1.5.2 \
  && echo -e "\033[31m 你的數據庫密碼是 $DB_PASSWORD \033[0m" \
  && echo -e "\033[31m 你的SECRET_KEY是 $SECRET_KEY \033[0m" \
  && echo -e "\033[31m 你的BOOTSTRAP_TOKEN是 $BOOTSTRAP_TOKEN \033[0m" \
  && echo -e "\033[31m 你的服務器IP是 $Server_IP \033[0m" \
  && echo -e "\033[31m 請打開瀏覽器訪問 http://$Server_IP 用戶名:admin 密碼:admin \033[0m"
$ echo -e "\033[31m 6. 配置自啟 \033[0m" \
  && if [ ! -f "/usr/lib/systemd/system/jms.service" ]; then wget -O /usr/lib/systemd/system/jms.service https://demo.jumpserver.org/download/shell/centos/jms.service; chmod 755 /usr/lib/systemd/system/jms.service; systemctl enable jms; fi

Docker 安裝

Jumpserver 封裝了一個 All in one Docker, 可以快速啟動。該鏡像集成了所需要的組件, 支持使用外置 Database 和 Redis

Tips: 不建議在生產中使用, 因為所有軟件都打包到一個Docker中了, 不是Docker最佳實踐

生產環境部署建議參考 進階安裝文檔

Docker-Compose 參考 docker-compose 示例_

快速啟動

  • 使用 root 身份輸入
  • 環境遷移和更新升級請檢查 SECRET_KEY 是否與之前設置一致, 不能隨機生成, 否則數據庫所有加密的字段均無法解密
# 生成隨機加密秘鑰, 勿外泄
$ if [ "$SECRET_KEY" = "" ]; then SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`; echo "SECRET_KEY=$SECRET_KEY" >> ~/.bashrc; echo $SECRET_KEY; else echo $SECRET_KEY; fi
$ if [ "$BOOTSTRAP_TOKEN" = "" ]; then BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16`; echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc; echo $BOOTSTRAP_TOKEN; else echo $BOOTSTRAP_TOKEN; fi

$ docker run --name jms_all -d -p 80:80 -p 2222:2222 -e SECRET_KEY=$SECRET_KEY -e BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN jumpserver/jms_all:1.4.8

# macOS 生成隨機 key 可以用下面的命令
$ if [ "$SECRET_KEY" = "" ]; then SECRET_KEY=`LC_CTYPE=C tr -dc A-Za-z0-9 < /dev/urandom | head -c 50`; echo "SECRET_KEY=$SECRET_KEY" >> ~/.bash_profile; echo $SECRET_KEY; else echo $SECRET_KEY; fi
$ if [ "$BOOTSTRAP_TOKEN" = "" ]; then BOOTSTRAP_TOKEN=`LC_CTYPE=C tr -dc A-Za-z0-9 < /dev/urandom | head -c 16`; echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bash_profile; echo $BOOTSTRAP_TOKEN; else echo $BOOTSTRAP_TOKEN; fi

訪問

  • 瀏覽器訪問: http://<容器所在服務器IP>
  • SSH 訪問: ssh -p 2222 <容器所在服務器IP>
  • XShell 等工具請添加 connection 連接, 默認 ssh 端口 2222
  • 默認管理員賬戶 admin 密碼 admin

外置數據庫要求

  • mysql 版本需要大於等於 5.6
  • mariadb 版本需要大於等於 5.5.6
  • 數據庫編碼要求 uft8

創建數據庫

  • 創建數據庫命令行
# mysql
$ create database jumpserver default charset 'utf8';
$ grant all on jumpserver.* to 'jumpserver'@'%' identified by 'weakPassword';

額外環境變量

  • SECRET_KEY = **
  • BOOTSTRAP_TOKEN = **
  • DB_HOST = mysql_host
  • DB_PORT = 3306
  • DB_USER = jumpserver
  • DB_PASSWORD = weakPassword
  • DB_NAME = jumpserver
  • REDIS_HOST = 127.0.0.1
  • REDIS_PORT = 6379
  • REDIS_PASSWORD =
  • VOLUME /opt/jumpserver/data/media
  • VOLUME /var/lib/mysql
$ docker run --name jms_all -d \
    -v /opt/jumpserver:/opt/jumpserver/data/media \
    -p 80:80 \
    -p 2222:2222 \
    -e SECRET_KEY=xxxxxx \
    -e BOOTSTRAP_TOKEN=xxx \
    -e DB_HOST=192.168.x.x \
    -e DB_PORT=3306 \
    -e DB_USER=root \
    -e DB_PASSWORD=xxx \
    -e DB_NAME=jumpserver \
    -e REDIS_HOST=192.168.x.x \
    -e REDIS_PORT=6379 \
    -e REDIS_PASSWORD=xxx \
    jumpserver/jms_all:1.4.8

倉庫地址

一站式、分布式安裝文檔

生產環境建議使用 1.4.8 版本

組件說明

  • 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

一體化部署文檔(基於CentOS 7)

一體化部署文檔(基於Ubuntu 18.04)

分布式部署文檔(基於CentOS 7)

請勿使用, 等待更新ing...

開源地址:https://github.com/jumpserver/jumpserver


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM