4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Dockerで構築するApache Guacamole

Last updated at Posted at 2020-04-19

Apache Guacamoleとは

Apache Guacamole
https://guacamole.apache.org/

本家のサイトにも説明がありますが以下が主なポイントです。

  • 無料でオープンソースのソフトウェア
  • 対応しているのはVNC、RDP、SSHなどの標準プロトコル
  • 必要なのはWEBブラウザだけ

AWS上に構築して、AWSのEC2インスタンスにアクセスしたり便利です。
更にWEBブラウザベースなのでHTTPS通信にてWAFを通せばかなりセキュアです。

更に更にAWS WAFを使えば、XSSやSQLインジェクションに加えて
国内のみのアクセスを許可というのもできてアタックがぐっと減ります。

尚、1.0.0から二要素認証に対応しており、
Google認証やAuthyを使って更に更に更にセキュリティが強固になります。

どんな感じか(認証)

まずはアカウント+パスワードによる認証。
000003.png

次はGoogle認証やAuthyを使った認証です。

000004.png

また、WEBアクセスですからHTTPS経由にすればセキュアになりますし、
WAFも使えて更に強固になり、会社や自宅からアクセスすることも可能で
場所を選ばすに仕事ができます。

Nativeで構築

Chapter 2. Installing Guacamole natively
https://guacamole.apache.org/doc/gug/installing-guacamole.html

こちらのApache Guacamoleのマニュアルに従ってNativeで構築することが可能です。
ただ、少々面倒なので、Dockerでサクッと構築しちゃいましょう。

Dockerで構築

Chapter 3. Installing Guacamole with Docker
https://guacamole.apache.org/doc/gug/guacamole-docker.html

こちらのApache Guacamoleのマニュアルに従ってDockerで構築することもできますが
更に面倒なのでDocker-Composeで簡単に構築しちゃいます。

DockerとDocker-Composeはすでに入っている前提で以下にDocker-Composeの内容を書きます。


services:
  guacd:
    image: guacamole/guacd:1.0.0
    restart: always
    volumes:
      - /usr/share/fonts/vlgothic/VL-Gothic-Regular.ttf:/usr/share/fonts/vlgothic/VL-Gothic-Regular.ttf:ro
      - /var/log/guacamole/typescript:/var/log/guacamole/typescript
      - /var/log/guacamole/recording:/var/log/guacamole/recording
    networks:
      - guacamole_network

  guac:
    image: guacamole/guacamole:1.0.0
    restart: always
    ports:
      - "8080:8080"
    volumes:
      - /opt/docker/config/guacamole:/config
    environment:
      - "GUACD_HOSTNAME=guacd"
      - "GUACD_PORT=4822"
      - "MYSQL_HOSTNAME=MYSQLサーバ名"
      - "MYSQL_DATABASE=guacamole"
      - "MYSQL_USER=guacamole"
      - "MYSQL_PASSWORD=guacamole"
      - "LDAP_HOSTNAME=LDAPサーバ名"
      - "LDAP_PORT=389"
      - "LDAP_ENCRYPTION_METHOD=none"
      - "LDAP_USER_BASE_DN=ユーザーを検索するbaseのDN"
      - "LDAP_GROUP_BASE_DN=グループを検索するbaseのDN"
      - "LDAP_SEARCH_BIND_DN=LDAPサーバに接続する際のユーザーのDN"
      - "LDAP_SEARCH_BIND_PASSWORD=LDAPサーバに接続する際のユーザーのパスワード"
      - "LDAP_USERNAME_ATTRIBUTE=uid"
      - "GUACAMOLE_HOME=/config"
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "100"
    networks:
      - guacamole_network

networks:
  guacamole_network:
    driver: bridge

Apache Guacamoleは大きくわけて3つのサービスで成り立っています。

  • guacd ログインやユーザーからの入力を受け付けたり、実際のコンソール画面を表示します。
  • guac guacdからの入力を内部的にSSHやRDP、VNCプロトコルに変換して実際のアクセス先のサーバに渡します。
  • データベース ユーザー情報やホスト情報を保管する為のデータベースの管理をします。外部のサーバも利用できます。

このdocker-composeファイルをそのままdocker-compose.ymlで保存し、
dokcer-compose startで起動すれば、動くはずです。

尚、二要素認証を利用したい場合はdocker-compose.ymlと同じ階層に
config/guacamole/extensionsディレクトリを作成します。

作成したディレクトリに以下のサイトのguacamole-auth-totp-1.0.0.tar.gz
ダウンロード・解凍してできたjarを置きます。

Apache Guacamole 1.0.0
https://guacamole.apache.org/releases/1.0.0/

docker-compose restartで再起動すれば、アカウント+パスワードで
ログインした後にGoogle認証やAuthyの認証画面が表示されます。

以上でDocker-Composeによる構築は以上です。
良いGuacamole Lifeを!!

追伸

標準フォントの場合、日本語が豆腐になる可能性があります。
以下の通り、日本語に対応したフォントを入れてマウントしておきます。

- /usr/share/fonts/vlgothic/VL-Gothic-Regular.ttf:/usr/share/fonts/vlgothic/VL-Gothic-Regular.ttf:ro
4
6
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?