ブラウザからアクセスできる踏み台サーバを構築

  • 2017.05.02
  • OSS
ブラウザからアクセスできる踏み台サーバを構築

ブラウザからアクセスできるリモートデスクトップクライアントApache Guacamole

Apache Guacamoleは、VNC,SSH,RDP,telnetプロトコルを利用してブラウザ上から端末を操作することができるソフトです。
今回は、CentOS7にインストールしてみました。

環境準備

Apache Guacamoleを利用するためには、色々なパッケージが必要となるためyum等を利用してパッケージをインストールしていきます。

#yum -y install libguac-client-rdp libguac-client-vnc libguac-client-ssh
#yum -y install cairo-devel libjpeg-turbo-devel libjpeg-devel libpng-devel uuid-devel
#yum install freerdp-devel pango-devel libssh2-devel libtelnet-devel  libvncserver-devel pulseaudio-libs-devel openssl-devel libvorbis-devel libwebp-devel

ffmpegのインストール

Apache Guacamoleには操作を記録する機能もあるため記録用にffmpegをインストールします。
動画記録をしない場合には不要です。

#rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
#rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
#rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm
#yum -y install ffmpeg ffmpeg-devel

Apache Guacamole Serverのインストール

Apache Guacamole Serverをダウンロードします。
下記サイトから最新版をダウンロードしました。2017年5月時点では0.9.12でした。
Apache Guacamole

ダウンロードしたファイルを解凍し、要件を満たしているかを確認します。

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

利用したいプロトコルサポートがyesになっているか、必要ライブラリがインストールされているかを確認します。

実行結果を下記のようになります。

------------------------------------------------
guacamole-server version 0.9.12-incubating
------------------------------------------------

   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

   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.

下記コマンドを実行し、インストールします。

#make
#make install
#ldconfig

Apache Guacamole Clientのインストール

tomcatのインストール

Apache Guacamole ClientはJavaで動作するためtomcatが必要になりますので、tomcatをインストールします。

#yum -y install java-1.7.0-openjdk.x86_64
#yum -y install tomcat
#yum -y install tomcat-webapps tomcat-admin-webapps

Mavenのインストール

Apache Guacamole ClientのコンパイルにMavenが必要になりますので、Mavenをインストールします。

#wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
#sed -i s/\$releasever/6/g /etc/yum.repos.d/epel-apache-maven.repo
#yum -y install apache-maven
#mvn --version
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T01:41:47+09:00)
Maven home: /usr/share/apache-maven
Java version: 1.7.0_131, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.131-2.6.9.0.el7_3.x86_64/jre
Default locale: ja_JP, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-514.16.1.el7.x86_64", arch: "amd64", family: "unix"

Apache Guacamole Clientインストール

下記ページから、Clientをダウンロードします。
Apache Guacamole Client

ファイルを解凍し、コンパイルします。

# tar -zxf guacamole-client-0.9.12-incubating.tar.gz
#cd guacamole-client-0.9.12-incubating
#mvn package

warファイルをtomcatのwebappsディレクトリへコピー

#cp guacamole/target/guacamole-0.9.12-incubating.war /var/lib/tomcat/webapps/guacamole.war

認証用ファイルuser-mapping.xmlの作成

user-mapping.xmlに認証情報を記載し、接続先を記載します。
認証情報はLDAPやDBを指定することもできますが、今回は一人でしか利用しないのでuser-mapping.xmlファイルに記載します。

#mkdir /usr/local/guacamole
#vi user-mapping.xml

/usr/local/guacamoleを設定ファイルの保存先としましたが、自由に変更可能です。
user-mapping.xmlは下記のように記載します。

<user-mapping>
        <authorize username="利用したユーザ名を記載" password="ハッシュ化したパスワード" encoding="md5">
                <connection name="cent1">
                        <protocol>ssh</protocol>
                        <param name="hostname">192.168.1.1</param>
                        <param name="port">22</param>
                </connection>
                <connection name="win10">
                        <protocol>rdp</protocol>
                        <param name="hostname">192.168.1.2</param>
                        <param name="port">3389</param>
                </connection>
                <connection name="win7">
                        <protocol>rdp</protocol>
                        <param name="hostname">192.168.1.7</param>
                        <param name="port">3389</param>
                </connection>
        </authorize>
</user-mapping>

一例ですので、他のプロトコル等を利用したい場合には公式ページでご確認ください。
この例の場合には、

  1. 192.168.1.1 のCentOS7へSSHアクセス
  2. 192.168.1.2 のWindows 10へリモートデスクトップアクセス
  3. 192.168.1.3 のWindows 7へリモートデスクトップアクセス

をする設定になります。nameも自由に変更できるのでわかりやすいホスト名等にするといいと思います。

起動ファイルの編集(tomcat,guacd)

user-mapping.xmlファイルを保存した場所を、GUACAMOLE_HOMEという環境変数で指定する必要があります。

#vi /etc/sysconfig/tomcat
末尾に下記を追記
GUACAMOLE_HOME=/usr/local/guacamole
#/etc/sysconfig/guacd
末尾に下記を追記
GUACAMOLE_HOME=/usr/local/guacamole

tomcatとguacdの起動

tomcatを先に起動し、guacdを後から起動します。

#systemctl start tomcat
#systemctl start guacd

Apache Guacamoleの起動確認

ブラウザを利用して、http://サーバIP:8080/guacamole/ へアクセスします。
下記のような画面が表示されます。

user-mapping.xmlで指定したユーザIDとパスワードを入力し、【Login】をクリックします。
ログインに成功すると下記画面になります。
すでに接続テストをした後のため、RECENT CONNECTIONSにいくつか表示されています。

ALL CONNECTIONSにuser-mapping.xmlで定義したサーバ一覧が表示されているので、接続したいホストをクリックします。
ブラウザからアクセスし、操作することができるようになります。

Windowsの場合、リモートデスクトップのオプションで、
「ネットワークレベル認証でリモートデスクトップを実行しているコンピュータからのみ接続を許可する」としている場合接続できないことがあります。
その場合には、
「リモートデスクトップを実行しているコンピュータからの接続を許可する」
を選択し、接続を試してみてください。

まとめ

ブラウザから利用できるので、色々な用途に使えそうです。
メモリ2GBのマシンに構築しましたが、ローカル環境内では特に遅延することもなく動いています。
クラウドサービス上に踏み台サーバを構築し、クラウドサービス上にあるローカルIPしかもたないサーバへアクセスするのにも便利かと思います。(VPN経由でアクセスできれば不要ですね)
またWindows Serverで踏み台サーバを構築した場合には、リモートデスクトップ用のライセンスも必要になるため、このようなOSSを使って構築することでコストの削減にもなりますね。

操作記録機能もあるようなので、別な機会に試してみたいと思います!

OSSカテゴリの最新記事

%d人のブロガーが「いいね」をつけました。