CentOS7にGuacamoleをインストールする方法

この記事は約8分で読めます。
スポンサーリンク

CentOS7にGuacamoleサーバをインストールする手順を紹介します。

こちらも前回の記事同様、基本的にコピペレベルで実現できるはずです。

Guacamoleとは?

「VNC/SSH/RDPのJumpサーバーの役割」みたいなものです。

例えば自宅にラボ環境があって、外部からアクセスしたユースケースを考えてみます。この場合、外部から内部のサーバーのポートを全て開放するのはセキュリティ的にもリスクですし、毎回サーバーが増えるごとに開放するのも手間です。

さらに、ISPから与えられてるグローバルIPは通常は限られてるので、ポートマッピングが必要になります。

 

Guacamoleサーバーがあれば、外部に開放するサーバはGuacamoleサーバーだけで良い。

さらに、Guacamoleサーバーとクライアント(外部)の間はHTTPS通信にできるので、通信内容も暗号化されて安心。

 

自宅ラボユーザにとって、大変メリットが有るサーバーなのです。

 

ただ、このGuacamoleサーバー、事前準備が面倒くさい。ネットで色々情報を探したのですが、Dockerを使う方法やDBサーバを別途準備する方法など、多岐にわたります。

その中で「個人的に一番簡単な方法」を紹介します。

前提

前回の「CentOS7にVNCを導入してリモートで操作する方法」と同様に、以下を前提とします。逆に言うと、以下さえ満たしていれば簡単にGuacamoleサーバーを構築できるはず。

  • 使用するCentOS7は「CentOS-7-x86_64-Minimal-1804.iso」
  • IPアドレス・Gateway・DNSの設定は済
  • つまり、CentOS7からインターネットへのアクセスができることとする

前回と同様に、あくまでもセキュリティを意識しないで良い環境を前提に考えているので、セキュリティの設定は一切していません。なので、その辺はしっかり念頭にいれて必要に応じてハードニングしてください。責任は負えません。

CentOS7の初期準備

まずは操作しやすいようにSSHでrootログインができるようにします。つまり、この作業はコンソール上から行うことになります。

sshd_configを修正します。

#vi /etc/ssh/sshd_config

以下の箇所のコメントアウトを外します。

#PermitRootLogin yes

こんな感じです。

PermitRootLogin yes

面倒なので、再起動して反映させます。

#reload

これで「root@IPアドレス」でログインできるようになります。

以降は全てSSHでの作業を想定しています。

スクリプトでGuacamoleのインストール・設定

本来であればGuacamoleの公式サイトに従って色々必要なパッケージのインストールをするところですが、世の中には親切な方がいるみたいで、細かい作業を簡略化するスクリプトが用意されています。

まずはgitのインストール。以下のコピペで大丈夫です。

[root@guacamole ~]# yum install -y wget git

次にスクリプトのダウンロード。以下のコピペで大丈夫です。

(gitのインストールが”Complete!”で成功していることを確認しておいてください)

Complete!
[root@guacamole ~]# wget http://sourceforge.net/projects/guacamoleinstallscript/files/CentOS/guacamole-install-script.sh

実行権限を与えてスクリプトを実行します。

[root@guacamole ~]# chmod +x guacamole-install-script.sh
[root@guacamole ~]# LANG=C ./guacamole-install-script.sh

ここから先はスクリプトで入力が要求された箇所を紹介します。

DBのパスワードやDB名など。この当たりは任意で大丈夫です。Java KeyStoreのパスワード要件に合わせて他のパスワードも同じ文字列にしています。(任意で変えても大丈夫です)

 Enter the root password for MariaDB: guacamo!e
 Enter the Guacamole DB name: guacamole
 Enter the Guacamole DB username: guacamole
 Enter the Guacamole DB password: guacamo!e
 Enter the Java KeyStore password (least 6 characters): guacamo!e
 Do you wish to Install the Proxy feature (Nginx)?: n

証明書関係の設定です。ラボ目的であればそれ程意識する必要はありません。

Please complete the Wizard for the Java KeyStore

What is your first and last name?
  [Unknown]:  Guacamole Guacamole
What is the name of your organizational unit?
  [Unknown]:  Guacamole
What is the name of your organization?
  [Unknown]:  Guacamole
What is the name of your City or Locality?
  [Unknown]:  Guacamole
What is the name of your State or Province?
  [Unknown]:  Guacamole
What is the two-letter country code for this unit?
  [Unknown]:  GU
Is CN=Guacamole Guacamole, OU=Guacamole, O=Guacamole, L=Guacamole, ST=Guacamole, C=GU correct?
  [no]:  yes

以上で終了です。

これで本来であれば「http://GuacamoleIP:8080/guacamole/」にアクセスするとログイン画面が出るはずなのですが・・・

guacamole1

真っ白です!

前回のVNCの時は真っ黒だったのですが、今回は逆の真っ白です!

CentOS7にVNCを導入してリモートで操作する方法
たまには技術系ネタを・・・ CentOS7にVNCサーバ(画面を「見せる側」)の設定を行って、リモートからCentOSを操作できるようにしてみました。 実際に自分が構築する上でネットで試行錯誤した結果です。 「CentOS...

またか・・・とうなだれながら、トラシュー開始・・・

ネットで見ると「URIの最後に/が必要とか」「warが足りない」とか色々書いていて、色々試してもうまくいかず・・・

取っ組み合いながら、OSレベルのログをパラパラ見ていると・・・

[root@guacamole ~]# tail -f /var/log/audit/audit.log | grep denied
type=AVC msg=audit(1537669606.362:211): avc:  denied  { getattr } for  pid=14619 comm="java" path="/var/lib/guacamole/guacamole.war" dev="dm-0" ino=9179583 scontext=system_u:system_r:tomcat_t:s0 tcontext=unconfined_u:object_r:var_lib_t:s0 tclass=file
type=AVC msg=audit(1537669616.363:212): avc:  denied  { getattr } for  pid=14619 comm="java" path="/var/lib/guacamole/guacamole.war" dev="dm-0" ino=9179583 scontext=system_u:system_r:tomcat_t:s0 tcontext=unconfined_u:object_r:var_lib_t:s0 tclass=file

audit.logでめちゃめちゃ怪しいログを発見しました・・・

・・・selinuxですね。

本当にselinuxには苦労させられます。

まずは、念の為Guacamoleを停止します。

[root@guacamole ~]# systemctl stop guacd
[root@guacamole ~]# systemctl stop tomcat

selinuxの設定ファイルを修正します。

[root@guacamole ~]# vi /etc/selinux/config

以下のパラメーターがあるので

SELINUX=enforcing

“enforcing”から”disabled”に変えます。CentOSに慣れてる方だとおなじみですね。

SELINUX=disabled

面倒くさいので再起動します。

[root@guacamole ~]# reboot

これで再度「http://GuacamoleIP:8080/guacamole/」にアクセスすると・・・

guacamole2

 

無事Guacamoleのログイン画面が表示されました!

良かったです!

さて、ログインは以下のクレデンシャルで行います。ログイン後にパスワードを変更することをオススメします。

  • ユーザ名:guacadmin
  • パスワード:guacadmin

後はアクセスする先の設定です。この辺からはネットに情報が転がってるので詳細は省略します。

ただ、前回の記事から読んでくださってる方は、VNCの設定としては最低限以下を設定したらできるはず。

名前は何でも大丈夫。Protocolは”VNC”。

guacamole4

 

あとはHostname、ポート番号、パスワードを設定するだけ。他は必須ではありません。

guacamole5

これでGuacamole経由でVNCを使用してサーバーにアクセスできました。

guacamole6

 

ちなみに、一度ログインしてしまうと、一つのコネクション画面にリダイレクトされて、追加の設定ができませんでした。そんな時は直接URLを叩いて設定画面に戻るしかなさそうです。

(http://GuacamoleIP:8080/guacamole/#/manage/mysql/connections/)

逆にこれ以外の方法をご存知な方、教えていただけると嬉しい。

これで外からのラボ操作も快適になりました。

コメント

タイトルとURLをコピーしました