實現jumpserver堡壘機做管理
架構圖:
實現原理:A主機安裝Docker環境,作為jumpserver堡壘機,后端B主機作為MySQL和Redis服務器,MySQL和Redis對普通用戶的賬號和密碼做認證,如果賬號密碼不正確,不讓其登陸jumpserver,如果A主機掛掉,不會丟失數據,因為數據都在MySQL和Redis上,此時只需要將B主機環境搭建和A主機一致即可。
環境准備:
A主機:jumpseerver IP地址:192.168.7.100
B主機:MySQL/Redis IP地址:192.168.7.101
一、A主機安裝docker軟件
docker容器進行安裝jumpserver:為了使用最新版本的docker,需要在阿里雲上下載最新的rpm包:
1、官方下載路徑:https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@centos-7 yum.repos.d]# cd /etc/yum.repos.d/ [root@centos-7 yum.repos.d]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #下載yum源倉庫 [root@centos-7 yum.repos.d]# yum install docker-ce -y #安裝docker-ce軟件 [root@centos-7 yum.repos.d]#systemctl start docker
2、啟動docker服務,並下載對應的docker-ce包
下載的指導書網址:https://jumpserver.readthedocs.io/zh/master/dockerinstall.html
配置一個加速器,指向阿里雲的下載路徑,會下載docker鏡像比較快,沒有加速器就算了
[root@centos-7 ~]# vim /etc/docker/daemon.json { "registry-mirrors": ["https://9916wlow.mirror.aliyuncs.com"] }
重啟docker服務,並下載docker鏡像
[root@centos-7 ~]# systemctl restart docker [root@centos-7 yum.repos.d]# docker pull jumpserver/jms_all:latest #下載docker鏡像
二、B主機安裝數據庫
1、安裝mariadb數據庫
[root@centos-7 yum.repos.d]# yum install centos-release-openstack-rocky.noarch -y #安裝openstack包,自帶mariadb最新版包,此次是為了方便,最好是二進制編譯安裝 [root@centos-7 yum.repos.d]# yum install mariadb-server -y #安裝mariadb包
2、啟動mariadb數據庫,創建賬號並授權
[root@centos-7 yum.repos.d]# mysql Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 8 Server version: 10.3.10-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> create database jumpserver default charset 'utf8'; #創建賬號 Query OK, 1 row affected (0.000 sec) MariaDB [(none)]> grant all on jumpserver.* to 'jumpserver'@'%' identified by 'centos'; #授權 Query OK, 0 rows affected (0.001 sec) MariaDB [(none)]>
3、最好在其他客戶端驗證是否可以連接mysql數據庫
[root@centos-7 ~]# mysql -ujumpserver -pcentos -h192.168.7.100 #遠程登錄數據庫服務,此時可以看到可以登錄 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 9 Server version: 10.3.10-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> show databases ; +--------------------+ | Database | +--------------------+ | information_schema | | jumpserver | +--------------------+ 2 rows in set (0.001 sec) MariaDB [(none)]>
三、B主機安裝redis服務
[root@centos-7 ~]# yum install redis -y #安裝redis [root@centos-7 ~]# vim /etc/redis.conf #修改配置文件 bind 0.0.0.0 #端口綁定到0.0.0.0 requirepass centos #密碼設置為mariadb數據庫的密碼
1、啟動redis服務,並設置為開機啟動
[root@centos-7 ~]# systemctl start redis [root@centos-7 ~]# systemctl enable redis
四、A主機創建docker容器
1、生成隨機加密秘鑰並創建docker容器
# 生成隨機加密秘鑰, 勿外泄 $ 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:latest # 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
2、創建docker容器
[root@centos-7 ~]# mkdir /opt/jumpserver #創建一個目錄 #創建容器的命令如下: docker run --name linux_docker1 -d \ -v /opt/jumpserver:/opt/jumpserver/data/media \ -p 80:80 \ -p 2222:2222 \ -e SECRET_KEY=6oNPRN7NCEWnkmB45XCRmozmzdvZ93KGQoz8PmZvDxAPPnxDRw \ -e BOOTSTRAP_TOKEN=xPSBe9nnQc8l3GOy \ -e DB_HOST=192.168.7.101 \ -e DB_PORT=3306 \ -e DB_USER=jumpserver \ -e DB_PASSWORD=centos \ -e DB_NAME=jumpserver \ -e REDIS_HOST=192.168.7.101 \ -e REDIS_PORT=6379 \ -e REDIS_PASSWORD=centos \ jumpserver/jms_all:latest
3、查看docker狀態
[root@openstack-2 yum.repos.d]# docker ps #查看docker狀態 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 103cc0190e3b jumpserver/jms_all:latest "entrypoint.sh" 7 seconds ago Up 4 seconds 0.0.0.0:80->80/tcp, 0.0.0.0:2222->2222/tcp linux_docker1 [root@openstack-2 yum.repos.d]# docker logs -f 103cc0190e3b #后面加上查到的ID號,對docker進行初始化
查看此時的端口號是:2222
3、在網頁進行登錄jumpserver堡壘機,默認用戶名是admin,密碼是admin。
五、在jumpserver創建組和用戶
1、創建組
2、創建用戶
① 點擊頁面左側"用戶列表"菜單下的"用戶列表",進入用戶列表頁面。
② 點擊頁面左上角"創建用戶"按鈕,進入創建用戶頁面,填寫賬戶,角色安全,個人等信息。
其中,用戶名即 Jumpserver 登錄賬號。用戶組是用於資產授權,當某個資產對一個用戶組授權后,這個用戶組下面的所有用戶就都可以使用這個資產了。角色用於區分一個用戶是管理員還是普通用戶。
六、創建資產
1、創建linux資產
(1)創建系統賬號
① 系統用戶是 Jumpserver 跳轉登錄資產時使用的用戶,可以理解為登錄資產用戶,如 web, sa, dba(ssh web@some-host), 而不是使用某個用戶的用戶名跳轉登錄服務器(ssh xiaoming@some-host); 簡單來說是 用戶使用自己的用戶名登錄Jumpserver, Jumpserver使用系統用戶登錄資產。
② 系統用戶的 Sudo 欄填寫允許當前系統用戶免sudo密碼執行的程序路徑,如默認的/sbin/ifconfig,意思是當前系統用戶可以直接執行 ifconfig 命令或 sudo ifconfig 而不需要輸入當前系統用戶的密碼,執行其他的命令任然需要密碼,以此來達到權限控制的目的。
Sudo /bin/su # 當前系統用戶可以免sudo密碼執行sudo su命令(也就是可以直接切換到root,生產環境不建議這樣操作) Sudo /usr/bin/git,/usr/bin/php,/bin/cat,/bin/more,/bin/less,/usr/bin/head,/usr/bin/tail # 當前系統用戶可以免sudo密碼執行git php cat more less head tail # 此處的權限應該根據使用用戶的需求匯總后定制,原則上給予最小權限即可。
④ 系統用戶創建時,如果選擇了自動推送 Jumpserver 會使用 Ansible 自動推送系統用戶到資產中,如果資產(交換機、Windows )不支持 Ansible, 請手動填寫賬號密碼。
Linux 系統協議項務必選擇 ssh 。如果用戶在系統中已存在,請去掉自動生成密鑰、自動推送勾選。
(2)創建管理用戶
管理用戶是服務器的 root,或擁有 NOPASSWD: ALL sudo 權限的用戶,Jumpserver 使用該用戶來推送系統用戶、獲取資產硬件信息等。
注意:資產管理里面的所以信息,都是和資產有關,包括創建的所有用戶;jumpserver的root用戶密碼,只給jumpserver管理員登錄安裝了jumpserver的服務器使用。除此之外不用在任何地方;不用搞混了(我就搞混了)
密碼是通過ssh遠程連接需要輸入主機root的密碼。
(3)創建資產
點擊以下地方,可以對當前創建的資產進行測試:
出現測試任務結束,說明此時的資產沒問題:
(4)進行資產授權
① 節點,對應的是資產,代表該節點下的所有資產。
② 用戶組,對應的是用戶,代表該用戶組下所有的用戶。
③ 系統用戶,及所選的用戶組下的用戶能通過該系統用戶使用所選節點下的資產。
④ 節點,用戶組,系統用戶是一對一的關系,所以當擁有 Linux、Windows 不同類型資產時,應該分別給 Linux 資產和 Windows 資產創建授權規則。
將創建的系統用戶(www)授權於創建的用戶dev組,而dev組內包含zhangxiaoming用戶。
七、用戶使用資產
用戶登錄 Jumpserver
創建授權規則的時候,選擇了用戶組,所以這里需要登錄所選用戶組下面的用戶才能看見相應的資產。
用戶正確登錄后的頁面:
用戶使用資產
(1)連接資產
① 點擊頁面左邊的 Web 終端:
② 打開資產所在的節點:
③ 雙擊資產名字,就連上資產了:
如果顯示連接超時,請檢查為資產分配的系統用戶用戶名和密鑰是否正確,是否正確選擇 Windows 操作系統,協議 rdp,端口3389,是否正確選擇 Linux 操作系統,協議 ssh,端口22,以及資產的防火牆策略是否正確配置等信息。接下來,就可以對資產進行操作了。
④ 測試
創建一個test
在服務器上,確實有test 文件
(2)連接windows 資源
斷開資產
點擊頁面頂部的 Server 按鈕會彈出選個選項,第一個斷開所選的連接,第二個斷開所有連接。
會話管理
可以查看普通用戶登錄到指定的賬號,能回放此用戶操作的內容,防止某些心存歹意之人進行其他操作。