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

QESブログ

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

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


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



新型コロナウィルス感染症がなかなか収束しないために、リモートワークを続けざるを得ない状況が続いています。


今回紹介する Apache Guacamole というソフトウェアを利用すると、社内PCやクラウド上の仮想マシンに対するリモートアクセス手段を簡単に用意することができます。


本記事では、 Apache Guacamole 検証結果の前編として、Azure 上の 仮想マシンに WSL(Windows Subsystem for Linux)でUbuntu環境を用意したうえで、 Apache Guacamole をインストールする手順をご紹介します。




もともと、ビフォーコロナのオープンソースカンファレンス2019 Tokyo/Fallに参加した際に存在を知り、部内でのモブプログラミング形式の勉強会で利用するために検証していたのですが、リモートワークで実務での活用を考える必要が出てきたため、今回改めて検証結果をまとめることにしました。


当初の導入目的だった社内勉強会だけでなく、LT(ライトニングトーク)会のようなイベントも、感染防止のために開催できない状況が続いているため、  こうしたツールをより一層活用しなければならないということで、他部署のメンバーとも検証結果の共有を行っていたりします。



名前と特徴



Guacamoleと書いて、ワカモレと読みます。同名のメキシコ料理が由来となっているようです。

Apache Guacamole は、クライアントレスリモートデスクトップゲートウェイで、VNC(RFB)、RDP、SSHのような標準的なプロトコルに対応しています。



「クライアントレス」というのは、Flash® Playerのようなプラグインや、VNC® Viewerのようなクライアントアプリケーションを必要としないことを指しています。

サーバーの側に Guacamole をインストールしてしまえば、リモートアクセスするためにクライアント側で必要なのはWebブラウザだけです。



その他の特徴を以下に示します。

  • 「クライアントレス」なので、社内環境のように新規アプリケーションやブラウザアドオンを入れにくい場所でも利用できる
  • 接続元ユーザーやグループで、リモートアクセスする先を制限できる
  • 証跡としてコマンドやスクリーンショットを保存できるため、操作内容を後からチェックできる
  • 同じ接続先に複数ユーザーが同時接続できる






こんな方におすすめ



  • リモートアクセス環境をとにかく早く用意したい方
  • 複数のサーバーに対して、共通の認証を通してリモートアクセスしたい方
  • AzureやAWSなど、複数のクラウドサービスへ横断的にリモートアクセスしたい方




こうしたメリットがある一方で、セキュリティやネットワークに関する知識がないと社内情報を危険に晒す恐れがあること、オープンソースソフトウェアなのでサポートが限定的であることなどのデメリットも存在します。





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

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






構成図



構成図1 構成図2
構成図1 構成図2


Apache Guacamole は「リモートデスクトップゲートウェイ」なので、リモートアクセスする先のサーバーとは別の中継用サーバーにインストールする(構成図1)ことも、同じサーバー上にインストールする(構成図2)こともできます。



今回の検証手順では、リモートアクセス先の Microsoft Windows Server にWSL(Windows Subsystem for Linux)を用意し、そこに Apache Guacamole をインストールすることで、中継用サーバーを用意する手間を省きます。

そのため、今回の検証での接続の流れは以下のようになります。

guac13.png






インストール手順



以下の手順は、WSLのUbuntu環境で実施します。Ubuntuがインストールされていない場合は、Microsoft Storeから入手して下さい。



MySQL

まず、MySQLをインストールします。

インストール後にMySQLのサービスを初期化する際には、予めMySQLのサービスを開始しておかないとエラーが発生します。


sudo apt update -y && sudo apt upgrade -y && sudo apt install mysql-server mysql-client -y & sudo service mysql start & sudo rm -rf /var/lib/mysql && sudo mysqld --initialize




MySQLのインストール時のログに一時パスワードが出力されるので、確認しておきます。


grep 'temporary password' /var/log/mysqld.log


出力例:

2019-11-23T12:22:56.144754Z 1 [Note] A temporary password is generated for root@localhost: ************




一時パスワードから任意のパスワードに変更し、設定したパスワードでログインできることを確認します。

sudo service mysql stop && sudo usermod -d /var/lib/mysql mysql && sudo service mysql start & sudo mysql_secure_installation

sudo mysql -u root -p




Apache Guacamole

インストールスクリプトをダウンロードしてインストールするために、以下のコマンドを実行します。

bash wget https://git.io/fxZq5 && mv fxZq5 guac-install.sh && chmod +x guac-install.sh & sudo ./guac-install.sh --mysqlpwd <変更したMySQLのパスワード> --guacpwd <Guacamoleのパスワードを指定>




Windows Server

RDPでアクセスする場合は、以下のレジストリ項目を設定する必要があります。レジストリの変更は、自己の責任において実施して下さい。

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp]
"SecurityLayer"=dword:00000001
"UserAuthentication"=dword:0x00000000

参考サイト: Guacamole, RDP, Windows 10 and Windows Server 2016




GUIでの初期セットアップ


(1) Windows Serverのブラウザ(クライアントPCのブラウザではありません)から、 Apache Guacamole の URL である http://localhost:8080/guancamole/にアクセスして、 guacadmin ユーザーのパスワードを変更します。


 管理者ユーザー名    
 guacadmin    
 初期パスワード    
 guacadmin    




(2) 以下のように、localhost にRDPアクセスするための接続情報を作成します。 

 key      value    
 Protocol      RDP    
 Hostname      localhost    
 Port      3389    
 Username      ***    
 Password      ***    


接続情報


(3)読み書きまたは読み取り専用のプロファイルを作成します。

プロファイル


(4)管理者権限を持つアカウントを常用するのはセキュリティ上良くないため、普段使い用のアカウントを作成します。

ユーザー作成


(5)Azure NSG で、 Apache Guacamole で使用するポート(既定では 8080 ポート)を開放するとともに、、Windows Serverのファイアウォール設定を変更します。

ファイアウォール1 ファイアウォール2



(6)クライアント PC から、Apache Guacamole の URL である http://<IPアドレス>:8080/guancamole/ (localhostではありません)にアクセスして、サインインとリモートアクセスができることを確認します。



リモートアクセス時の操作



メニュー表示

リモートデスクトップ接続の画面を表示している状態で Ctrl+Alt+Shift を押すと、メニューが表示されます。このメニューは、クリップボードのデータを変更したりサインアウトしたりする際に使用します。

Ctrl+Alt+Shift



画面共有

共有用のURLを発行すると、他のユーザーと画面共有することができます。共有の際には、読み書きを許可することも、読み取り(画面の閲覧)のみを許可することもできます。 

画面共有




クライアントPC側で複数のブラウザに対して画面共有した際のスクリーンショットを示します。 最近のモダンブラウザであれば、ほぼ同じように表示されます。

画面共有(Firefox) 画面共有(Chrome) 画面共有(Edge)
Firefox Chrome Edge






まとめ

Apache Guacamole というソフトウェアを利用して、社内PCやクラウド上の仮想マシンに対するリモートアクセス手段を簡単に用意する手順をご紹介しました。セキュリティ面や、コンプライアンス面を考えると完全とは言えませんが、速やかにリモートアクセス環境を整えなければならない状況では、 Apache Guacamole の導入も、候補の1つにはなるのではないでしょうか。


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


後編では、 Apache Guacamole をDockerを利用して構築することで、より簡単に、移植性や拡張性を持たせる方法や、SSL通信を利用してよりセキュアにする方法についてご紹介できればと考えています。


こうしたツールを活用して、コロナに負けず頑張りましょう!!












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

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

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

ページのトップへ