JumpServer 堡壘機--CentOS 8 虛擬機安裝部署

JumpServer簡介

Jumpserver是一款由python編寫, Django開發(fā)的開源跳板機/堡壘機系統(tǒng), 助力互聯網企業(yè)高效 用戶、資產、權限、審計 管理。jumpserver實現了跳板機應有的功能,基于ssh協(xié)議來管理,客戶端無需安裝agent。

Jumpserver是全球首款完全開源的堡壘機,使用 GNU GPL v2.0 開源協(xié)議,是符合 4A 的專業(yè)運維審計系統(tǒng)。

Jumpserver 使用 Python /Django 進行開發(fā),遵循 Web 2.0 規(guī)范,配備了業(yè)界領先的 Web Terminal 解決方案,交互界面美觀、用戶體驗好。

Jumpserver 采納分布式架構,支持多機房跨區(qū)域部署,中心節(jié)點提供 API,各機房部署登錄節(jié)點,可橫向擴展、無并發(fā)訪問限制。

JumpServer特點

(1)完全開源,GPL授權

(2)Python編寫,容易再次開發(fā)

(3)實現了跳板機基本功能,身份認證、訪問控制、授權、審計 、批量操作等。

(4)集成了Ansible,批量命令等

(5)支持WebTerminal

(6)Bootstrap編寫,界面美觀

(7)自動收集硬件信息

(8)錄像回放

(9)命令搜索

(10)實時監(jiān)控

(11)批量上傳下載

JumpServer環(huán)境說明

安裝環(huán)境

· 硬件配置: 2個CPU核心, 4G 內存, 50G 硬盤(最低)

· 操作系統(tǒng): Linux 發(fā)行版 x86_64

· Python環(huán)境:Python = 3.6.x

· 數據庫:Mysql Server ≥ 5.6 \ Mariadb Server ≥ 5.5.56

· 緩存數據庫:Redis

· 代理:Ningx

JumpServer 插件

Jumpserver 管理后臺,是核心組件(Core), 使用 Django Class Based View 風格開發(fā),支持 Restful API。

Koko

koko 為 SSH Server 和 Web Terminal Server 。用戶可以使用自己的賬戶通過 SSH 或者 Web Terminal 訪問 SSH 協(xié)議和 Telnet 協(xié)議資產。

Luna

luna 為 Web Terminal Server 前端頁面,用戶使用 Web Terminal 方式登錄時所需要的插件。

Guacamole

Guacamole是一個開源項目,為遠程桌面提供解決方案。,Jumpserver 使用其組件實現 RDP和VNC 功能,Jumpserver 并沒有修改其代碼而是添加了額外的插件,支持 Jumpserver 調用。

JumpServer 組件及其監(jiān)聽端口

Jumpserver 8080/tcp

Redis 6379/tcp

MySQL/Mariadb 3306/tcp

Nginx 80/tcpKoko SSH 2222/tcp

Web Terminal 5000/tcp

Guacamole 8081/tcp

JumpServer部署安裝

系統(tǒng)配置

系統(tǒng)版本

[root@JumpServer ~]# cat /etc/redhat-release CentOS Linux release 8.2 (Core)

系統(tǒng)時間

date -s "2020-06-16 10:57:00"hwclock -wclock -w

selinux=

setenforce 0sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config

firewall

# nginx端口

firewall-cmd --zone=public --add-port=80/tcp --permanent

# 用戶SSH登錄端口koko

firewall-cmd --zone=public --add-port=2222/tcp --permanent

# 設置防火墻規(guī)則,允許容器ip訪問宿主8080端口

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="172.17.0.0/16" port protocol="tcp" port="8080" accept"

# 重新載入規(guī)則

firewall-cmd --reload

firewall-cmd --list-all

Python3和Python虛擬環(huán)境

安裝依賴軟件包

yum -y install wget gcc epel-release git

安裝Python3.6

dnf install python36 python36-devel

建立Python虛擬環(huán)境

#創(chuàng)建虛擬環(huán)境,環(huán)境命令自定義為py3

cd /opt

python3.6 -m venv py3

#運行虛擬化環(huán)境# 看到下面的提示符代表成功, 以后運行 Jumpserver 都要先運行以上 source 命令, 以下所有命?令均在該虛擬環(huán)境中運行

source /opt/py3/bin/activate

# 出現以上字符代表運行成功

(py3) [root@jumpserver py3]

Redis

Jumpserver使用Redis做cache和celery broke

dnf -y install redis

systemctl start redis && systemctl enable redis

systemctl status redis

Mariadb數據庫

安裝Mariadb數據庫

dnf install mariadb-server mariadb -y

啟動并開機啟動

systemctl start mariadb && systemctl enable mariadb

初始化數據庫

mysql_secure_installation

生成隨機數據庫密碼

[root@JumpServer ~]# DB_PASSWORD=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 24`

[root@JumpServer ~]# echo -e "\033[31m 你的數據庫密碼是 $DB_PASSWORD \033[0m" 你的數據庫密碼是 dhfbGWxvTjZIPDzard39xy7L

數據庫配置

mysql -uroot -p

# 創(chuàng)建jumpserver數據庫

create database jumpserver default charset 'utf8';

# 授權jumpserver用戶

grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by 'dhfbGWxvTjZIPDzard39xy7L';

grant all on jumpserver.* to 'jumpserver'@'localhost' identified by 'dhfbGWxvTjZIPDzard39xy7L';

# 刷新策略

flush privileges;

Jumpserver 安裝

獲取 jumpserver 代碼

cd /opt && \

git clone --depth=1 https://github.com/jumpserver/jumpserver.git

網絡有問題可以wget下載

wget http://demo.jumpserver.org/download/jumpserver/latest/jumpserver.tar.gztar xf jumpserver.tar.gz

軟件環(huán)境依賴

dnf -y install gcc krb5-devel libtiff-devel libjpeg-devel libzip-devel freetype-devel libwebp-devel tcl-devel tk-devel sshpass openldap-devel mariadb-devel libffi-devel openssh-clients telnet openldap-clients

pip 依賴環(huán)境(py3模式下執(zhí)行)

cd /opt/jumpserver/requirements/

pip install wheel && \

pip install --upgrade

pip setuptools && \

pip install -r requirements.txt

修改jumpserver配置文件

cd /opt/jumpserver

cp config_example.yml config.yml

SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`

# 生成隨機SECRET_KEY

echo "SECRET_KEY=$SECRET_KEY" >> ~/.bashrc

BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16`?

# 生成隨機BOOTSTRAP_TOKEN

echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc

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

echo -e "\033[31m 你的SECRET_KEY是 $SECRET_KEY \033[0m"

echo -e "\033[31m 你的BOOTSTRAP_TOKEN是 $BOOTSTRAP_TOKEN \033[0m"

啟動 jumpserver

確保已經載入 py3 虛擬環(huán)境? source /opt/py3/bin/activate

cd /opt/jumpserver

./jms start all -d

后臺運行可以-d 參數

Docker安裝

# 安裝相關依賴

dnf install -y yum-utils device-mapper-persistent-data lvm2

# 配置Docker源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 重新生成緩存

dnf makecache

# 安裝Docker-ce

rpm --import https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

dnf -y install docker-ce

# 下載相關文件

mkdir -p /etc/docker

wget -O /etc/docker/daemon.json http://demo.jumpserver.org/download/docker/daemon.json

# 啟動docker并設置開機自啟

systemctl restart docker && systemctl enable docker

Docker 部署 koko 組件

docker run --name jms_koko -d \

? -p 2222:2222 \

? -p 127.0.0.1:5000:5000 \

? -e CORE_HOST=http://本機IP:8080 \

? -e BOOTSTRAP_TOKEN=你自己開始生成的TOKEN \

? -e LOG_LEVEL=ERROR \

? --restart=always \

? jumpserver/jms_koko:1.5.9

Docker 部署 guacamole 組件

docker run --name jms_guacamole -d \

? -p 127.0.0.1:8081:8080 \

? -e JUMPSERVER_SERVER=http://本機IP:8080 \

? -e BOOTSTRAP_TOKEN=你自己的token \

? -e GUACAMOLE_LOG_LEVEL=ERROR \

? jumpserver/jms_guacamole:1.5.9

檢查容器運行狀態(tài)

docker imagesdocker ps -a

查看docker IP地址

docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名稱

安裝Nginx

編輯 nginx repo文件

vi /etc/yum.repos.d/nginx.repo

[nginx-stable]

name=nginx stable repo

baseurl=http://nginx.org/packages/centos/$releasever/$basearch/

gpgcheck=1

enabled=1

gpgkey=https://nginx.org/keys/nginx_signing.key

module_hotfixes=true

安裝Nginx

dnf -y install nginx

Nginx? jumpserver 配置文件

# 刪除默認default.conf文件

rm -rf /etc/nginx/conf.d/default.conf

# 編輯 jumpserver 配置文件

vi /etc/nginx/conf.d/jumpserver.conf

[root@JumpServer conf.d]# cat jumpserver.conf

server {

? ? listen 80;

? ? client_max_body_size 100m;? # 錄像及文件上傳大小限制

? ? 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/;? # 靜態(tài)資源, 如果修改安裝目錄, 此處需要修改

? ? }

? ? 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 / {

? ? ? ? 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;

? ? }

}

Web Terminal(前端Luna)

下載安裝包

cd /opt

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

解壓并授權

tar -xf luna.tar.gz

chown -R nginx:nginx luna

檢查Nginx配置文件并啟動

nginx -t

systemctl? start nginx && systemctl? enable nginx

systemctl? status nginx

訪問 JumpServer Web

服務全部啟動后, 訪問 jumpserver 服務器 nginx 代理的 80 端口, 不要通過8080端口訪問

默認賬號: admin 密碼: admin 如果頁面出不來關閉nginx.conf中的80-server配置

ssh -p 2222 admin@192.168.180.222


CentOS 8.0 安裝docker 報錯:Problem: package docker-ce-3:19.03.4-3.el7.x86_64 requires containerd.io >= 1.2.2-3

package docker-ce-3:19.03.2-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed

- cannot install the best candidate for the job

- package containerd.io-1.2.2-3.3.el7.x86_64 is excluded

- package containerd.io-1.2.2-3.el7.x86_64 is excluded

- package containerd.io-1.2.4-3.1.el7.x86_64 is excluded

- package containerd.io-1.2.5-3.1.el7.x86_64 is excluded

- package containerd.io-1.2.6-3.3.el7.x86_64 is excluded

(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)

更新 containerd.io 的版本,然后重新安裝最新版本的docker 即可成功安裝

wget https://download.docker.com/linux/centos/7/x86_64/edge/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm

dnf install -y? containerd.io-1.2.6-3.3.el7.x86_64.rpm

檢查是否安裝成功

docker -v

docker 操作命令

# 搜索鏡像

docker search *image_name*

# 下載鏡像

docker pull *image_name*

# 查看鏡像

docker images

# 刪除鏡像

docker rmi *image_name*

docker image rm *image_name*

# 導出docker鏡像

docker save *image_name* > /save/image/path/name.tar.gz

# 導入docker鏡像

docker load < /save/image/path/name.tar.gz

# 查看容器

docker ps

docker ps -a

docker ps -aq

# 容器端口映射列表

docker port jms_koko

# 運行|重啟|停止容器

docker? start|restart|stop? <容器的 CONTAINER ID 或者 容器 NAMES >

# 查看容器 log

docker logs -f <容器的 CONTAINER ID 或者 容器 NAMES >

# 刪除容器

docker rm *container_id*

# 顯示容器對資源的使用情況(內存、CPU、磁盤等)

docker stats jms_koko

# 顯示docker客戶端和服務端版本信息

docker version

# 顯示容器中正在運行的進程(相當于容器內執(zhí)行 ps -ef 命令)

docker top jms_koko

# 顯示 Docker 詳細的系統(tǒng)信息

docker info

# 殺死所有正在運行的容器

docker kill $(docker ps -a -q)

# 刪除所有已經停止的容器

docker rm $(docker ps -a -q)

# 刪除所有未打 dangling 標簽的鏡像

docker rmi $(docker images -q -f dangling=true)

# 刪除所有鏡像

docker rmi $(docker images -q)

# 強制刪除鏡像名稱中包含“doss-api”的鏡像

docker rmi --force $(docker images | grep doss-api | awk '{print $3}')

# 刪除所有未使用數據

docker system prune

# 只刪除未使用的volumes

docker volume prune

> > > JumpServer官方文檔:

https://docs.jumpserver.org/zh/master/install/step_by_step/

v2.0.0 新版本,使用 Vue + ElementUI 重構了前端頁面

https://github.com/jumpserver/jumpserver/releases

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
禁止轉載,如需轉載請通過簡信或評論聯系作者。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,283評論 6 530
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 97,947評論 3 413
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 175,094評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,485評論 1 308
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,268評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,817評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,906評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,039評論 0 285
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 48,551評論 1 331
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,502評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,662評論 1 366
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,188評論 5 356
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 43,907評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,304評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,563評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,255評論 3 389
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,637評論 2 370