1. システムとオフィスの融合|株式会社QES
  2. media
  3. リモートワーク 仕事効率化
  4. Apache Guacamole™ で「クライアントレス」リモートアクセスを! (後編)

QESブログ

Apache Guacamole™ で「クライアントレス」リモートアクセスを! (後編)

  • LINEで送る
  • このエントリーをはてなブックマークに追加


こんにちは。 システムソリューション営業本部の吾妻です。



“Apache Guacamole™ で「クライアントレス」リモートアクセスを!” の 前編では、 Apache Guacamole を利用して、社内PCやクラウド上の仮想マシンに対するリモートアクセス手段を用意する方法をご紹介しました。






本記事では、 Apache Guacamole 検証結果の後編として、 Docker Compose を利用して Apache Guacamole を構築する手順をご紹介します。

また、単に Dockerize (Docker化)するだけでは面白くないので セキュリティ上不安があるので、 Let's encryptで証明書が発行されるようにして、 Apache Guacamole にSSL通信でアクセスできるようにしてみます。



今回使用するファイル一式をGitHub上に掲載していますので、是非ダウンロードして試してみて下さい。


リポジトリに含まれるファイルの構成は以下の通りです。

guac22.png





今回の検証手順では、前編でWSL(Windows Subsystem for Linux)に Apache Guacamole を直接インストールした代わりに、DockerおよびDocker Composeを利用してインストールします。



※以下の構築手順は、あくまでもサンドボックス環境での検証を目的としたもので、実運用環境へ導入することを目的としたものではありません※

※実運用のためには、本手順以外にセキュリティに関わる設定も行う必要があります。このような設定については本記事の対象外ですので、自己の責任において行って下さい※




構成図は以下の通りです。
構成図

事前準備



ドメイン取得



今回の手順では、SSL証明書を使用するためにドメインを取得しておく必要があります。ドメインを取得したら、そのドメイン名でAzure仮想マシンにアクセスできるように、DNSレコードを設定しておきます。取得・設定手順については、各レジストラのWebサイト等でご確認下さい。 








TOTP



セキュリティ強化のために二要素認証(TOTP)を有効化します。 Apache Guacamole 公式サイトで公開されている jar ファイルを配置することで機能を有効化できます。まず、 Downloads ページで最新バージョン(本記事執筆時点では 1.2.0 )のページを開き、バイナリ形式で配布されている「 guacamole-auth-totp-x.x.x.tar.gz 」をダウンロードします。



ダウンロードしたtar.gzファイルを解凍して、中身のjarファイルを取り出します。./guacamole/extensionsディレクトリを作成し、取り出したjarファイルを入れておきます。

guac18.png guac19.png
guac20.png  





フォント(オプションの手順)



Apache Guacamoleを経由してSSHなどCUIでアクセスする予定がある場合は、Dockerコンテナを作成する段階で予め日本語フォントを用意しておくことで、後程設定画面でフォントを指定できるようになります(必要なければこの手順はスキップして下さい)。

好みに応じたフォントを用意して、./guacdディレクトリを作成し、そこにttfファイルを入れておきます。

今回はttfファイルとして、IPAexフォントを入れて試してみました。

Apache Guacamoleの設定画面で./guacdディレクトリに格納したフォントを指定する際は、以下のように接続の編集画面でフォント名テキストボックスに入力します。

フォント名指定


インストール手順



docker-compose.ymlの作成



以下の様な内容のdocker-compose.ymlを用意します。ドメインやフォントファイルの指定は、事前準備の際に用意したドメイン名、ファイル名に合わせて適宜変更して下さい。 SSL証明書の発行には、Docker Hubで公開されている https-portal コンテナを利用しています。





DB初期化クエリの生成



以下のコマンドを実行して、initdb.sqlを生成します。このファイルは、 postgres コンテナの初回起動時にのみ実行されます。

docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --postgres > ./postgres/init/initdb.sql



コンテナの起動



以下のコマンドを実行して、コンテナ群を起動します。

docker-compose up -d --build


コンテナを起動してから Let's encrypt で証明書が発行されるまで暫く時間が掛かるので、以下のコマンドを実行してログを開き、証明書が発行されているか確認します。

docker-compose logs -f


証明書を取得する際には、 Let's encrypt のサーバーと、仮想マシン(の https-portal コンテナ)の ACME クライアントの間で HTTP-01 チャレンジの通信を行うため、80番ポートを開放しておく必要があります。



ログに以下のように出力されれば処理が完了しています。
https-portal_1 | ..................................................................................
https-portal_1 | Generating RSA private key, 4096 bit long modulus (2 primes)
https-portal_1 | ....................................
https-portal_1 | ..................................................................................
https-portal_1 | e is 65537 (0x010001)
https-portal_1 | Generating RSA private key, 2048 bit long modulus (2 primes)
https-portal_1 | ........................
https-portal_1 | ..............
https-portal_1 | e is 65537 (0x010001)
https-portal_1 | Signing certificates from https://acme-v02.api.letsencrypt.org/directory ...
https-portal_1 | Parsing account key...
https-portal_1 | Parsing CSR...
https-portal_1 | Found domains: example.net
https-portal_1 | Getting directory...
https-portal_1 | Directory found!
https-portal_1 | Registering account...
https-portal_1 | Registered!
https-portal_1 | Creating new order...
https-portal_1 | Order created!
https-portal_1 | Verifying example.net...
https-portal_1 | example.net verified!
https-portal_1 | Signing certificate...
https-portal_1 | Certificate signed!
https-portal_1 | Signed key for example.net
https-portal_1 | [cont-init.d] 20-setup: exited 0.
https-portal_1 | [cont-init.d] 30-set-docker-gen-status: executing...
https-portal_1 | [cont-init.d] 30-set-docker-gen-status: exited 0.
https-portal_1 | [cont-init.d] done.
https-portal_1 | [services.d] starting services
https-portal_1 | [services.d] done.




動作確認




クライアントPCからのアクセス



クライアント PC から、Apache Guacamole の URL である http://<ドメイン名>:8080/guancamole/にアクセスして、サインインとリモートアクセスができることを確認します。ブラウザ上での初期設定は、前編と同じ手順です。




まとめ



本記事では、 Apache Guacamole 検証結果の後編として、 Docker Compose を利用して Apache Guacamole を構築し、 Let's encryptで発行した証明書で経路を保護する手順をご紹介しました。

この記事を基にApache Guacamole をとりあえず試してみた上で、よりセキュアなリモートアクセス環境が必要であれば、 WVD(Windows Virtual Desktop)のような製品をご検討いただければと思います。WVDについても本ブログに連載記事を掲載していますので、併せてご覧下さい。


まだまだコロナが収束しない状況が続いていますが、こうしたツールを活用して頑張りましょう!!









このブログで参照されている、 IPA フォントは、 IPA の登録商標です。

このブログで参照されている、 Apache Guacamole 、 Guacamole 、 Apache 、 Apache feather logo および Apache Guacamole project logo は、 Apache Software Foundation の商標です。

このブログで参照されている、DockerおよびDocker Composeは、米国およびその他の国における Docker Inc. の商標または登録商標です。

このブログで参照されている、Microsoft、Windows、その他のマイクロソフト製品およびサービスは、米国およびその他の国におけるマイクロソフトの商標または登録商標です。

  • LINEで送る
  • このエントリーをはてなブックマークに追加

お気軽にお問い合わせください。

ページのトップへ