centos7.4安裝部署jumpserver(數據庫外置)配置全過程--無問題

一、jumpserver概述
jumpserver是全球首款完全開源的堡壘機,使用Python/django進行開發,遵循GNU GPL v2.0 開源協議,是符合 4A 的專業運維審計系統,遵循 Web 2.0 規範,配備了業界領先的 Web Terminal,交互美觀,支持分佈式架構,可以對多機房跨區域部署。jumpserver好比是軍事界的瑞士軍刀,可以將我們的運維管理水平提高到一個專業的水平,如果說仍然還採用CRT或者Xshell進行批量管理的你,jumpserver無疑是雪中送炭。

1、jumpserver架構說明
centos7.4安裝部署jumpserver(數據庫外置)配置全過程--無問題
組件說明:
(1)、Jumpserver:jumpserver是管理後臺,是核心組件(Core), 使用 Django Class Based View 風格開發,支持 Restful API,是jumpserver系統的核心管理終端

(2)、Coco:實現了SSH Server 和 Web Terminal Server 的組件,提供SSH和 WebSocket 接口,使用 Paramiko和Flask開發,是web頁面實現SSH的關鍵組件,在最近的版本中,採用了koko替換了coco,但其作用是一致的

(3)、Guacamole:Jumpserver 使用其組件實現 RDP 功能,Jumpserver 並沒有修改其代碼而是添加了額外的插件,支持 Jumpserver 調用。在這裏的作用是採集Windows資產信息,如果你管理的資產中不涉及windows可以忽略(建議進行安裝)

(4)、Luna:現在是 Web Terminal 前端,計劃前端頁面都由該項目提供,Jumpserver 只提供 API,不再負責後臺渲染html等,採用Luna的頁面簡單美觀

(5)、NGINX:WEB服務軟件,採用了動靜分離的思想,NGINX自身擅長對靜態資源的處理(Luna),對於接口以及websocket實現反向代理,是強大的web服務器軟件

(6)、DB:採用內置yum安裝MySQL,其搭建過程並不在文章中體現,對於本文搭建jumpserver,其實就是用到了db的連接信息


二、安裝環境:
系統: CentOS 7.4
IP: 172.16.29.80(購買的阿里雲ECS)
設置 selinux 和防火牆

1、關閉防火牆
$ systemctl stop firewall
設置開機不啓動防火牆
$ systemctl disable firewalld

2、關閉selinux
$ setenforce 0
$ sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

centos7.4安裝部署jumpserver(數據庫外置)配置全過程--無問題

3、#修改字符集,否則可能報input/output error的問題。
$ 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

4、準備Python環境
$ yum -y install wget sqlite-devel xz gcc automake zlib-devel openssl-devel epel-release git
$ wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
$ mv Python-3.6.1.tar.xz /usr/src && cd /usr/src/ && tar xvf Python-3.6.1.tar.xz && cd Python-3.6.1
$ ./configure && make && make install
以上是採用源碼安裝的方式進行Python3.6的安裝,也可以yum安裝Python3.6環境,如下:
$ yum -y install python36 python36-devel

如果下載速度很慢, 可以換國內源
$ wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
$ yum -y install python36 python36-devel
準備Python的虛擬環境
$ cd /opt
$ python3.6 -m venv py3
$ source /opt/py3/bin/activate
看到下面的提示符代表成功, 以後運行 Jumpserver 都要先運行以上 source 命令, 以下所有命令均在該虛擬環境中運行
(py3) [root@localhost py3]


三、安裝jumpserver

網上安裝配置jumpserver的比較多,但本文以官網爲參考依據,但官網部署採用方式,對於github的訪問存在一些問題,慢速極慢。因此先解決github滿的問題,解決方案比較多,但比較靠譜的推薦鏡像中轉,本文推薦碼雲中轉。
官網安裝文檔地址:https://jumpserver.readthedocs.io/zh/master/setup_by_localcloud.html,文章中使用的jumpserver的git地址爲https://github.com/jumpserver/jumpserver.git ,以此爲例子,解決git clone慢的問題
1、碼雲中轉解決git clone慢的問題
註冊一個碼雲賬號:https://gitee.com/
下圖是jumpserver在github的地址,複製一下https地址
centos7.4安裝部署jumpserver(數據庫外置)配置全過程--無問題
在碼雲的工作臺,點擊新建倉庫
centos7.4安裝部署jumpserver(數據庫外置)配置全過程--無問題
導入已有倉庫,即jumpserver在github的地址
centos7.4安裝部署jumpserver(數據庫外置)配置全過程--無問題
後面在安裝jumpserver的時候將github地址修改爲國內鏡像地址,我中轉在碼雲的公開jumpserver地址:https://gitee.com/yunwen_1_hlzhang/jumpserver.git

2、安裝jumpserver
過程參考jumpserver安裝官方文檔,此處不做一一

(1)以下過程可以直接執行

&& 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

(2)、替換github的地址,安裝jumpserver、koko和guacamole組件,其中koko和guacamole採用docker安裝

  && cd /opt \
  && if [ ! -d "/opt/jumpserver" ]; then git clone --depth=1 https://gitee.com/yunwen_1_hlzhang/jumpserver.git; fi \
  && if [ ! -f "/opt/luna.tar.gz" ]; then wget https://demo.jumpserver.org/download/luna/1.5.6/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 wheel -i https://mirrors.aliyun.com/pypi/simple/ \
  && 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/ \
  && mkdir /etc/docker \
  && wget -O /etc/docker/daemon.json http://demo.jumpserver.org/download/docker/daemon.json \
  && systemctl restart docker \
  && docker pull wojiushixiaobai/jms_koko:1.5.6 \
  && docker pull wojiushixiaobai/jms_guacamole:1.5.6 \
  && 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

在pip安裝MarkupSafe時會報如下錯誤:
centos7.4安裝部署jumpserver(數據庫外置)配置全過程--無問題
由於python3中的setuptools已經升級到46以上,因此需要將官網中pip install --upgrade pip setuptools修改爲pip install --upgrade pip setuptools==45.2.0即可,本文已經做了調整,這個也是官網安裝過程中的bug
以上腳本也會存在相關插件版本的問題,如下圖:
centos7.4安裝部署jumpserver(數據庫外置)配置全過程--無問題
可以單獨使用pip install pyasn1-modules==版本號
centos7.4安裝部署jumpserver(數據庫外置)配置全過程--無問題
(3)、處理安裝後的相關配置,以下采用jumpserver官方配置,但直接執行後對於其細節不是很清楚,因此本文對於配置採用手動方式,如下爲jumpserver官網配置、手工配置參考參考文檔:http://www.51niux.com/?id=234或者https://segmentfault.com/a/1190000015086911 ,這兩篇博客是筆者參考的比較多的,經過多次實戰挑出來的。

 && 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 'state UP' -A2 | 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

(4)、設置相關開機啓動項

 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

(5)、啓動相關服務

A.啓動nginx:nginx
B.啓動jumpserver:

  #  ./jms start all 
  # ./jms start all -d    -d參數爲後臺運行jumpserver

3、登錄jumpserver
經過以上步驟,輸入IP地址,即可進入jumpserver的web登錄頁面,默認賬號密碼:admin/admin
centos7.4安裝部署jumpserver(數據庫外置)配置全過程--無問題
登錄之後可以看到如下後臺
centos7.4安裝部署jumpserver(數據庫外置)配置全過程--無問題
jumpserver的後臺管理服務基本OK,但會遇到幾個問題:
(1)、web終端進入爲空,如下圖,即使添加了主機以及相關配置OK了,在web終端中並不顯示,注意:web終端的顯示需要根據權限管理中的資產授權中進行配置。也就是及時資產配置等都沒有問題,仍然在web終端中爲空不顯示的原因
centos7.4安裝部署jumpserver(數據庫外置)配置全過程--無問題
(2)、文件管理502
centos7.4安裝部署jumpserver(數據庫外置)配置全過程--無問題
koko服務可能沒有起來,需要確保一下服務正常
docker啓動:systemctl start docker
docker加入開機啓動項裏面:systemctl enable docker
koko啓動且設置開機隨docker啓動,加入參數:--restart=always
-p參數:端口映射
CORE_HOST爲jumpserver的啓動ip和端口
BOOTSTRAP_TOKEN參考/op/jumpserver/config.yml

docker run --name jms_koko -d -p 2222:2222 -p 5000:5000 -e CORE_HOST=http://172.16.29.80:8080  -e BOOTSTRAP_TOKEN=BLkJcpJooqdwXixq  --restart=always  wojiushixiaobai/jms_koko:1.5.6

(3)、支持Windows的插件:guacamole
啓動guacamole容器服務並設置開機啓動:

docker run --name jms_guacamole -d -p 127.0.0.1:8081:8080 -e JUMPSERVER_SERVER=http://172.16.29.80:8080 -e BOOTSTRAP_TOKEN=BLkJcpJooqdwXixq --restart=always wojiushixiaobai/jms_guacamole:1.5.6

通過docker ps -a可以查看兩個服務均已啓動
centos7.4安裝部署jumpserver(數據庫外置)配置全過程--無問題
關於jumpserver的部署已講述結束,關於jumpserver的使用配置,將在下節中進行實戰描述

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