使用開源軟件 jumpserver 搭造本身的堡壘機

使用開源軟件 jumpserver 搭造本身的堡壘機

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

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

儀表盤前端

資產列表
java

web終端->登陸linuxpython

web終端->登陸windowsmysql

還能夠錄製遠程鏈接的錄像並上傳到 阿里雲的oss,azure,s3,本機linux

批量做業中心nginx

ssh 中登陸遠端主機git

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>

好了,下面是官方的簡介github

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

倉庫地址

  • 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...

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

相關文章
相關標籤/搜索