働き方改革の一助に、「Apache Guacamole」でリモートデスクトップ

schedule 2018/04/16  refresh 2023/11/09

 

働き方改革の取り組みを提唱される昨今ですが、
社内制度の見直しや、働き方(副業、兼業、テレワークなど)を見直すなど、
様々な取り組みが行われています。

 

さて、今回はそんな働き方改革の一助となれるかもしれない、
社内環境に社外から接続することができるツール、Apache Guacamoleをご紹介したいと思います。

 

 

Apache Guacamoleとは

Apache Guacamoleは、クライアントレス(Webブラウザを使用する)のリモートデスクトップゲートウェイです。
接続プロトコルには、VNC,RDP,SSHなどの標準プロトコルをサポートしています。

 

 

ライセンス

Apache License、Version 2.0が適用されたオープンソース(OSS)となっています。

 

 

環境構築

Apache Guacamoleをインストール、起動までを記載します。

以下の構成でインストールします。
OS:CentOS7
Apache Guacamole: 0.9.14 (2018-01-18 09:47:00 -0800リリース)

 

 

インストール手順

リポジトリの設定を行います。


■EPELリポジトリ

        # yum install epel-release
    

 

■nux-dextopリポジトリ(ffmpegに必要)

        # yum install http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
    
 

必須依存関係のインストール

        # yum install gcc
# yum install cairo-devel libjpeg-turbo-devel libpng-devel uuid-devel
 

オプション依存のインストール

        # yum install ffmpeg-devel freerdp-devel pango-devel libssh2-devel libtelnet-devel libvncserver-devel pulseaudio-libs-devel openssl-devel libvorbis-devel libwebp-devel# 
    

 

guacamole-serverのダウンロード

        # wget  --content-disposition 'http://apache.org/dyn/closer.cgi?action=download&filename=guacamole/0.9.14/source/guacamole-server-0.9.14.tar.gz'
# tar -xzf guacamole-server-0.9.14.tar.gz 
# cd guacamole-server-0.9.14/

 

configureを実行します。

見つかったライブラリのリストと、ビルドする必要のあるライブラリの一覧を見ることができます。

        # ./configure --with-init-dir=/etc/init.d

------------------------------------------------
guacamole-server version 0.9.14
------------------------------------------------

Library status:

freerdp ............. yes
pango ............... yes
libavcodec .......... yes
libavutil ........... yes
libssh2 ............. yes
libssl .............. yes
libswscale .......... yes
libtelnet ........... yes
libVNCServer ........ yes
libvorbis ........... yes
libpulse ............ yes
libwebp ............. yes
wsock32 ............. no

Protocol support:

RDP ....... yes
SSH ....... yes
Telnet .... yes
VNC ....... yes

Services / tools:

guacd ...... yes
guacenc .... yes

Init scripts: /etc/init.d

Type "make" to compile guacamole-server.

 

 

configureが完了したら、 " make "を実行し、 guacamole-serverをコンパイルします。

        # make
    
 

 

「make install」を実行してビルドされたコンポーネントをインストールし、
次に「ldconfig」を実行してシステムのインストール済みライブラリのキャッシュを更新します。

        # make install
# ldconfig
 

 

この時点で、すべてがインストールされていますが、 guacdは実行されていません。
Guacamoleを使用するには、クライアントコンポーネントをインストールした後にguacdを実行する必要があります。

 

Tomcatのインストール

        # yum install tomcat
    
 

 

guacamole-clientのダウンロード

        # cd /var/lib/tomcat/webapps/
# wget --content-disposition 'http://apache.org/dyn/closer.cgi?action=download&filename=guacamole/0.9.14/binary/guacamole-0.9.14.war'

 

 

 

Guacamole設定

Guacamoleのディレクトリ作成

        # mkdir /etc/guacamole
    

 

guacamole.propertiesを設定します。

 

これはGuacamole設定ファイルです。 このファイル内のプロパティは、Guacamoleがguacdに接続する方法を指示し、インストールされている認証拡張機能の動作を設定します。

        # vi /etc/guacamole/guacamole.properties
# guacd-hostname: localhost
# guacd-port: 4822
# user-mapping: /etc/guacamole/user-mapping.xml

 

 

Guacamoleのデフォルトの認証方法は、 user-mapping.xmlという1つのファイルからすべてのユーザーと接続を読み取ります。

MySQLなどのデータベースにユーザと接続先を保存できますが、今回は設定ファイルに事前に設定します。

        
# vi /etc/guacamole/user-mapping.xml
<user-mapping>
    <authorize username="接続先ユーザ名" password="パスワード">
        <connection name="Windows(任意の表示名)">
            <protocol>rdp</protocol>
            <param name="hostname">IPアドレス/ホスト名</param>
            <param name="port">3389</param>
            <param name="security">tls</param>
            <param name="ignore-cert">true</param>
        </connection>
        <connection name="Linux">
            <protocol>ssh</protocol>
            <param name="hostname">example.secioss.local</param>
            <param name="port">22</param>
            <param name="username">Linuxユーザ名</param>
            <param name="password">パスワード</param>
        </connection>
    </authorize>
</user-mapping>

 

 

GUACAMOLE_HOMEの設定を行います。

        # vi /etc/sysconfig/tomcat
# 末尾に以下を追加
GUACAMOLE_HOME=/etc/guacamole

 

 

tomcat 起動

        # systemctl start tomcat
    

 

 

guacamole-server起動

        # systemctl start guacd
    



動作確認

Guacamoleを起動したら、実際にアクセスしてみます。

guacamoleを実行しているサーバにアクセスしてみます

http://guacamoleサーバのIPまたはホスト名:8080/guacamole

以下の様な画面が表示されます。

Guacamoleへのログインは、user-mapping.xmlで設定した、authorizeでログインします。

20180416_1

 

ポータル画面から、設定したリモートデスクトップ先が一覧表示されますので、アクセスしたいリモートデスクトップ先を選択すると、リモートアクセスが行えます。

 

20180416_2

 

20180416_3

 

設定が正しく設定されていると、リモートアクセスに成功します。

20180416_4

 

 

 

最後に

今回は、Apache Guacamoleを使用して簡単な構成でリモートデスクトップを実現しました。

実際に運用に組み込むような場合には、不正アクセスを防いだり、IPでアクセスを制限したりと、

様々なセキュリティ対策をしたうえで使用することになると思います。

 

2段階認証などの機能はApache Guacamoleにデフォルトで実装されていますので、

試してみてはいかがでしょうか。