IBM CIS(Cloud Internet Services)でカスタムのエラーページを作成する


1. はじめに

IBM CIS(Cloud Internet Services)ではエラーページはデフォルトで準備されています。例えば以下はIP Blockをされた時のエラーページです。

でも、エラーページを個別に用意したいということもありますよね?最近、CISにエラーページをカスタムで作成する機能が実装されたので、この記事でご紹介いたします。なお、

  • この機能はStandard/Enterpriseの両方のプランで利用可能です。
  • ドキュメント(コマンド解説?)はこちらです。

2. ibmcloudコマンドラインの導入・更新

CISのPluginとしてv1.4.0で動作確認しています。
(本機能はv1.4.0から実装された機能です)

# ibmcloud update

# ibmcloud plugin install cis

# ibmcloud plugin list
インストール済みプラグインをリストしています...

プラグイン名                       バージョン   状況
cloud-internet-services            1.4.0

# ibmcloud cis |grep custom
     custom-page-update           Update a specific custom page.
     custom-page                  Retrieve a specific custom page.
     custom-pages                 Retrieve a list of currently existing custom pages.

# ibmcloud cis custom-page-update -help
名前:
   cloud-internet-services custom-page-update - Update a specific custom page.

使用法:
   ibmcloud cis custom-page-update PAGE_ID PAGE_URL [-d --domain DNS_DOMAIN_ID] [-i, --instance INSTANCE_NAME] [--output FORMAT]

引数:
   PAGE_ID The name of the Custom Page type. 有効な値: "basic_challenge", "country_challenge", "ip_block", "ratelimit_block", "serve_stale_content", "under_attack", "waf_block", "waf_challenge", "1000_errors", "500_errors".
   PAGE_URL A URL that is associated with the Custom Page. E.g. "http://www.example.com/example.html". Value "default" means to use the default page.

オプション:
   -d value, --domain value    DNS ドメイン ID。
   -i value, --instance value  インスタンス名。 設定しない場合、'ibmcloud cis instance-set INSTANCE' によって指定されるコンテキスト・インスタンスが使用されます。
   --output value              出力フォーマットを指定します。現時点では JSON のみがサポートされます。

3. エラーページの作成

エラー発生時に表示するエラーページを作成しておきます。今回は以下を利用することにします。
http://<My CIS Domain>/ipblock.html

4. カスタムエラーページの設定

カスタムエラーページを作成するためには、Instance名やドメインIDが必要です。以下のコマンドで確認してください。

# ibmcloud cis instances
サービス 'internet-svcs' のサービス・インスタンスを検索中...
OK
名前                        ID                                                                                                                     ロケーション   状態     サービス名
CIS-Enterprise-Usage1       crn:v1:bluemix:public:internet-svcs:global:a/039dbe6794084c7cb514a276dd2345da:cf4d8b04-b49e-4bf0-a99d-9303bba2cd90::   global         active   internet-svcs

# ibmcloud cis instance-set "CIS-Enterprise-Usage1"
コンテキスト・インスタンスを 'CIS-Enterprise-Usage1' に設定中...
OK
コンテキスト・サービス・インスタンスは正常に設定されました。

# ibmcloud cis domains
サービス・インスタンス 'CIS-Enterprise-Usage1' のドメインをリスト中...
OK
ID                                 名前                   状況         一時停止
a4135402d38fff24e32ef13c82c1ab4a   <My CIS Domain>       アクティブ   false

上記の情報を元に、カスタムエラーページを設定します。

# ibmcloud cis custom-page-update "ip_block" http://<My CIS Domain>/ipblock.html -d a4135402d38fff24e32ef13c82c1ab4a
Updating custom-page '{{.PageId}}' for domain '{{.Domain}}' ...
OK

ID                     ip_block
状態                   customized
説明                   IP or IP range block
URL                    http://<My CIS Domain>/ipblock.html
Preview Default Page   http://cloudflarepreview.com/preview-cpage?act=preview&target=block:ip-ban
Required Tokens        該当なし
作成日                 2019-04-18T01:39:33.766116Z
変更日                 2019-04-18T01:39:33.766116Z

以下のコマンドでも、状態defaultからcustomizedに変更され、URLとして指定したアドレスが定義されていることがわかります。

# ibmcloud cis custom-pages
(途中抜粋)
ID                     country_challenge
状態                   default
説明                   Country Challenge
URL                    該当なし
Preview Default Page   http://cloudflarepreview.com/preview-cpage?act=preview&target=block:country-captcha
Required Tokens        ::CAPTCHA_BOX::
作成日                 該当なし
変更日                 該当なし

ID                     ip_block
状態                   customized
説明                   IP or IP range block
URL                    http://<My CIS Domain>/ipblock.html
Preview Default Page   http://cloudflarepreview.com/preview-cpage?act=preview&target=block:ip-ban
Required Tokens        該当なし
作成日                 2019-04-18T01:39:33.766116Z
変更日                 2019-04-18T01:39:33.766116Z

(途中抜粋)

5. エラーページの確認

わざとIP Firewallで引っかかるようにしてアクセスしてみると・・・ちゃんと表示されました。

元に戻す方法

エラーページのURLの代わりに、defaultというキーワードを使えば元に戻せます。

# ibmcloud cis custom-page-update "ip_block" default -d a4135402d38fff24e32ef13c82c1ab4a
Updating custom-page '{{.PageId}}' for domain '{{.Domain}}' ...
OK

ID                     ip_block
状態                   default
説明                   IP or IP range block
URL                    該当なし
Preview Default Page   http://cloudflarepreview.com/preview-cpage?act=preview&target=block:ip-ban
Required Tokens        該当なし
作成日                 2019-04-18T01:39:33.766116Z
変更日                 2019-04-18T01:57:54.303901Z