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/」にアクセスするとログイン画面が出るはずなのですが・・・
真っ白です!
前回のVNCの時は真っ黒だったのですが、今回は逆の真っ白です!
またか・・・とうなだれながら、トラシュー開始・・・
ネットで見ると「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/」にアクセスすると・・・
無事Guacamoleのログイン画面が表示されました!
良かったです!
さて、ログインは以下のクレデンシャルで行います。ログイン後にパスワードを変更することをオススメします。
- ユーザ名:guacadmin
- パスワード:guacadmin
後はアクセスする先の設定です。この辺からはネットに情報が転がってるので詳細は省略します。
ただ、前回の記事から読んでくださってる方は、VNCの設定としては最低限以下を設定したらできるはず。
名前は何でも大丈夫。Protocolは”VNC”。
あとはHostname、ポート番号、パスワードを設定するだけ。他は必須ではありません。
これでGuacamole経由でVNCを使用してサーバーにアクセスできました。
ちなみに、一度ログインしてしまうと、一つのコネクション画面にリダイレクトされて、追加の設定ができませんでした。そんな時は直接URLを叩いて設定画面に戻るしかなさそうです。
(http://GuacamoleIP:8080/guacamole/#/manage/mysql/connections/)
逆にこれ以外の方法をご存知な方、教えていただけると嬉しい。
これで外からのラボ操作も快適になりました。
コメント