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を使って更に更に更にセキュリティが強固になります。
どんな感じか(認証)
次はGoogle認証やAuthyを使った認証です。
また、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