天天看點

Jumpserver堡壘機一.部署jumpserver堡壘機

Jumpserver簡介

Jumpserver堡壘機一.部署jumpserver堡壘機

堡壘機概述:

為網際網路企業提供了認證,授權,審計,自動化運維等功能。

堡壘機,在一個特定的網絡環境下,為了保障網絡和資料不受來自外部和内部使用者的入侵和破壞,可以實時收集和監控網絡環境。一但出現違規的操作導緻的事故,可以快速定位到原因和責任人

跳闆機概述:

跳闆機就是一台伺服器,開發或運維人員在維護過程中首先要統一登入到這台伺服器,然後再登入到目标裝置進行維護和操作。

跳闆機缺點:沒有實作對運維人員操作行為的控制和審計,使用跳闆機的過程中還是會出現誤操作、違規操作導緻的事故,一旦出現操作事故很難快速定位到原因和責任人

堡壘機比跳闆機多了幾個功能:

1、給其它伺服器推送sudo使用者,并為其設定權限

2、多了一個使用者行為監控的功能(有錄像)

堡壘機比跳闆機多了實時收集、監控網絡環境、集中報警等功能。

Jumpserver概述:

Jumpserver 是全球首款完全開源的堡壘機,使用 GNU GPL v2.0 開源協定,是符合 4A 的專業運維審計系統。

Jumpserver 使用 Python / Django 進行開發,遵循 Web 2.0 規範,配備了業界領先的 Web Terminal 解決方案,互動界面美觀、使用者體驗好。

Jumpserver 采納分布式架構,支援多機房跨區域部署,中心節點提供 API,各機房部署登入節點,可橫向擴充、無并發限制。

為網際網路企業提供了認證,授權,審計,自動化運維等功能。

Jumpserver實作的功能:

Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機

1、使用者組/使用者 :添加組友善進行授權,使用者是授權和登陸的主體.

2、資産組/資産/IDC : 主機資訊簡潔完整,使用者自定義備注登入,支援自動擷取首頁硬體資訊.

3、Sudo/系統使用者/授權規則 :支援sudo 授權,系統使用者用于登陸用戶端,授權是将使用者、資産和系統使用者關聯起來.

4、線上/登入曆史/指令記錄/上傳下載下傳 : 線上實時監控使用者操作,統計和錄像回放使用者操作内容,阻斷控制,詳細記錄上傳下載下傳.

5、上傳/下載下傳 : 支援檔案上傳下載下傳,實作 rzsz方式.

6、預設設定 : 預設管理使用者,設定包括使用者密碼密鑰,預設資訊為了友善添加資産而設計.

jumpserver元件

1、Jumpserver 為管理背景,管理者可以通過Web頁面進行資産管理、使用者管理、資産授權等操作

2、Coco 為 SSH Server 和 Web Terminal Server(網頁linux用戶端)。使用者可以通過使用自己的賬戶登入 SSH 或者 Web Terminal 直接通路被授權的資産。不需要知道伺服器的賬戶密碼,新版本的coco被koko取代。

3、Luna 為 Web Terminal Server 前端頁面,使用者使用 Web Terminal 方式登入所需要的元件

4、Guacamole 為 Windows 元件,使用者可以通過 Web Terminal 來連接配接 Windows 資産 (暫時隻能通過 Web Terminal 來通路)

Jumpserver 環境要求

硬體配置 2個cpu核心 、4G記憶體 、50硬碟

環境配置 python3.6版本以上 、mysql server5.6版本以上 、mariadb server 5.5.56版本以上

一.部署jumpserver堡壘機

[[email protected]-2 ~]# hostnamectl set-hostname jumpserver    更改主機名
[[email protected]-2 ~]# logout  
           

1.安裝python3.6的版本

安裝python3.6的版本,目前系統是centos7自帶版本的是2.7.5的版本
軟體下載下傳位址:
https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz
           

2.上傳所有安裝包

Jumpserver-packs包裡包含了所有需要的rpm包。

網盤位址:所有的包

連結:https://pan.baidu.com/s/1Ik_vh04KPmTxftPKThym_A

提取碼:pjtr

3.解壓上傳的包

[[email protected] ~]# tar xf pip-packs.tar.gz 
[[email protected] ~]# tar xf Python-3.6.8.tgz -C /usr/local/src/
           
[[email protected] ~]# vim /etc/yum.repos.d/jumpserver.repo   配置本地jumpserveryum源
[jumpserver]
name=CentOS7
baseurl=file:///root/jumpserver-packs
enable=1
gpgcheck=0
           

4.安裝jumpserver依賴

[[email protected] ~]# tar xf jumpserver-packs.tar.gz      解壓
[[email protected] ~]# yum install -y gcc zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
           

5.安裝python3.6.8

[[email protected] ~]# cd /usr/local/src/Python-3.6.8/
[[email protected] Python-3.6.8]#  ./configure --prefix=/usr/local/python   //預編譯
[[email protected] Python-3.6.8]# make -j 2     調用兩個核心加快編譯
[[email protected] Python-3.6.8]# make install
[[email protected] ~]# cd /usr/local/python/bin/
           
[[email protected] bin]# ls
           
Jumpserver堡壘機一.部署jumpserver堡壘機

優化環境變量,給python做軟連接配接

[[email protected] bin]# ln -s /usr/local/python/bin/* /usr/local/bin/    
[[email protected] ~]# python3 -V    #檢視版本
 Python 3.6.8
[[email protected] ~]# pip3 -V    #檢視版本
pip 18.1 from /usr/local/python/lib/python3.6/site-packages/pip (python 3.6)
主要用于安裝python一些子產品

           

6.配置python環境

因為 CentOS 6/7 自帶的是 Python2,而Yum等工具依賴原來的 Python,為了不擾亂原來的環境我們來使用 Python虛拟環境
[[email protected] ~]# python3.6 -m venv /opt/py3   建立py3虛拟環境
[[email protected] ~]# source /opt/py3/bin/activate    載入py3虛拟環境
           

看到下面的提示符代表成功,以後運作 Jumpserver 都要先運作以上 source 指令,以下所有指令均在該虛拟環境中運作

(py3) [[email protected] ~]#

設定為開機自啟,打開另一個終端會自動進入python環境

(py3) [[email protected] ~]# echo "source /opt/py3/bin/activate" >> /root/.bashrc
           

7.安裝jumpserver

(py3) [[email protected] ~]# yum -y install unzip    安裝解壓工具
(py3) [[email protected] ~]# unzip jumpserver-master.zip   解壓
(py3) [[email protected] ~]# mv jumpserver-master/ /opt/jumpserver   mv到opt下
           

安裝rpm依賴

安裝rpm_requirements.txt檔案中記錄的依賴

安裝jumpserver運作代碼依賴

使用pip安裝,我們剛才上傳了pip并解壓了所有直接使用

(py3) [[email protected] requirements]# pip install --no-index --find-links=/root/pip-packs/ pyasn1 six cffi pytest-runner   ###--on-index表示不聯網裝,但是後面得指定從哪裝這些是依賴       安裝依賴
           
(py3) [[email protected] requirements]# pip install --no-index --find-links=/root/pip-packs/ -r requirements.txt
           

安裝代碼運作所需的依賴

檢視是否安裝成功

(py3) [[email protected] ~]# cd pip-packs/
(py3) [[email protected] pip-packs]# ls
           

8.安裝redis

Jumpserver使用Redis做緩存,加快了用戶端通路速度

Jumpserver使用Redis做cache和分布式任務隊列,如果有搭建好的redis叢集,可以不用搭建。也可以使用二進制包安裝redis。

(py3) [[email protected] ~]# yum -y install redis   安裝redis
py3) [[email protected] ~]# systemctl start redis    開啟redis服務
(py3) [[email protected] ~]# systemctl enable redis   把redis添加開機啟動項
           

9.安裝mysql

如果有mysql叢集,可以不同搭建,centos7預設使用mariadb資料庫,也可以源碼安裝mysql5.7

(py3) [[email protected] ~]# yum -y install mariadb mariadb-devel mariadb-server 安裝mariadb
(py3) [[email protected] ~]# systemctl start mariadb   開啟服務
(py3) [[email protected] ~]# systemctl enable mariadb   添加開機啟動項
           

10.建立jumpserver并授權

(py3) [[email protected] ~]# mysql
MariaDB [(none)]> create database jumpserver default charset 'utf8';   建立jumpserver資料庫
MariaDB [(none)]> grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by 'jumpserver';
           

允許jumpserver使用者從本地登入密碼是jumpserver,對此庫所有的表授予任何權限

MariaDB [(none)]> flush privileges;   重新整理權限
           

11.生成密鑰

生成49位的密鑰,Linux1也可以用以下方式來生成密鑰。(每次生成的密鑰都不一樣)
py3) [[email protected] ~]#  cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 49;echo  
MbgU67f1Td0HnNYusX5AgDZKZ3AvOpeDzL8QfMsYTgJSaGrp6
           
(py3) [[email protected] ~]# cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16;echo
O6HeyM4BKj7CxDdG
           

生成的這兩個密鑰,下面會用到

12.修改jumpserver配置檔案

(py3) [[email protected] ~]#  cd /opt/jumpserver/
(py3) [[email protected] jumpserver]# cp config_example.yml config.yml
py3) [[email protected] jumpserver]#  vim config.yml
           
Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機

13.生成資料庫表結構和初始化資料

py3) [[email protected] jumpserver]# cd /opt/jumpserver/utils/
(py3) [[email protected] utils]# sh make_migrations.sh
           

14.運作jumpserver

(py3) [[email protected] utils]# cd /opt/jumpserver/
py3) [[email protected] jumpserver]# ./jms start all
 #可以-d參數在背景運作 ./jms start all -d, 確定已經載入 py3 虛拟環境。盡量用以下方式啟動
           

設定service腳本

(py3) [[email protected] ~]# vim /usr/lib/systemd/system/jms.service
           

添加以下内容

[Unit] Description=jms After=network.target mariadb.service

redis.service docker.service Wants=mariadb.service redis.service

docker.service

[Service] Type=forking

Environment=“PATH=/opt/py3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin”

ExecStart=/opt/jumpserver/jms start all -d

ExecRestart=/opt/jumpserver/jms restart all -d

ExecStop=/opt/jumpserver/jms stop

[Install] WantedBy=multi-user.target

(py3) [[email protected] ~]# systemctl daemon-reload
(py3) [[email protected] ~]#  systemctl restart jms   啟動
           
Jumpserver堡壘機一.部署jumpserver堡壘機
(py3) [[email protected] ~]# systemctl enable jms  設定開機自啟
           

11.登入通路jumpserver

登陸jumpserver,預設賬号:admin 密碼:admin

http://192.168.1.20:8080/

Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機

已完成部署

二、安裝Web Terminal- koko元件

這裡隻是部署了Jumpserver, 沒有 Web Terminal,是以通路 Web Terminal(web linux終端)會報錯。

Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機

Koko的下載下傳網址

https://github.com/jumpserver/koko/releases/download/1.5.2/koko-master-9ab4ea6-linux-amd64.tar.gz

py3) [[email protected] ~]# tar xf koko-master-6d4e69b-linux-amd64.tar.gz -C /opt/ 解壓koko
(py3) [[email protected] ~]# chown -R root:root /opt/kokodir/   更改屬組屬主
           

修改koko配置檔案

(py3) [[email protected] ~]#  cd /opt/kokodir/
(py3) [[email protected] kokodir]# cp config_example.yml config.yml  準備koko配置檔案
           

(py3) [[email protected] kokodir]# vi config.yml #密鑰要跟jumpserver的密鑰一緻

Jumpserver堡壘機一.部署jumpserver堡壘機

注釋去掉

Jumpserver堡壘機一.部署jumpserver堡壘機
(py3) [[email protected] kokodir]# ./koko &  把koko放背景運作
           
Jumpserver堡壘機一.部署jumpserver堡壘機

預設監聽兩個端口号 5000和2222

(py3) [[email protected] kokodir]# echo " cd /opt/kokodir && ./koko & " >> /etc/rc.local      開機啟動
 py3) [[email protected] kokodir]# chmod +x /etc/rc.local
           

在web背景檢視終端

可以看見有jumpserver終端說明,安裝成功

Jumpserver堡壘機一.部署jumpserver堡壘機

使用ssh測試

Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機

有了Web Terminal以後,我們可以遠端堡壘機,然後通過堡壘機進行登入管理伺服器。

jumpserver元件

Jumpserver 為管理背景,管理者可以通過Web頁面進行資産管理、使用者管理、資産授權等操作

Coco 為 SSH Server 和 Web Terminal Server(網頁linux用戶端)。使用者可以通過使用自己的賬戶登入 SSH 或者 Web Terminal 直接通路被授權的資産。不需要知道伺服器的賬戶密碼,新版本的coco被koko取代。

Luna 為 Web Terminal Server 前端頁面,使用者使用 Web Terminal 方式登入所需要的元件

Guacamole 為 Windows 元件,使用者可以通過 Web Terminal 來連接配接 Windows 資産 (暫時隻能通過 Web Terminal 來通路)

部署luna 元件

軟體下載下傳位址:

https://github.com/jumpserver/luna/releases/download/1.5.2/luna.tar.gz

(py3) [[email protected] ~]#  tar -zxvf luna.tar.gz -C /opt/   解壓lua
(py3) [[email protected] ~]# chown -R root:root /opt/luna/   設定權限
           

設定nginx 整合各元件

這裡直接使用yum安裝,也可以使用源碼包安裝.協調各個元件

(py3) [[email protected] ~]# yum install -y nginx    
(py3) [[email protected] ~]#  vim /etc/nginx/nginx.conf   修改配置檔案
           

Nginx主要提供反向代理功能,這裡要修改主配置檔案裡的預設server端口

Jumpserver堡壘機一.部署jumpserver堡壘機

所有的jumpserver的服務都使用nginx來進行反向代理,開啟nginx緩存

(py3) [[email protected] ~]#  vim /etc/nginx/conf.d/jumpserver.conf  
 建立jumpserver配置檔案
  server {
    listen 80;

    client_max_body_size 100m;  # 錄像及檔案上傳大小限制

    location /luna/ {
        try_files $uri / /index.html; #如果通路不到luna就會通路到index.html
        alias /opt/luna/;  # luna 路徑, 如果修改安裝目錄, 此處需要修改
    }

    location /media/ {
        add_header Content-Encoding gzip;
        root /opt/jumpserver/data/;  # 錄像位置, 如果修改安裝目錄, 此處需要修改
    }

    location /static/ {
        root /opt/jumpserver/data/;  # 靜态資源, 如果修改安裝目錄, 此處需要修改
    }

    location /socket.io/ {      #将所有請求交給koko的5000端口
        proxy_pass       http://localhost:5000/socket.io/;
        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 /coco/ {       #通路coco反向代理給5000端口
        proxy_pass       http://localhost:5000/coco/;
        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/ {      #以下參數是連接配接windos系統的參數
        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 / { #nginx通路,直接通路到jumpserver。通路時不需後面加8080
        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;
    }
}
           
(py3) [[email protected] ~]# nginx -t    檢查nginx文法
           

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

(py3) [[email protected] ~]# systemctl start nginx   啟動nginx
(py3) [[email protected] ~]#  systemctl enable nginx   添加開機啟動項
(py3) [[email protected] ~]# netstat -anput|grep 808
           

登入jumpserver

使用nginx做反向代理以後,就可以直接使用80端口來通路jumpserver

http://192.168.1.20/測試是否可以通路lua頁面

Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機

jumpserver使用

配置jumpserver基本設定.

修改目前站點的URL為本機IP或者jumpserver的域名,不然建立使用者發送過去的郵件修改不了密碼。

Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機

1、設定jumpserver郵箱

設定jumpserver發件郵箱,用來給使用者發送通知郵件,設定完了以後測試一下郵箱聯通。

首先要生成授權碼,然後設定郵箱

Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機

這裡生成的授權碼,後面會用到******************

Jumpserver堡壘機一.部署jumpserver堡壘機

最後點送出

Jumpserver堡壘機一.部署jumpserver堡壘機

這時候會收到一條郵件

Jumpserver堡壘機一.部署jumpserver堡壘機

建立使用者

這裡建立的使用者是登陸jumpserver的使用者,這個使用者可以登陸jumpserver,然後通過jumpserver去連接配接被管理的伺服器,最後登陸到被管理的伺服器進行指令操作。當然,這裡建立的使用者也可以提權來管理jumpserver的背景。

Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機

郵件發送到了使用者的郵箱,提示設定密碼

Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機

現在可以是使用我們剛建立好的角色登入jumpserver

Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機

建立使用者組

Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機

資産管理

Jumpserver所能管理的主機,叫做資産

開啟兩台主機,添加資産。

主機名是centos2和centos3

Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機

建立資産

資産管理使用者已經建立好了,現在建立資産

Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機

建立指令過濾器

系統使用者可以綁定一些指令過濾器,一個過濾器可以定義一些規則

當使用者使用這個系統使用者登入資産,然後執行一個指令 這個指令需要被綁定過濾器的所有規則比對,高優先級先被比對,

當一個規則比對到了,如果規則的動作是允許,這個指令會被放行, 如果規則的動作是禁止,指令将會被禁止執行, 否則就比對下一個規則,如果最後沒有比對到規則,則允許執行

Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機

資産管理管理這1.30,這樣設定就會當管理1.30的時候,不會使用rm -rf 指令

Jumpserver堡壘機一.部署jumpserver堡壘機

建立系統使用者

在資産上建立使用者

系統使用者是 Jumpserver 跳轉登入被管理伺服器時使用的使用者,而不是使用某個使用者的使用者名跳轉登入伺服器(

ssh [email protected]

); 簡單來說是使用者使用自己的使用者名登入 Jumpserver,Jumpserver 使用系統使用者登入資産。

系統使用者建立時,如果選擇了自動推送,Jumpserver 會使用 Ansible 自動推送系統使用者到資産中,如果資産(交換機)不支援 Ansible,請手動填寫賬号密碼。

注意:這裡添加完系統使用者之後需要再給這個使用者設定一個密碼

Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機

資産授權

Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機

#在1.30上檢視,是否有admin使用者

[[email protected] ~]# grep "admin" /etc/passwd
admin:x:1000:1000::/home/admin:/bin/bash
           

測試web終端

這裡使用谷歌類的浏覽器,有些浏覽器不支援luna。使用運維總監登入

使用web終端登陸資産

Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機

如果這裡連接配接不上,重新啟動koko

Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機

使用會話登入資産

打開之前建立的會話

Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機

退出資産輸入exit,在退出的話輸入q

錄像.

登入admin使用者檢視錄像

Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機
Jumpserver堡壘機一.部署jumpserver堡壘機

視訊存放的路徑

Jumpserver堡壘機一.部署jumpserver堡壘機

繼續閱讀