天天看點

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

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

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

目前版本:

1.5.2

測試的時候有少許

BUG

,但功能卻不影響體驗的.

儀表盤

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

資産清單

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

web終端->登入linux

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

web終端->登入windows

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

還可以錄制遠端連接配接的錄像并上傳到 阿裡雲的oss,azure,s3,本機

批量作業中心

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

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 錄像支援
指令審計 指令記錄
檔案傳輸審計 上傳/下載下傳記錄審計

安裝及使用文檔

  • Docker 快速安裝文檔
  • Step by Step 安裝文檔
  • 完整文檔

示範視訊和系統截圖

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

  • [示範視訊](https://jumpserver.oss-cn-hangzhou.aliyuncs.com/jms-media/【示範視訊】Jumpserver 堡壘機 V1.5.0 示範視訊 - final.mp4)
  • 系統截圖

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
           

倉庫位址

  • https://github.com/jumpserver/Dockerfile

一站式、分布式安裝文檔

生産環境建議使用 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...

  • 環境說明
  • Tengine 代理部署
  • MariaDB 部署
  • Redis 部署
  • Jumpserver 部署
  • Koko 部署
  • Guacamole 部署

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