1.JumpServer基本概述
1.什么是跳板機
跳板機就是一臺服務器,具備公網和內網,我們的開發人員或者運維人員,要想維護內部集群服務時,需要先統一登陸到跳板機這臺服務器,然后在通過跳板機的內網登陸目標集群服務器

2.跳板機的缺陷
沒有實作對運維人員操作行為的控制和審計,使用跳板機的程序中還是會出現誤操作,違規i操作導致故障,一旦出現操作事故很難快速定位到原因和責任人;此時堡壘機就誕生了,
3.什么是堡壘機
堡壘機其實是基于跳板機基礎之上,能夠實作運維更加安全的操作目標集群服務器,提供安全保證,
- 1 資產集中管理(統一管理)
- 2 審計,記錄,視頻回放操作記錄
- 3 限制如rm,dd等危險命令的執行
- 4 限制登陸目標服務器的身份權限
4.為什么要使用堡壘機
首先,堡壘機提供了運維安全審計的4A規范:
Authentication:身份鑒別,防止身份冒用和復用
Authorization :授權控制,防止內部誤操作和權限濫用
Accouting:賬號管理,人員和資產的管理
Auditing:安全審計,追溯和分析事故的依據
其次,堡壘機的建設目標可以概況為5W,主要是為了減低運維風險,
what 審計:你做了什么?
which 授權:你能做哪些?
where 賬號:你要去那?
who 認證 你是誰?
when 來源:訪問時間?
總結
堡壘機能讓運維更安全,更加便捷的登陸目標資產服務
堡壘機還可以幫助企業快速構建“身份鑒別,訪問控制,安全審計”,助力企業滿足新等保要求,什么是等保?
所有企業都需要使用堡壘機,因為堡壘機是企業進行“資產管理,運維安全審計”的重要組件,

5.什么是Jumpserver
JumpServer 是全球首款完全開源的堡壘機, 使用 GNU GPL v2.0 開源協議, 是符合 4A 的專業運維審計系統,
JumpServer 使用 Python / Django 進行開發, 遵循 Web 2.0 規范, 配備了業界領先的 Web Terminal 解決方案, 互動界面美觀、用戶體驗好,
JumpServer 采納分布式架構, 支持多機房跨區域部署, 中心節點提供 API, 各機房部署登錄節點, 可橫向擴展、無并發訪問限制,
JumpServer 現已支持管理 SSH、 Telnet、 RDP、 VNC 協議資產,
Jumpserver主要組件
Jumpserver:提供管理后臺,管理員可以通過web頁面進行資產管理,用戶管理和資產授權等操作,
koko:提供SSH server和web Termianal server方式登陸資產
Lina Luna:提供web前端頁面,后續會將整合到Lina中
Guacamole:提供RDP功能,用戶可通過該方式登陸windows資產,(暫時只能通過 web Terminal來訪問)
Jumpserver特色優勢
- 開源: 零門檻,線上快速獲取和安裝;
- 分布式: 輕松支持大規模并發訪問;
- 無插件: 僅需瀏覽器,極致的 Web Terminal 使用體驗;
- 多云支持: 一套系統,同時管理不同云上面的資產;
- 云端存盤: 審計錄像云端存盤,永不丟失;
- 多租戶: 一套系統,多個子公司和部門同時使用,
Jumpserver基礎架構圖

Jumpserver作用
1 產品解耦程度高,便于后期分布式部署與橫向擴展
2 集中統一管理全國各地服務器
2.JumpServer安裝配置 官方安裝部署檔案
2.1 核心組件部署jumpserver
① 安裝 Python3.6 MySQL Redis
[root@jumpserver ~]# yum install python3 python3-devel mariadb-server mariadb redis -y
[root@jumpserver ~]# systemctl enable mariadb redis
[root@jumpserver ~]# systemctl start mariadb redis
② 設定資料庫密碼,然后創建對應的jumpserver庫
[root@jumpserver ~]# mysqladmin password boy123.com
[root@jumpserver ~]# mysql -uroot -pboy123.com
MariaDB [(none)]> create database jumpserver default charset 'utf8' collate 'utf8_bin';
MariaDB [(none)]>
③ 創建 Python 虛擬環境,并且載入 Python 虛擬環境
[root@jumpserver ~]# python3.6 -m venv /opt/py3
[root@jumpserver ~]# source /opt/py3/bin/activate
(py3) [root@jumpserver ~]#
④ 安裝jumpserver核心軟體包
我這里采用的是本地方式進行軟體包的上傳

(py3) [root@jumpserver ~]# cd /opt
(py3) [root@jumpserver opt]# tar xf jumpserver-v2.2.2.tar.gz
(py3) [root@jumpserver opt]# mv jumpserver-v2.2.2 jumpserver
⑤ 安裝jumpser編譯環境依賴
cd /opt/jumpserver/requirements
yum install -y $(cat rpm_requirements.txt)
pip install wheel -i https://mirrors.aliyun.com/pypi/simple/
pip install --upgrade pip setuptools -i https://mirrors.aliyun.com/pypi/simple/
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
⑥修改組態檔
cd /opt/jumpserver && \
cp config_example.yml config.yml && \
vi config.yml
⑦在組態檔中需要填寫隨即加密密鑰(SECRET_KEY: 與BOOTSTRAP_TOKEN:),我們用命令生成
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
查看生成的隨機加密密鑰
cat ~/.bashrc

參考官方模板(記得修改組態檔的每行要頂頭)
# SECURITY WARNING: keep the secret key used in production secret!
# 加密秘鑰 生產環境中請修改為隨機字串,請勿外泄, 可使用命令生成
# cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 49;echo
SECRET_KEY: sa1SzAAij0xGm6q35bWpiG5dwV966cryK2Ui2oeuHGQiYfJQkF
# SECURITY WARNING: keep the bootstrap token used in production secret!
# 預共享Token coco和guacamole用來注冊服務賬號,不在使用原來的注冊接受機制
BOOTSTRAP_TOKEN: SAkuJ9ICSTGey5p8
# 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: root #這里用的資料庫用戶是資料庫默認root用戶
DB_PASSWORD: boy123.com #我們給root用戶設定的密碼
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
WS_LISTEN_PORT: 8070
# Use Redis as broker for celery and web socket
# Redis配置
REDIS_HOST: 127.0.0.1
REDIS_PORT: 6379
REDIS_PASSWORD: ZhYnLrodpmPncovxJTnRyiBs
# 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
# AUTH_OPENID_IGNORE_SSL_VERIFICATION: True
# AUTH_OPENID_SHARE_SESSION: True
# Use Radius authorization
# 使用Radius來認證
# AUTH_RADIUS: false
# RADIUS_SERVER: localhost
# RADIUS_PORT: 1812
# RADIUS_SECRET:
# CAS 配置
# AUTH_CAS': False,
# CAS_SERVER_URL': "http://host/cas/",
# CAS_ROOT_PROXIED_AS': 'http://jumpserver-host:port',
# CAS_LOGOUT_COMPLETELY': True,
# CAS_VERSION': 3,
# LDAP/AD settings
# LDAP 搜索分頁數量
# AUTH_LDAP_SEARCH_PAGED_SIZE: 1000
#
# 定時同步用戶
# 啟用 / 禁用
# AUTH_LDAP_SYNC_IS_PERIODIC: True
# 同步間隔 (單位: 時) (優先)
# AUTH_LDAP_SYNC_INTERVAL: 12
# Crontab 運算式
# AUTH_LDAP_SYNC_CRONTAB: * 6 * * *
#
# LDAP 用戶登錄時僅允許在用戶串列中的用戶執行 LDAP Server 認證
# AUTH_LDAP_USER_LOGIN_ONLY_IN_USERS: False
#
# LDAP 認證時如果日志中出現以下資訊將引數設定為 0 (詳情參見:https://www.python-ldap.org/en/latest/faq.html)
# In order to perform this operation a successful bind must be completed on the connection
# AUTH_LDAP_OPTIONS_OPT_REFERRALS: -1
# OTP settings
# OTP/MFA 配置
# OTP_VALID_WINDOW: 0
# OTP_ISSUER_NAME: Jumpserver
# Perm show single asset to ungrouped node
# 是否把未授權節點資產放入到 未分組 節點中
# PERM_SINGLE_ASSET_TO_UNGROUP_NODE: false
#
# 啟用定時任務
# PERIOD_TASK_ENABLE: True
#
# 啟用二次復合認證配置
# LOGIN_CONFIRM_ENABLE: False
#
# Windows 登錄跳過手動輸入密碼
WINDOWS_SKIP_ALL_MANUAL_PASSWORD: True
我們需要修改的幾個地方被紅框框起來



⑧ 啟動jumpserver核心組件
首先要確保已經加載p3虛擬環境
source /opt/py3/bin/activate
其次前臺運行查看,檢查是否報錯
cd /opt/jumpserver
./jms start
最后沒有報錯,運行在后臺
./jms start -d
2.2 核心組件部署koko
我這里采用的是本地方式進行軟體包的上傳

①上傳koko壓縮包對koko組件進行初始化
(py3) [root@jumpserver opt]# tar -xf koko-v2.4.3-linux-amd64.tar.gz #壓縮包解壓
(py3) [root@jumpserver opt]# mv koko-v2.4.3-linux-amd64 koko #更改名字
(py3) [root@jumpserver opt]# chown -R root:root koko #為koko目錄授權
(py3) [root@jumpserver opt]# cd koko #切換到koko目錄下
(py3) [root@jumpserver koko]# cp config_example.yml config.yml #復制實列組態檔進行重命名
②修改koko組件的組態檔
(py3) [root@jumpserver koko]# vi config.yml
參考官方模板(記得修改組態檔的每行要頂頭)
# 專案名稱, 會用來向Jumpserver注冊, 識別而已, 不能重復
# NAME: {{ Hostname }}
# Jumpserver專案的url, api請求注冊會使用
CORE_HOST: http://127.0.0.1:8080
# Bootstrap Token, 預共享秘鑰, 用來注冊coco使用的service account和terminal
# 請和jumpserver 組態檔中保持一致,注冊完成后可以洗掉
BOOTSTRAP_TOKEN: zxffNymGjP79j6BN
# 啟動時系結的ip, 默認 0.0.0.0
# BIND_HOST: 0.0.0.0
# 監聽的SSH埠號, 默認2222
# SSHD_PORT: 2222
# 監聽的HTTP/WS埠號,默認5000
# HTTPD_PORT: 5000
# 專案使用的ACCESS KEY, 默認會注冊,并保存到 ACCESS_KEY_STORE中,
# 如果有需求, 可以寫到組態檔中, 格式 access_key_id:access_key_secret
# ACCESS_KEY: null
# ACCESS KEY 保存的地址, 默認注冊后會保存到該檔案中
# ACCESS_KEY_FILE: data/keys/.access_key
# 設定日志級別 [DEBUG, INFO, WARN, ERROR, FATAL, CRITICAL]
LOG_LEVEL: ERROR
# SSH連接超時時間 (default 15 seconds)
# SSH_TIMEOUT: 15
# 語言 [en,zh]
# LANG: zh
# SFTP的根目錄, 可選 /tmp, Home其他自定義目錄
# SFTP_ROOT: /tmp
# SFTP是否顯示隱藏檔案
# SFTP_SHOW_HIDDEN_FILE: false
# 是否復用和用戶后端資產已建立的連接(用戶不會復用其他用戶的連接)
# REUSE_CONNECTION: true
# 資產加載策略, 可根據資產規模自行調整. 默認異步加載資產, 異步搜索分頁; 如果為all, 則資產全部加載, 本地搜索分頁.
# ASSET_LOAD_POLICY:
# zip壓縮的最大額度 (單位: M)
# ZIP_MAX_SIZE: 1024M
# zip壓縮存放的臨時目錄 /tmp
# ZIP_TMP_PATH: /tmp
# 向 SSH Client 連接發送心跳的時間間隔 (單位: 秒),默認為30, 0則表示不發送
# CLIENT_ALIVE_INTERVAL: 30
# 向資產發送心跳包的重試次數,默認為3
# RETRY_ALIVE_COUNT_MAX: 3
# 會話共享使用的型別 [local, redis], 默認local
SHARE_ROOM_TYPE: redis
# Redis配置
REDIS_HOST: 127.0.0.1
REDIS_PORT: 6379
#REDIS_PASSWORD:
#REDIS_CLUSTERS:
#REDIS_DB_ROOM: 6
我們需要修改的幾個地方被紅框框起來



啟動核心組件koko
首先啟動,檢查是否有報錯
./koko

其次把koko組件放入后臺運行
./koko -d
最后檢查埠是否啟動會有一5000 和2222兩個埠
netstat -lntp

2.3 前端組件部署lina,luna
我這里采用的是本地方式進行軟體包的上傳


① 下載 Lina 組件(/opt 下)
(py3) [root@jumpserver opt]# tar xf lina-v2.2.2.tar.gz
(py3) [root@jumpserver opt]# mv lina-v2.2.2 lina
(py3) [root@jumpserver opt]# chown -R nginx.nginx lina
② 下載 Luna 組件(/opt 下)
(py3) [root@jumpserver opt]# tar xf luna-v2.2.2.tar.gz
(py3) [root@jumpserver opt]# mv luna-v2.2.2 luna
(py3) [root@jumpserver opt]# chown -R nginx.nginx luna
③ 配置 Nginx 整合各組件
(py3) [root@jumpserver opt]# yum install nginx -y (要在上傳luna lina組件之前 因為它們兩個目錄授權需要nginx用戶)
參考官方模板(我添加了server_name jumpserver.etiantian.org;域名決議)
(py3) [root@jumpserver opt]# vim /etc/nginx/conf.d/jumpserver.etiantian.org.conf
server {
listen 80;
client_max_body_size 100m; # 錄像及檔案上傳大小限制
server_name jumpserver.etiantian.org;
location /ui/ {
try_files $uri / /index.html;
alias /opt/lina/;
}
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 /koko/ {
proxy_pass http://localhost:5000;
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 /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 /ws/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8070;
proxy_http_version 1.1;
proxy_buffering off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /api/ {
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;
}
location /core/ {
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;
}
location / {
rewrite ^/(.*)$ /ui/$1 last;
}
}
(py3) [root@jumpserver opt]# systemctl start nginx
(py3) [root@jumpserver opt]# systemctl enable nginx
2.4 配置本地dns劫持,登陸JumpServer進行管理


默認用戶密碼都是admin

密碼太簡單需要重新修改登陸admin用戶密碼


最后登陸到管理界面

3.JumpServer用戶管理
普通用戶: 登錄Jumpserver的web頁面 的用戶 , 運維 開發
系統用戶: 是 JumpServer 跳轉登錄資產時使用的用戶[ansible 自動推送,不支持交換機]
管理用戶: 管理用戶是被控服務器上的 root, JumpServer使用該用戶來 推送系統用戶、獲取資產硬體資訊等 [先免密]

3.1 創建普通用戶
①添加用戶組
創建一個開發組和運維組





②添加用戶
創建一個oldboy和一個oldgirl普通用戶




③ 創建的普通用戶使用測驗
普通用戶就是登陸網頁jumpserver的登陸用戶,所以我們重新登陸發現和用管理員登陸界面是有區別的,
我們用創建的普通用戶oldboy登陸一下

發現左邊的專案欄是有區別的,第一次登陸需要填寫個人資訊,然后選擇我同意,就可以使用了,


普通用戶管理資產兩種頁面
1.web頁面

2.終端頁面
ssh oldboy@10.0.0.200 2222

3.2 創建管理用戶
① jumpserver ------> 被控端主機進行免密登錄實作跳板機功能
ssh-keygen

會生成一對密鑰對,一個公鑰(id_rsa.pub)一個私鑰(id_rsa)

推送公鑰到被控制端,實作免密登陸
ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.7
ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.8
ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.51
②創建管理用戶


下載私鑰: [root@jumpserver ~]# sz ~/.ssh/id_rsa —> 上傳root用戶私鑰到頁面
3.3 創建系統用戶



對系統用戶進行提權

4.JumpServer資產管理

4.1 規劃資產樹

根據公司需求進行劃分
我們可以根據地域,區域,部門,進行劃分
我們根據地域劃分出上海機房,北京機房
我們根據區域在北京機房中劃分昌平機房,海淀機房
我們還可以根據部門在海淀機房劃分運維,開發等部門


4.2 添加資產

加入資產web01

加入資產web02

加入資產db01

4.3 授權資產

我們對用戶組進行資產的授權
我們運維組授權可以管理北京機房和上海機房的資產(172.16.1.7/8/51)
我們開發組授權可以管理上海機房的資產(172.16.1.51)

我們運維組授權可以管理北京機房和上海機房的資產(172.16.1.7/8/51)

我們開發組授權可以管理上海機房的資產(172.16.1.51)


4.4 驗證階段

我們用普通用戶oldgirl登陸jumpserver頁面,oldgril隸屬于運維組,所以可以對運維組授權的資產進行管理(3臺節點)


我們可以選擇web終端進行對每臺節點的管理(免密登陸)

我們用普通用戶oldboyl登陸jumpserver頁面,oldboy隸屬于開發組,所以可以對開發組授權的資產進行管理(1臺節點)

4.5 新創建一個權限比cry高的系統用戶
① 其實就是再創建一個系統用戶kenneth


② 對新創建的kenneth系統用戶進行資產授權



③ 進行手動的推送系統用戶資訊到資產中(底層用ansible推送)



④當我再去登陸資產時就會出現選擇用那一個系統用戶登錄

4.6 加入資料庫資產
①我們先創建一個dba組和dba普通用戶隸屬與dba組
密碼123456

② 創建資料庫應用



③ 創建一個登陸資料庫的系統用戶(走的是mysql協議)

④ 對資料庫進行資產授權


⑤ 登陸資料庫資產(通過我們創建的dba普通用戶)


⑥ 我們在對資產進行的任何操作都會記錄下來,可以回放視頻,可以中止,可以在線監控


5.Jumpserver命令過濾器(限制危險命令的執行 )
我們現在假設不讓使用rm命令,怎么操作呢?

5.1 創建一個命令過濾器名稱

5.2 添加命令過濾器不允許的操作



5.3 系結系統用戶進行限制操作

測驗操作,通過cry系統用戶登錄資產后能否使用rm命令


6.普通用戶的檔案管理(上傳和下載)

6.1 上傳檔案操作程序
①我使用系統用戶cry登陸到資產,選中默認進行上傳檔案


②發現上傳的檔案,在/tmp下 ,而且這個檔案的所屬主和所屬組都是我們上傳者cry

6.2 下載檔案操作程序
①我在/tmp下面創建一個名稱為2.txt的檔案

②我們在web頁面終端可以進行對檔案下載



6.3 為什么默認上傳下載的目錄是/tmp?
是因為我們的koko組件的組態檔中這樣規定的,如下圖所示

7.jumpserverd多因子認證(加強登陸安全性)
在用戶名密碼登陸的方式上再進行一次認證,來達到登陸安全性的提高
啟用多因子認證兩種方式
一.在創建普通用戶時選中多因子認證強制啟動
① 創建普通用戶也就是登陸Jumpserver頁面的用戶

②登陸測驗
我們進入登陸界面,登陸我們剛創建出來的scry普通用戶,這里的密碼是創建用戶設定的密碼 123456

接下來因為我們開啟多因子認證,所以開始開啟多因子認證進行初始化的操作 輸入我們普通用戶登陸密碼123456

然后會發生跳轉,會讓你使用第三方手機端的一個認證app,從而生成動態密碼

我用手機下載軟體


我們用手機這個軟體掃描下面的二維碼就會生成動態的驗證碼


完成初始化設定后我們通過輸入手機上的動態認證碼和用戶密碼才可以登陸進去


二.全域啟動多因子認證

8 混合云生產環境引入JumpServer網域功能概念
8.1 什么是混合云?
混合云融合了公有云和私有云,是近年來云計算的主要模式和發展方向,我們已經知道私有云主要是面向企業用戶,出于安全考慮,企業更愿意將資料存放在私有云中,但是同時又希望可以獲得公有云的計算資源,在這種情況下混合云被越來越多的采用,它將公有云和私有云進行混合和匹配,以獲得最佳的效果,這種個性化的解決方案,達到了既省錢又安全的目的,
8.2 混合云生產環境部署JumpServer網域功能原理圖

8.3 混合云生產環境部署JumpServer網域功能實作思路
1.jumpserver與網域網管服務器進行免密
2.網域網關服務器與云主機進行免密
3.填寫一個網域,然后添加網管服務器
3.1填寫公網IP,
3.2登陸網域服務器使用的是管理云主機的管理用戶root,需要使用jumpserver的私鑰驗證,
4.新添加一個管理用戶,用來管理云主機 配置的是網域服務器的私鑰驗證
5.分配整合云主機資產
8.4 混合云生產環境部署JumpServer網域功能實踐操作步驟
① 買三臺沒有公網的阿里云云主機





② 購買一個公網彈性ip



③ 公網ip系結一臺云主機(ecs)上作為我們的網域服務器



三臺云主機都在同一網段我們公網ip系結一臺作為網域服務器,用擁有公網ip的云主機充當網域服務器連接其他兩臺云主機
④ 使jumpserver與網域服務器建立免密連接
把jumpserver的公鑰推送給網域服務器
ssh-copy-id -i ~/.ssh/id_rsa.pub root@39.98.161.147(公網ip)


⑤ 登陸網域服務器與兩臺云主機建立免密關系
1> 生產密鑰對
ssh-keygen

2> 推送網域服務器公鑰給兩臺云主機
ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.238(云主機內網IP)
ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.237(云主機內網IP)

3> 測驗網域服務是否能夠免密登陸兩臺云主機

⑥ 創建網域串列,進行網關配置(配置的是jumpserver到網域服務器之間的連接)
1> 創建網域串列 阿里云-張家口節點


2> 進行網關配置

我們jumpserver到網域服務器之間進行免密
我們推送了在jumpserver生產的一對密鑰對的公鑰給網域服務器
所以這里連接網域服務器使用的是jumpserver的私鑰,來進行非對稱性認證,

⑦ 添加一個管理云主機資產的管理用戶root

我們的管理用戶root管理云主機資產,通過網域服務器連接到公有云內部云主機中
我們網域服務器到云主機之間進行免密
我們推送了網域服務器生產的一對密鑰對的公鑰給網域服務器
所以這里填寫的密鑰是網域服務器生產的私鑰,來進行非對稱性認證,
1> 獲得網域服務器的私鑰,我們把它下載到本地
yum -y install lrzsz
sz ~/.ssh/id_rsa

2> 添加配置管理云主機的管理用戶root


⑧ 添加云主機資產
1> 創建阿里云節點的資產樹

2> 在阿里云下添加兩臺云主機節點資產
aly01

aly02


⑨ 把云主機資產授權給用戶組(運維組)


⑩ 測驗
1> 我們使用隸屬于運維組的oldgirl進行jumpserver頁面登陸


2> web終端訪問阿里云主機,可以訪問成功

9.Jumpserver安全提升
9.1安全升級
作業系統∶盡量升級到符合要求的新版本,
Jumpserver:請保持使用最新版本的Jumpserver依賴軟體∶建議升級
Jumpserver依賴的軟體版本
9.2 使用安全組件
使用系統防火墻Firewall:埠轉發
關閉密碼登陸 建議: 用戶—> vpn —> 內網
9.3優化系統架構
傳統架構︰用戶–>Jumpserver–>目標資產
新型架構︰用戶–>防火墻(規則限制)–>Jumpserver–>目標資產
9.4 配置HTTPS方式
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/224760.html
標籤:其他
上一篇:學習三周Python感悟
