JumpServer Bastion Host--CentOS 8のインストールと展開(4)

JumpServerの概要

Jumpserverは、pythonによって記述され、Djangoによって開発されたオープンソースのスプリングボード/要塞マシンシステムであり、インターネット企業がユーザー、資産、権限、および監査を効率的に管理するのに役立ちます。 Jumpserverは、スプリングボードマシンの機能を実装し、sshプロトコルに基づいて管理され、クライアントはエージェントをインストールする必要がありません。

Jumpserverは、世界初の完全にオープンソースの要塞マシンであり、GNU GPL v2.0オープンソースプロトコルを使用し、4A準拠のプロフェッショナルな運用および保守監査システムです。

Jumpserverは、開発にPython / Djangoを使用し、Web 2.0仕様に準拠し、業界をリードするWebターミナルソリューションを備えています。インタラクティブなインターフェイスは美しく、ユーザーエクスペリエンスは優れています。

Jumpserverは分散アーキテクチャを採用し、マルチマシンルームとクロスリージョン展開をサポートします。中央ノードはAPIを提供し、各マシンルームはログインノードを展開します。ログインノードは、同時アクセス制限なしで水平方向に拡張できます。

JumpServerの機能

(1 )完全にオープンソース、GPLライセンス

(2 )Pythonで記述されており、再開発が簡単です

(3 )ID認証、アクセス制御、承認、監査、バッチ操作など、スプリングボードの基本機能が実現されます。

(4 )統合されたAnsible、バッチコマンドなど。

(5 )WebTerminalをサポートする

(6 )Bootstrap、美しいインターフェースによって準備

(7 )ハードウェア情報を自動的に収集する

(8 ) プレイバック

(9 )コマンド検索

(10 )リアルタイムモニタリング

(11 )バッチアップロードとダウンロード

JumpServer環境の説明

インストール環境

・ハードウェア構成:2つのCPUコア、4Gメモリ、50Gハードディスク(最小)

オペレーティングシステム:Linuxディストリビューションx86_64

・Python環境:Python = 3.6.x

・データベース:[Mysql](https://cloud.tencent.com/product/cdb?from=10680)サーバー≥5.6\ Mariadbサーバー≥5.5.56

・キャッシュデータベース:[Redis](https://cloud.tencent.com/product/crs?from=10680)

・エージェント:Ningx

JumpServerプラグイン

Jumpserver管理バックエンドはコアコンポーネント(コア)であり、Djangoクラスベースビューのスタイルで開発され、RestfulAPIをサポートします。

Koko

ココはSSHサーバーとWebターミナルサーバーです。ユーザーは自分のアカウントを使用して、SSHまたはWebターミナルを介してSSHプロトコルおよびTelnetプロトコル資産にアクセスできます。

Luna

Lunaは、ユーザーがWebターミナルを使用してログインするために必要なプラグインであるWebターミナルサーバーのフロントエンドページです。

Guacamole

Guacamoleは、リモートデスクトップ向けのソリューションを提供するオープンソースプロジェクトです。 、Jumpserverは、そのコンポーネントを使用してRDPおよびVNC機能を実装します。Jumpserverはコードを変更しませんが、Jumpserver呼び出しをサポートするためのプラグインを追加します。

JumpServerコンポーネントとそのリスニングポート

Jumpserver  8080/tcp
Redis  6379/tcp
MySQL/Mariadb  3306/tcp
Nginx  80/tcp
Koko  SSH 2222/tcp Web Terminal 5000/tcp
Guacamole  8081/tcp

JumpServerデプロイメントのインストール

システム構成

システムバージョン

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

システム時刻

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

ソフトウェアバージョン

selinux

setenforce 0
sed -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
# コンテナIPがホストのポート8080にアクセスできるようにファイアウォールルールを設定します
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="172.17.0.0/16" port protocol="tcp" port="8080" accept"
# コンテナIPがホストのポート8080にアクセスできるようにファイアウォールルールを設定します
firewall-cmd --reload                                       
# ルールのリロード

Python3およびPython仮想環境

依存パッケージをインストールする

yum -y install wget gcc epel-release git

Python3.6をインストール

dnf install python36 python36-devel

Python仮想環境を構築する

# 仮想環境を作成します。environmentコマンドはpy3にカスタマイズされています
cd /opt
python3.6-m venv py3           
# 仮想化環境を実行する
# 以下のプロンプトが表示されることは成功を意味します,将来Jumpserverを実行するには、最初に上記のソースコマンドを実行する必要があります,次のすべてのコマンドは、この仮想環境で実行されます
source /opt/py3/bin/activate                           
# 上記の文字は正常な操作を示します(py3)[root@jumpserver py3]

Redis

JumpserverはキャッシュにRedisを使用し、セロリが壊れました

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

データベースを初期化します

ランダムなデータベースパスワードを生成する

[ 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
# ジャンプサーバーデータベースを作成する
create database jumpserver default charset 'utf8';
# ジャンプサーバーユーザーを承認する
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;

ジャンプサーバーのインストール

ジャンプサーバーコードを取得する

cd /opt && \
git clone --depth=1 https://github.com/jumpserver/jumpserver.git

ネットワークに問題があります。wgetでダウンロードできます。

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

ソフトウェア環境に依存

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は環境によって異なります**

cd /opt/jumpserver/requirements/
pip install wheel && \
pip install --upgrade pip setuptools && \
pip install -r requirements.txt

py3仮想環境がロードされていることを確認してください。途中でエラーが発生した場合は、通常、依存関係パッケージがインストールされていない可能性があります。

アリババ画像加速は中国で使用できます

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 requirements.txt -i https://mirrors.aliyun.com/pypi/simple/

ジャンプサーバー構成ファイルを変更する

cd /opt/jumpserver
cp config_example.yml config.yml
 
SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`
# ランダムなシークレットを生成する_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あなたの秘密_KEYは$SECRET_KEY \033[0m"
 
echo -e "\033[31mあなたのBOOTSTRAP_トークンは$BOOTSTRAP_TOKEN \033[0m"

ジャンプサーバーを起動します

**必ずpy3仮想環境ソース/ 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://<Jumpserver_url> \
 - e BOOTSTRAP_TOKEN=<Jumpserver_BOOTSTRAP_TOKEN> \
 - e LOG_LEVEL=ERROR \
 - - restart=always \
 jumpserver/jms_koko:<Tag><Jumpserver_url>ジャンプサーバーのURLアドレスです,<Jumpserver_BOOTSTRAP_TOKEN>ジャンプサーバーからの必要性/config.ymlに入る,一貫性を保証する,<Tag>バージョンです

例えば

docker run --name jms_koko -d \
 - p 2222:2222 \
 - p 127.0.0.1:5000:5000 \
 - e CORE_HOST=http://172.18.51.227:8080 \
 - e BOOTSTRAP_TOKEN=C1JVFTxHvje9fGOK \
 - 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://<Jumpserver_url> \
 - e BOOTSTRAP_TOKEN=<Jumpserver_BOOTSTRAP_TOKEN> \
 - e GUACAMOLE_LOG_LEVEL=ERROR \
 jumpserver/jms_guacamole:<Tag><Jumpserver_url>ジャンプサーバーのURLアドレスです,<Jumpserver_BOOTSTRAP_TOKEN>ジャンプサーバーからの必要性/config.ymlに入る,一貫性を保証する,<Tag>バージョンです

docker run --name jms_guacamole -d \
 - p 127.0.0.1:8081:8080 \
 - e JUMPSERVER_SERVER=http://172.18.51.227:8080 \
 - e BOOTSTRAP_TOKEN=C1JVFTxHvje9fGOK \
 - e GUACAMOLE_LOG_LEVEL=ERROR \
 jumpserver/jms_guacamole:1.5.9

コンテナの実行ステータスを確認してください

docker images
docker ps -a

ドッカーのIPアドレスを表示

docker inspect --format='{{.NetworkSettings.IPAddress}}'コンテナ名

Webターミナル(フロントエンド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リポジトリファイルを編集

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ジャンプサーバー構成ファイル

# デフォルトのデフォルトを削除します.confファイル
rm -rf /etc/nginx/conf.d/default.conf
# ジャンプサーバー構成ファイルを編集する
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/;  #ルナパス,インストールディレクトリを変更した場合,ここで変更する必要があります
    }

 location /media/{
  add_header Content-Encoding gzip;
  root /opt/jumpserver/data/;  #ビデオの場所,インストールディレクトリを変更した場合,ここで変更する必要があります
    }

 location /static/{
  root /opt/jumpserver/data/;  #静的リソース,インストールディレクトリを変更した場合,ここで変更する必要があります
    }

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

Nginx構成ファイルを確認して開始

nginx -t
systemctl   start nginx && systemctl   enable nginx
systemctl   status nginx

JumpServerWebにアクセス

** すべてのサービスが開始されたら、ジャンプサーバーサーバーのnginxプロキシのポート80にアクセスします。ポート8080にはアクセスしないでください。デフォルトのアカウント:adminパスワード:admin **

JumpServerホームページ

セッション管理-ココおよびグアカモーレコンポーネントの登録が正常かどうかを確認するための端末管理

SSHテスト接続

ssh   -p2222 [email protected]



**CentOS 8.0はdockerエラーをインストールします:問題:パッケージdocker-ce-3:19.03.4-3.el7.x86_64には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 search *image_name*
# ミラーをダウンロード
docker pull *image_name* 
# ビューミラー
docker images
# ミラーを削除する
docker rmi *image_name*
docker image rm *image_name*
# ドッカー画像のエクスポート
docker save *image_name*>/save/image/path/name.tar.gz
# ドッカー画像をインポートする
docker load </save/image/path/name.tar.gz
# コンテナを表示
docker ps
docker ps -a
docker ps -aq
# コンテナポートマッピングリスト
docker port jms_koko
# 実行|リブート|コンテナを停止します
docker  start|restart|stop  <コンテナIDまたはコンテナのコンテナ名>
# コンテナログを表示
 docker logs -f <コンテナIDまたはコンテナのコンテナ名>
# コンテナを削除する
docker rm *container_id*
# コンテナのリソース使用量を表示します(メモリ、CPU、ディスクなど。)
docker stats jms_koko
# Dockerクライアントとサーバーのバージョン情報を表示する
docker version
# コンテナで実行されているプロセスを表示する(コンテナでpsを実行するのと同じです-efコマンド)
docker top jms_koko
# Dockerの詳細なシステム情報を表示する
docker info
# 実行中のすべてのコンテナを強制終了します
docker kill $(docker ps -a -q)
# 停止したコンテナをすべて削除します
docker rm $(docker ps -a -q)
# ぶら下がりでタグ付けされていないすべてのミラーを削除します
docker rmi $(docker images -q -f dangling=true)
# すべてのミラーを削除します
docker rmi $(docker images -q)
# 「doss」を含む画像名を強制的に削除する-api &quot;ミラー
docker rmi --force $(docker images | grep doss-api | awk '{print $3}')
# 未使用のデータをすべて削除する
docker system prune
# 未使用のボリュームのみを削除します
docker volume prune

JumpServerの公式ドキュメント

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

Recommended Posts

JumpServer Bastion Host--CentOS 8のインストールと展開(4)
Centos6.5のインストールとKVMの展開
CentOs7のインストールと展開Zabbix3.4オリジナル
2-Kubernetesエントリーマニュアルのインストールと展開
CentOS7でのErlang20.2のインストールと展開
Ubuntuのインストールと展開Redash操作ノート(2020.08)
CentOS6 / 7でのMySQL8.0のインストール、展開、および構成
Centos-6.5LNMP環境のインストールと展開
Centos7のインストールとgitlabサーバーの展開
Ubuntu環境でのNginxのインストールと展開
CentOSでのZabbixのインストールと展開およびローカリゼーション
CentOS7でのJenkinsのインストールと展開のチュートリアル
Centos7のインストールとAirflowの展開の詳細
CentOSでのMySQL8.0のインストールと展開、非常に詳細!
CentOS8でのMySQL8.0のインストール、展開、および構成のチュートリアル
PyCUDA-Ubuntu14.04のインストールとテスト
OpenMPI-Ubuntuのインストールと構成
Ubuntuの紹介とインストール
Tungsten Fabricナレッジベース丨構築、インストール、およびパブリッククラウドの展開
Centos8のOpenStackUssuriの最小限の展開とインストールの詳細なチュートリアル
Pythonの紹介と環境のインストール
Centosmysqlのインストールと構成
Anacondaの紹介とUbuntu / windowsのインストールAnaconda
Centos7のインストールと構成のプロメテウス
CentOS7のインストールと構成PPTP
Ubuntu16.04のインストールと簡単な構成
CentOSのインストールと構成cmake
Centos7.5のインストールと構成MongoDB4.0.4
CentOS7のインストールと構成PPTP
GitLabのインストールと基本的な使用
centos7kvmのインストールと使用
Ubuntuの展開とNexus3の経験
CentOS7postgresqlのインストールと使用
UbuntuPostgreSQLのインストールと構成
Caffe-Ubuntuのインストールと問題解決
Centos7elk7.1.1のインストールと使用