jumpserver部署安裝

前言
我們對堡壘機(跳板機)不會陌生,爲了保證服務器安全,加個堡壘機,所有ssh連接都通過堡壘機來完成,堡壘機也需要有身份認證、授權、訪問控制、審計等功能。
Jumpserver 是全球首款完全開源的堡壘機, 是符合 4A 的專業運維審計系統。
Jumpserver 使用 Python / Django 進行開發, 採納分佈式架構, 支持多機房跨區域部署, 中心節點提供 API, 各機房部署登錄節點, 可橫向擴展、無併發訪問限制。
Jumpserver 現已支持管理 SSH、 Telnet、 RDP、 VNC 協議資產。
架構說明
架構示意圖如下:
jumpserver部署安裝
Jumpserver包含四個組件,各個組件的作用如下:

•   Jumpserver 爲管理後臺, 管理員可以通過 Web 頁面進行資產管理、用戶管理、資產授權等操作, 用戶可以通過 Web 頁面進行資產登錄, 文件管理等操作
•   Coco 爲 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
•   Coco 默認 SSH 端口爲 2222/tcp, 默認 Web Terminal 端口爲 5000/tcp 配置文件在 coco/config.yml
•   Guacamole 默認端口爲 8081/tcp, 配置文件 /config/tomcat8/conf/server.xml
•   Nginx 默認端口爲 80/tcp
•   Redis 默認端口爲 6379/tcp
•   Mysql 默認端口爲 3306/tcp

jumpserver部署安裝
這篇博文將採用一站式的方式部署Jumpserver,其實更建議取參考官方文檔部署Jumpserver。
博文大綱:

一、環境準備
二、配置Python 3環境
三、安裝Jumpserver
四、安裝MySQL及Redis
五、安裝配置coco組件
六、安裝guacamole及luna
七、安裝Nginx
八、Client訪問測試

一、環境準備

•   系統:CentOS 7
•   IP:192.168.20.3
•   數據庫:mariadb
•   反向代理:nginx

注:若是測試環境,內存最少4G,雙核CPU。
在進行下面的操作前,請下載我提供的各個源碼包。
首先將環境字體設置成中文,因爲jumpserver的日誌文件裏面的內容會包含中字符,不支持可能會亂碼。

[root@jumpserver ~]# localedef -c -f UTF-8 -i  zh_CN  zh_CN.UTF-8
[root@jumpserver ~]# export LC_ALL=zh_CN.UTF-8
[root@jumpserver ~]# echo 'LC_ALL=zh_CN.UTF-8' > /etc/locale.conf 

二、配置Python 3環境

[root@jumpserver ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@jumpserver ~]# yum -y install wget sqlite-devel xz gcc automake zlib-devel openssl-devel epel-release git
[root@jumpserver ~]# tar xf Python-3.6.1.tar.xz -C /usr/src
[root@jumpserver ~]# cd /usr/src/Python-3.6.1/
[root@jumpserver Python-3.6.1]# ./configure && make && make install
[root@jumpserver Python-3.6.1]# cd /opt
[root@jumpserver opt]# python3 -m venv py3
[root@jumpserver opt]# source /opt/py3/bin/activate   
#設置自動載入py3虛擬環境(以後只要進入這個目錄就是Py3的環境)
(py3) [root@jumpserver opt]# unzip autoenv.zip 
(py3) [root@jumpserver opt]# echo "source /opt/autoenv/activate.sh" >> /root/.bashrc
(py3) [root@jumpserver opt]# . ~/.bashrc 

三、安裝Jumpserver

(py3) [root@jumpserver opt]# unzip jumpserver.zip 
(py3) [root@jumpserver opt]#  echo "source /opt/py3/bin/activate" > /opt/jumpserver/.env
(py3) [root@jumpserver opt]# cd jumpserver/
autoenv:
autoenv: WARNING:
autoenv: This is the first time you are about to source /opt/jumpserver/.env:
autoenv:
autoenv:   --- (begin contents) ---------------------------------------
autoenv:     source /opt/py3/bin/activate$
autoenv:
autoenv:   --- (end contents) -----------------------------------------
autoenv:
autoenv: Are you sure you want to allow this? (y/N) y   #這裏輸入“y”,以便自動載入py3環境
(py3) [root@jumpserver jumpserver]# cd requirements/
(py3) [root@jumpserver requirements]# yum -y install $(cat rpm_requirements.txt)
(py3) [root@jumpserver requirements]# pip install --upgrade pip
(py3) [root@jumpserver requirements]# pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/

四、安裝MySQL及Redis

#安裝MySQL
(py3) [root@jumpserver requirements]# yum -y install mariadb*
(py3) [root@jumpserver requirements]# systemctl start mariadb
(py3) [root@jumpserver requirements]# mysqladmin -u root password 123.com
(py3) [root@jumpserver requirements]# mysql -u root -p123.com
MariaDB [(none)]> create database jumpserver default charset 'utf8' ;
MariaDB [(none)]> grant all on jumpserver.* to [email protected] identified by '123.com';
#安裝Redis
(py3) [root@jumpserver ~]# yum -y install redis
(py3) [root@jumpserver ~]# systemctl start redis
(py3) [root@jumpserver ~]# netstat -anput | grep 6379
#修改jumpserver配置文件
(py3) [root@jumpserver ~]# cd /opt/jumpserver/
(py3) [root@jumpserver jumpserver]# cp config_example.yml config.yml 
#生成祕鑰令牌
(py3) [root@jumpserver jumpserver]# SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`
(py3) [root@jumpserver jumpserver]# echo "SECRET_KEY=$SECRET_KEY" >> ~/.bashrc
(py3) [root@jumpserver jumpserver]# BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16`
(py3) [root@jumpserver jumpserver]# echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc
(py3) [root@jumpserver jumpserver]# sed -i "s/SECRET_KEY:/SECRET_KEY: $SECRET_KEY/g" /opt/jumpserver/config.yml
(py3) [root@jumpserver jumpserver]# sed -i "s/BOOTSTRAP_TOKEN:/BOOTSTRAP_TOKEN: $BOOTSTRAP_TOKEN/g" /opt/jumpserver/config.yml
(py3) [root@jumpserver jumpserver]# sed -i "s/# DEBUG: true/DEBUG: false/g" /opt/jumpserver/config.yml
(py3) [root@jumpserver jumpserver]# sed -i "s/# LOG_LEVEL: DEBUG/LOG_LEVEL: ERROR/g" /opt/jumpserver/config.yml
(py3) [root@jumpserver jumpserver]# sed -i "s/# SESSION_EXPIRE_AT_BROWSER_CLOSE: False/SESSION_EXPIRE_AT_BROWSER_CLOSE: true/g" /opt/jumpserver/config.yml 
(py3) [root@jumpserver jumpserver]# sed -i "s/DB_PASSWORD: /DB_PASSWORD: 123.com/g" /opt/jumpserver/config.yml
(py3) [root@jumpserver jumpserver]# echo -e "\033[31m 你的SECRET_KEY是 $SECRET_KEY \033[0m"
 你的SECRET_KEY是 Z6bUvXTZRpc73pnRp4qNwn1eMWNYrgzbEWkVJqIVXc6cXfpKDU 
(py3) [root@jumpserver jumpserver]# echo -e "\033[31m 你的BOOTSTRAP_TOKEN是 $BOOTSTRAP_TOKEN \033[0m"
 你的BOOTSTRAP_TOKEN是 aGXZtXKnhP3StNA3 
(py3) [root@jumpserver jumpserver]# egrep -v '^$|^#' config.yml     #確定配置文件修改無誤
SECRET_KEY: jS1ph0yvliBHdMV7YopAkBrEdIkZ3DjAq6HsftIPpQriNNBO2k
BOOTSTRAP_TOKEN: fUXgq00wg6XCD5lp
DEBUG: false
LOG_LEVEL: ERROR
SESSION_EXPIRE_AT_BROWSER_CLOSE: true
DB_ENGINE: mysql
DB_HOST: 127.0.0.1
DB_PORT: 3306
DB_USER: jumpserver
DB_PASSWORD: 123.com
DB_NAME: jumpserver
HTTP_BIND_HOST: 0.0.0.0
HTTP_LISTEN_PORT: 8080
REDIS_HOST: 127.0.0.1
REDIS_PORT: 6379
(py3) [root@jumpserver jumpserver]# ./jms start all -d    #啓動jumpserver
(py3) [root@jumpserver jumpserver]# netstat -anpt | grep 8080
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      17420/python3       

五、安裝配置coco組件

(py3) [root@jumpserver opt]# unzip coco.zip 
(py3) [root@jumpserver opt]# cd coco
(py3) [root@jumpserver coco]# echo "source /opt/py3/bin/activate" > /opt/coco/.env
(py3) [root@jumpserver coco]# cd requirements/
autoenv:
autoenv: WARNING:
autoenv: This is the first time you are about to source /opt/coco/.env:
autoenv:
autoenv:   --- (begin contents) ---------------------------------------
autoenv:     source /opt/py3/bin/activate$
autoenv:
autoenv:   --- (end contents) -----------------------------------------
autoenv:
autoenv: Are you sure you want to allow this? (y/N) y   #輸入“y”
(py3) [root@jumpserver requirements]# yum -y install $(cat rpm_requirements.txt)
(py3) [root@jumpserver requirements]# pip install -r requirements.txt
#修改配置文件
(py3) [root@jumpserver requirements]# cd ..
(py3) [root@jumpserver coco]# cp config_example.yml config.yml 
(py3) [root@jumpserver coco]# echo -e "\033[31m 你的BOOTSTRAP_TOKEN是 $BOOTSTRAP_TOKEN \033[0m"
#查看BOOTSTRAP_TOKEN的值
 你的BOOTSTRAP_TOKEN是 fUXgq00wg6XCD5lp 
 #注意,執行下面的命令時,需要自行修改爲自己查看出來的值:
(py3) [root@jumpserver coco]# sed -i 's/BOOTSTRAP_TOKEN: <PleasgeChangeSameWithJumpserver>/BOOTSTRAP_TOKEN: fUXgq00wg6XCD5lp/g' config.yml 
(py3) [root@jumpserver coco]# sed -i 's/# LOG_LEVEL: INFO/LOG_LEVEL: ERROR/g' config.yml 
(py3) [root@jumpserver coco]# egrep -v '^$|^#' config.yml    #確定修改的配置文件
CORE_HOST: http://127.0.0.1:8080
BOOTSTRAP_TOKEN: fUXgq00wg6XCD5lp
LOG_LEVEL: ERROR
#後臺啓動coco
(py3) [root@jumpserver coco]# ./cocod start -d

六、安裝guacamole及luna

這裏採用docker容器的方式部署。
#部署docker環境
(py3) [root@jumpserver ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
(py3) [root@jumpserver ~]# yum-config-manager  --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
(py3) [root@jumpserver ~]# yum makecache fast
(py3) [root@jumpserver ~]# yum -y install docker-ce
(py3) [root@jumpserver ~]# systemctl start docker
(py3) [root@jumpserver ~]# docker load  --input guacamole.tar
#啓動容器
(py3) [root@jumpserver ~]# docker  run   --name  jms_guacamole   -d -p  8081:8080 -v /opt/guacamole/key:/config/guacamole/key  -e JUMPSERVER_KEY_DIR=/config/guacamole/key -e JUMPSERVER_SERVER=http://192.168.10.8:8080 jumpserver/guacamole:latest
(py3) [root@jumpserver ~]# netstat -anput | grep 8081   #確定端口在監聽
tcp6       0      0 :::8081                 :::*                    LISTEN      19162/docker-proxy  
(py3) [root@jumpserver ~]# tar zxf luna.tar.gz -C /opt/    #將luna解壓至/opt

七、安裝Nginx

(py3) [root@jumpserver /]# tar zxf nginx-1.2.4.tar.gz -C /usr/src
(py3) [root@jumpserver /]# cd /usr/src/nginx-1.2.4/
(py3) [root@jumpserver nginx-1.2.4]# ./configure --prefix=/usr/local/nginx && make && make install
(py3) [root@jumpserver nginx-1.2.4]# ln -sf /usr/local/nginx/sbin/nginx /usr/local/bin/
(py3) [root@jumpserver nginx-1.2.4]# cd /usr/local/nginx/conf/
(py3) [root@jumpserver conf]# mv nginx.conf nginx.conf.bak
(py3) [root@jumpserver conf]# rz    #上傳我提供的Nginx配置文件
(py3) [root@jumpserver conf]# ls | grep nginx.conf
nginx.conf     #在博文開頭的網盤鏈接中有此文件
nginx.conf.bak
nginx.conf.default
(py3) [root@jumpserver conf]# nginx -t     #確定Nginx配置無誤
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
(py3) [root@jumpserver conf]# nginx     #啓動Nginx

八、Client訪問測試
訪問Nginx服務器的IP地址,即可看到登錄頁面(默認用戶名及密碼都是“admin”):
jumpserver部署安裝
1、創建用戶
jumpserver部署安裝
jumpserver部署安裝
2、創建管理用戶
jumpserver部署安裝
jumpserver部署安裝
3、創建系統用戶
用戶名儘量爲root,選擇手動登錄,這個用戶是用來連接後端資產的。
jumpserver部署安裝
jumpserver部署安裝
4、創建資產
我這裏啓動了一臺IP爲192.168.20.4的主機來作爲後端資產,以便測試。
jumpserver部署安裝
jumpserver部署安裝
5、創建授權規則
jumpserver部署安裝
jumpserver部署安裝
6、連接後端資產測試
jumpserver部署安裝
jumpserver部署安裝

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章