Ubuntu 16.04 LTSでGuacamoleを使用してHTML 5 RDP / SSHフロントエンドを作成する

前書き

このチュートリアルの目的は、パブリックSSHおよびパブリックRDP接続を取り除くことです。これを非常に便利なHTML5クライアントの背後に配置することで、クラウドにアクセスするためのセキュリティレイヤーを追加できます。

ワカモレもリモートアクセスをログに記録するので、不正アクセスははるかに追跡可能になります。

注:Let's暗号化(オプションB)には、ドメイン名が必要です。ない場合は、この手順をスキップして、オプションAを実行するだけです。

ステップ1-システムの準備

まず、目的のVultrゾーンでVPSをスピンアップします。A 1024 MBワカモレが厳しいということではないようVPSは、十分でしょう。

プライベートIPを有効にする

まず、VPSでプライベートネットワークを有効にします。これはよく文書化されています

ファイアウォールの準備

まず、画像を少し固めましょう。そして、プロビジョニングされたイメージがufw有効になっているかどうかを確認しましょう。

root@vultr:~# ufw status
Status: inactive

デフォルトでは無効になっているため、いくつかのルールを追加する必要があります。

  • ルール1:ssh:TCPポート22
  • ルール2:http:TCPポート8080(ワカモレの一時的なテストルール)

これらのポートの設定から始めましょう。

ufw allow 22/tcp
ufw allow 8080/tcp

次にファイアウォールを有効にします。

ufw enable

警告を受けても心配しないでください。ポートを追加した場合22、問題は発生しません。

root@vultr:~# ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

有効にしたら、ファイアウォールのステータスをリクエストすると、ポート構成が表示されます。

ufw status

Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
8080/tcp                   ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)
8080/tcp (v6)              ALLOW       Anywhere (v6)

ステップ2-ワカモレのインストール

すべての依存関係をインストールする

インストールを開始する前に、リポジトリを更新してアップグレードする必要があります。TomcatJavaベースののようなパッケージでは、発見されたバグとそれに関連するバグ修正が常に流れています。通常、インストールに急いで行く代わりに、最初にこれを行うことをお勧めします。

apt-get update
apt-get -y upgrade 

次はすべての依存関係です。ワカモレにはかなりの数があります。(依存関係とその機能の完全なリストはここにあります)。それらすべてをインストールして続けましょう。

apt-get -y install build-essential tomcat8 freerdp libcairo2-dev libjpeg-turbo8-dev libpng12-dev libossp-uuid-dev libavcodec-dev libavutil-dev libfreerdp-dev libpango1.0-dev libssh2-1-dev libtelnet-dev libvorbis-dev libwebp-dev mysql-server mysql-client mysql-common mysql-utilities libswscale-dev libvncserver-dev libpulse-dev libssl-dev

インストーラーがMySQLルートパスワードを要求する場合は、パスワードを入力し、必ずメモしてください。このパスワードは後でワカモレデータベースを作成するために使用します。

ワカモレのダウンロード

すべての依存関係が揃ったので、Guacamoleのダウンロードを続行できます。ワカモレ自体はほとんどバイナリ形式ではなくソース形式で提供されます。まず/tmp、ディスクの他の部分が乱雑にならないように、フォルダに移動します。次に、すべてのソースコードをダウンロードします。

ダウンロードする4つのソース/バイナリファイルがあります。

  • guacamole-0.9.13-incubating.war:これはWebアプリケーションです。WARファイルには、TomcatのWebサイトにホストされている単一のウェブサイトを提供するzip形式のウェブパッケージです
  • guacamole-server-0.9.13-incubating.tar.gz:このファイルはバックエンドguacdアプリケーションを提供します。これにより、RDPとSSHを介してストリームが作成されます。
  • guacamole-auth-jdbc-0.9.13-incubating.tar.gz:ローカルのMySQLデータベースを使用するため、関連するJDBCコネクタが必要です。
  • mysql-connector-java-5.1.43.tar.gz:データベースドライバーがなければ、JDBCコネクターは何もしません。このファイルは、MySQLチーム自身によって提供されます。

注:ダウンロードは最も近いサーバーに解決されました

cd /tmp
wget http://apache.belnet.be/incubator/guacamole/0.9.13-incubating/binary/guacamole-0.9.13-incubating.war
wget http://apache.cu.be/incubator/guacamole/0.9.13-incubating/source/guacamole-server-0.9.13-incubating.tar.gz
wget http://apache.cu.be/incubator/guacamole/0.9.13-incubating/binary/guacamole-auth-jdbc-0.9.13-incubating.tar.gz
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.43.tar.gz

これらのファイルをすべてダウンロードしたら、を抽出しますtar.gz

tar -xzvf guacamole-server-0.9.13-incubating.tar.gz
tar -xzvf guacamole-auth-jdbc-0.9.13-incubating.tar.gz
tar -xzvf mysql-connector-java-5.1.43.tar.gz

ワカモレのコンパイル

すべてのソースコードを抽出したので、いくつかのguacamoleフォルダーを作成しましょう。これらは、ワカモレアプリケーションとその依存関係で使用されます。

mkdir -p /etc/guacamole/lib
mkdir -p /etc/guacamole/extensions

新しいワカモレバイナリの準備がすべて整いました。これで、コンパイルとインストールのプロセスを開始できます。解凍したGuacamole Serverフォルダーに移動します。

cd /tmp/guacamole-server-0.9.13-incubating

init.d後でサービスとして実行するためのファイルも作成するようにアプリケーションを構成します。

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

コマンドは、すべてのライブラリとプロトコルで「はい」で終了する必要があります。そうでない場合は、戻ってapt-getコマンドをチェックし、パッケージを見逃していないことを確認してください。

------------------------------------------------
guacamole-server version 0.9.13-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.

次に、Gucamoleサーバーをコンパイルしてインストールします。

make && make install

これがすべて完了したら、実行ldconfigして、追加されたライブラリの検索パスを再構築します。

ldconfig

を使用systemctlしてguacd続行し(Guacamole Daemon)起動時に開始します。

systemctl enable guacd

ワカモレのバイナリがインストールされました。これで、Tomcat用のWebアプリケーションの準備が整いました。

warファイルguacamoleを先ほど作成したフォルダーに移動することから始めます。これが完了したら、tomcatディレクトリーにwarファイルを指す論理リンクを作成します。

cd /tmp
mv guacamole-0.9.13-incubating.war /etc/guacamole/guacamole.war
ln -s /etc/guacamole/guacamole.war /var/lib/tomcat8/webapps/

次に、mysqlコネクタとJDBCが必要です。extensionsフォルダーにはJDBCドライバーが、フォルダーにはコネクターが必要ですlib

cp mysql-connector-java-5.1.43/mysql-connector-java-5.1.43-bin.jar /etc/guacamole/lib/
cp guacamole-auth-jdbc-0.9.13-incubating/mysql/guacamole-auth-jdbc-mysql-0.9.13-incubating.jar /etc/guacamole/extensions/

ワカモレとTomcatの構成

コネクタとJDBCを配置したら、tocamt8ファイルを編集する必要があります。このファイルには多くのtomcat8設定が含まれています。この場合GUACAMOLE_HOME、ファイルの最後に変数を追加する必要があります。

nano /etc/default/tomcat8

以下を追加します。

GUACAMOLE_HOME=/etc/guacamole

データベースを作成する

次はデータベースの作成です。ワカモレは、ファイル内ではなくデータベースに接続構成を保存します。

root passwordインストール時に使用したでログインします。

mysql -u root -p

最初のステップは、「guacamole_db」というデータベースを作成することです。

create database guacamole_db;

次に、create userコマンドを実行します。これにより、パスワードを持つユーザーが作成されますmysupersecretpassword。このユーザーはからのみ接続できlocalhostます。

create user 'guacamole_user'@'localhost' identified by "mysupersecretpassword";

CRUDこのユーザーにデータベースの操作を許可しますguacamole_db

GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole_db.* TO 'guacamole_user'@'localhost';

特権をフラッシュし、シェルを終了します。

flush privileges;
exit

最後に、新しく作成したデータベースにワカモレスキーマを追加します。

cat /tmp/guacamole-auth-jdbc-0.9.13-incubating/mysql/schema/*.sql | mysql -u root -p guacamole_db

これが完了したら、guacamole.propertiesファイルを編集する必要があります。このファイルには、最近作成したMySQLサーバー構成が含まれています。

nano /etc/guacamole/guacamole.properties

MySQL接続の詳細と資格情報を追加します。

mysql-hostname: localhost
mysql-port: 3306
mysql-database: guacamole_db
mysql-username: guacamole_user
mysql-password: mysupersecretpassword

最後に、tomcat共有フォルダへのシンボリックリンクを作成します。これは、WARファイルがこれらのプロパティを検索する場所であるためです。

ln -s /etc/guacamole /usr/share/tomcat8/.guacamole

セットアップのテスト

tomcat8サーバーを再起動して終了し、guacdサーバーデーモンを起動します。

service tomcat8 restart
service guacd start

statusコマンドを使用して確認できます。

service tomcat8 status
service guacd status

これで、ポートでVPSを参照できます 8080

http://<yourpublicip>:8080/guacamole/

ユーザー名guacadminと同じパスワードを使用しますguacadmin。これにより、空のGuacamoleサーバーへのアクセスが許可されます。

ユーザー名の右上隅をクリックして、guacadminを選択しますSettings。設定ページが表示されたら、Usersタブに移動してユーザーを選択しますguacadmin

次に、パスワードを別のパスワードに変更するか、新しい管理ユーザーを作成してデフォルトのユーザーを削除しますguacadmin

ステップ3-微調整とクリーンアップ

これらは最後のステップです。終了後のクリーンアップです。

ダウンロードしたソースコードとバイナリを/tmpフォルダから削除します。

rm -rf /tmp/guacamole-*
rm -rf /tmp/mysql-connector-java-*

また、Guacamole Webアプリケーションをデフォルトにします。Tomcatエコシステムでは、ROOTフォルダーを取得するアプリケーションは、Webサイトにアクセスしたときにデフォルトで開始されるアプリケーションです。

古いROOTプレースホルダーを削除します。

rm -rf /var/lib/tomcat8/webapps/ROOT

そして、ワカモレサーバーがシンボリックリンクになるようにしますROOT

ln -s /var/lib/tomcat8/webapps/guacamole /var/lib/tomcat8/webapps/ROOT

これには、tomcatの再起動が必要です。

service tomcat8 restart

ステップ4(オプションA)-HTTPのみで実行する

  • Let's Encrypt証明書を使用せず、DNSを使用しない場合は、このステップのアクションを実行してから、直接ステップ6に進みます。-オプションA
  • より安全なサイトを作成し、DNSの準備ができている場合は、これをスキップして、オプションB(ステップ5)に直接進むことができます。

tomcat8/server.xmlファイルを編集し、コネクタポートを変更します。

nano /etc/tomcat8/server.xml

を検索しますConnector port

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           URIEncoding="UTF-8"
           redirectPort="8443" />

そして、交換してください808080

デフォルトでは、tomcatは以下のポートのバインドを許可しません1024。これを有効にするには、認証されたバインドを作成するようtomcat8に指示する必要があります。

defaulttomcat8 のファイルを編集し、AUTHBIND行のコメントを外してオプションを使用しますyes

nano /etc/default/tomcat8

AUTHBIND=yes

これが完了したら、インストールしauthbindます。

apt-get install authbind

80tomcat8がポートを要求できるように構成します。

touch /etc/authbind/byport/80
chmod 500 /etc/authbind/byport/80
chown tomcat8 /etc/authbind/byport/80

80ファイアウォール経由のポートを許可し、のルールを削除し8080ます。

ufw allow 80/tcp
ufw delete allow 8080/tcp

Tomcatを再起動します。

service tomcat8 restart

これで、Guacamoleはポートで実行されているはずです80

ステップ5(オプションB)-Nginxのセットアップ

Nginxのインストールと構成

Tomcatは、で使用するのに最適で最も堅牢なアプリケーションの1つではありませんcertbot。幸運にもNginxはそうです。TomcatをNginxにプロキシするだけです。少しRAMを犠牲にする代わりに、certbotの標準機能を使用します。

apt-get install nginx

インストールしたら、デフォルトの構成を編集します。

nano /etc/nginx/sites-available/default

サンプル構成をすべて削除し、次の構成を追加します。

server {      
  listen 0.0.0.0:80;

  proxy_request_buffering off;
  proxy_buffering off;

  location / {
     proxy_pass http://127.0.0.1:8080;
     proxy_redirect     off;
        proxy_set_header   Host $host;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Host $server_name;
  }
}

これにより、で実行されているWebサイトのプロキシが作成され8080ます。Nginxを再起動し、起動時に有効にします。

systemctl restart nginx
systemctl enable nginx

すべてが機能しているかどうかを確認します。

systemctl status nginx

テストポート8080を無効にし、ポートでのトラフィックを許可します80

ufw allow 80/tcp
ufw delete allow 8080/tcp

Let's Encryptのインストール

を使用する前に、certbotパッケージを含むシステムにcertbot正しいものppaを追加する必要があります。

add-apt-repository ppa:certbot/certbot

ENTER」を押して構成変更を受け入れます。

apt新しいパッケージを収集するために更新します。

apt-get update

最後に、証明書を割り当てるためのNginxモジュールをインストールします。

apt-get -y install python-certbot-nginx

証明書を使用するようにNginxを構成する

を許可するようにファイアウォールを設定しますHTTPS

ufw allow 443/tcp

新しい証明書をリクエストする前に、DNS名が必要です。

nano /etc/nginx/sites-available/default

以下のserver_name設定を追加します。

server_name rdp.example.com;

この新しい設定を反映するように構成を変更します。

server {
  server_name rdp.example.com;

  listen 0.0.0.0:80;

  proxy_request_buffering off;
  proxy_buffering off;

  location / {
     proxy_pass http://127.0.0.1:8080;
     proxy_redirect     off;
        proxy_set_header   Host $host;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Host $server_name;
  }
}

すべてが機能していることを確認し、Nginxを再起動します。

nginx -t
service nginx restart

次に、certbotで証明書を要求します。

certbot --nginx -d rdp.example.com

メールアドレスを入力し、インストーラーからの質問に同意してください。(Noメールを共有するために「」を安全に選択できます。)Certbotは、何をする必要があるかを自動的に尋ねますHTTPS。オプション2を使用しますredirect to HTTPS

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

最後に、DHパラメーターを更新します。デフォルトでは、これらは2017年の標準に対して少し弱いです。

新しいものをいくつか作成します。

openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

次に、それらをNginxのデフォルトサイトに追加します。

nano /etc/nginx/sites-available/default

それらをサーバー構成に追加します。

server {
  server_name rdp.example.com;

  listen 0.0.0.0:80;
  ssl_dhparam /etc/ssl/certs/dhparam.pem;

  proxy_request_buffering off;
  proxy_buffering off;

  location / {
     proxy_pass http://127.0.0.1:8080;
     proxy_redirect     off;
        proxy_set_header   Host $host;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Host $server_name;
  }
}

エラーをチェックします。

nginx -t

サーバーを再起動して変更を適用します。

service nginx restart

古い8080ルールをクリーンアップする

ufw delete allow 8080/tcp

注:「502 Bad Gateway」を受け取った場合は、tomcat8を再起動する必要があります

service tomcat8 restart

証明書の自動更新

更新が必要な証明書を暗号化しましょう。このためのcronジョブを作成できます。まず、を編集しcrontabます。

crontab -e

次の行を追加します。

00 2 * * * /usr/bin/certbot renew --quiet

これにより、証明書が更新を必要とするかどうかが午前2時にチェックされ、更新が必要な場合は更新されます。

ステップ6-すべてをテストする

Guacamoleサーバーに移動します(http://<ip>/またはhttps://rdp.example.com))。

このテストでは、さらに2つのインスタンスが必要です。1つはLinux VM、もう1つは両方でプライベートIPが有効になっているWindows Server 2012 R2です。

Windows RDP接続の追加

username右上の「」をクリックして、「」に移動しSettingsます。次に、「Connections」に移動して「」を選択しますNew Connection

以下の設定を入力します(他の設定はデフォルトのままにすることができます)。

Name: Windows Server 2012 R2
Location: ROOT
Protocol: RDP
Maximum number of connections: 1
Maximum number of connections per user: 1
Parameters > Hostname: 10.99.0.12
Parameters > Port: 3389
Username: Administrator
Password: <password> (provided by Vultr)
Security mode: Any
Ignore server certificate: <checked>

save」を押して、ホーム画面に戻ります。「Windows Server 2012 R2」接続をクリックすると、このマシンにRDPされます。

Linux SSH接続の追加

Ctrl+Shift+Alt」を押します。サイドのメニューが飛び出します。ここでは、ワカモレの接続を解除したり、他の管理タスクを実行したりできます。

usernameメニュー上部のをクリックし、「Settings」に移動します。次に、「Connections」タブに移動し、「」を選択しますNew Connection

以下の設定を入力します(他の設定はデフォルトのままにすることができます)。

Name: Linux
Location: ROOT
Protocol: SSH
Maximum number of connections: 5
Maximum number of connections per user: 2
Parameters > Hostname: 10.99.0.11
Parameters > Port: 22
Username: root
Password: <password> (provided by Vultr)

save」を押して、ホーム画面に戻ります。これで、この新しく作成された接続をクリックして、SSH経由でLinuxサーバーに接続できます。

結論

これで、Web RDP / SSH HTML5ゲートウェイができました。これで、プラットフォームのパブリックRDPおよびSSHアクセスをファイアウォールで保護し、最新のブラウザーから環境にアクセスできます。ワカモレが提供できるものの詳細については、ここにプラットフォームのすべての可能性を示す素晴らしいビデオがあります



Leave a Comment

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。